From: Mathieu Malaterre Date: Mon, 6 Nov 2023 08:21:23 +0000 (+0100) Subject: New upstream version 3.6.8~git20231027.1549d8c X-Git-Tag: archive/raspbian/3.6.9-4+rpi1^2~26^2~2 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=53c26ca1d802b9c97a2141b7447044da094fbfab;p=dcmtk.git New upstream version 3.6.8~git20231027.1549d8c --- diff --git a/CMake/3rdparty.cmake b/CMake/3rdparty.cmake index 47e34763..ac0d15a8 100644 --- a/CMake/3rdparty.cmake +++ b/CMake/3rdparty.cmake @@ -1,12 +1,16 @@ set(USE_FIND_PACKAGE_DOCS "Control whether libraries are searched via CMake's find_package() mechanism or a Windows specific fallback") +# Advanced user (eg. vcpkg) may want to override this: +if(NOT DEFINED DCMTK_USE_FIND_PACKAGE_WIN_DEFAULT) + set(DCMTK_USE_FIND_PACKAGE_WIN_DEFAULT FALSE) +endif() if(WIN32) - # For Windows, we don't used FIND_PACKAGE because DCMTK usually is used with its + # For Windows, we don't use FIND_PACKAGE because DCMTK usually is used with its # own set of 3rd-party support libraries that can be downloaded from DCMTK's # website (pre-built). if(MINGW) set(DCMTK_USE_FIND_PACKAGE TRUE CACHE BOOL "${USE_FIND_PACKAGE_DOCS}") else() - set(DCMTK_USE_FIND_PACKAGE FALSE CACHE BOOL "${USE_FIND_PACKAGE_DOCS}") + set(DCMTK_USE_FIND_PACKAGE ${DCMTK_USE_FIND_PACKAGE_WIN_DEFAULT} CACHE BOOL "${USE_FIND_PACKAGE_DOCS}") endif() else() # Only find_package is supported @@ -69,7 +73,7 @@ if(DCMTK_USE_FIND_PACKAGE) include(CheckCXXSourceCompiles) set(TEMP_INCLUDES "${CMAKE_REQUIRED_INCLUDES}") list(APPEND CMAKE_REQUIRED_INCLUDES "${OPENSSL_INCLUDE_DIR}") - CHECK_CXX_SOURCE_COMPILES("extern \"C\" {\n#include \n}\nint main(){\n#if OPENSSL_VERSION_NUMBER < 0x10001000L\n#error OpenSSL too old\n#endif\n}\n" OPENSSL_VERSION_CHECK) + CHECK_CXX_SOURCE_COMPILES("extern \"C\" {\n#include \n}\nint main(){\n#if OPENSSL_VERSION_NUMBER < 0x10002000L\n#error OpenSSL too old\n#endif\n}\n" OPENSSL_VERSION_CHECK) set(CMAKE_REQUIRED_INCLUDES "${TEMP_INCLUDES}") if(OPENSSL_VERSION_CHECK) message(STATUS "Info: DCMTK OPENSSL support will be enabled") @@ -81,7 +85,7 @@ if(DCMTK_USE_FIND_PACKAGE) set(OPENSSL_LIBS ${OPENSSL_LIBS} dl) endif() else() - message(STATUS "Info: DCMTK OPENSSL support will be disabled: DCMTK requires OpenSSL version 1.0.1 or newer") + message(STATUS "Info: DCMTK OPENSSL support will be disabled: DCMTK requires OpenSSL version 1.0.2 or newer") set(DCMTK_WITH_OPENSSL OFF CACHE BOOL "" FORCE) set(WITH_OPENSSL "") endif() @@ -243,7 +247,10 @@ else() if(WITH_LIBXMLINC) set(LIBXML_INCDIR "${WITH_LIBXMLINC}/include") set(LIBXML_LIBDIR "${WITH_LIBXMLINC}/lib") - set(LIBXML_LIBS debug "${LIBXML_LIBDIR}/libxml2_d.lib" optimized "${LIBXML_LIBDIR}/libxml2_o.lib" debug "${LIBXML_LIBDIR}/iconv_d.lib" optimized "${LIBXML_LIBDIR}/iconv_o.lib") + set(LIBXML_LIBS debug "${LIBXML_LIBDIR}/libxml2_d.lib" optimized "${LIBXML_LIBDIR}/libxml2_o.lib") + if (EXISTS "${LIBXML_LIBDIR}/iconv_o.lib") + set(LIBXML_LIBS ${LIBXML_LIBS} debug "${LIBXML_LIBDIR}/iconv_d.lib" optimized "${LIBXML_LIBDIR}/iconv_o.lib") + endif() message(STATUS "Info: DCMTK XML support will be enabled") set(WITH_LIBXML 1) # this hides some warnings that are emitted when linking against libxmlXXX.lib instead of linking the DLL directly diff --git a/CMake/FindICU.cmake b/CMake/FindICU.cmake index 68045c9a..324e47d9 100644 --- a/CMake/FindICU.cmake +++ b/CMake/FindICU.cmake @@ -278,29 +278,28 @@ if(${ICU_PUBLIC_VAR_NS}_FOUND) set(${ICU_PUBLIC_VAR_NS}_LIBRARIES ${${ICU_PUBLIC_VAR_NS}_LIBRARY}) set(${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS ${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR}) - if(NOT CMAKE_VERSION VERSION_LESS "3.0.0") - if(NOT TARGET ICU::ICU) - add_library(ICU::ICU INTERFACE IMPORTED) - endif() - set_target_properties(ICU::ICU PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR}") - foreach(${ICU_PRIVATE_VAR_NS}_COMPONENT ${${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS}) - string(TOUPPER "${${ICU_PRIVATE_VAR_NS}_COMPONENT}" ${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT) - add_library("ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" UNKNOWN IMPORTED) - if(${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY_RELEASE) - set_property(TARGET "ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) - set_target_properties("ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" PROPERTIES IMPORTED_LOCATION_RELEASE "${${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY_RELEASE}") - endif() - if(${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY_DEBUG) - set_property(TARGET "ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) - set_target_properties("ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" PROPERTIES IMPORTED_LOCATION_DEBUG "${${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY_DEBUG}") - endif() - if(${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY) - set_target_properties("ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" PROPERTIES IMPORTED_LOCATION "${${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY}") - endif() - set_property(TARGET ICU::ICU APPEND PROPERTY INTERFACE_LINK_LIBRARIES "ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}") -# set_target_properties("ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR}") - endforeach() + if(NOT TARGET ICU::ICU) + add_library(ICU::ICU INTERFACE IMPORTED) endif() + set_target_properties(ICU::ICU PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR}") + foreach(${ICU_PRIVATE_VAR_NS}_COMPONENT ${${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS}) + string(TOUPPER "${${ICU_PRIVATE_VAR_NS}_COMPONENT}" ${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT) + add_library("ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" UNKNOWN IMPORTED) + if(${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY_RELEASE) + set_property(TARGET "ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) + set_target_properties("ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" PROPERTIES IMPORTED_LOCATION_RELEASE "${${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY_RELEASE}") + endif() + if(${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY_DEBUG) + set_property(TARGET "ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) + set_target_properties("ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" PROPERTIES IMPORTED_LOCATION_DEBUG "${${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY_DEBUG}") + endif() + if(${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY) + set_target_properties("ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" PROPERTIES IMPORTED_LOCATION "${${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY}") + endif() + set_property(TARGET ICU::ICU APPEND PROPERTY INTERFACE_LINK_LIBRARIES "ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}") +# set_target_properties("ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR}") + endforeach() + endif() mark_as_advanced( diff --git a/CMake/GenerateDCMTKConfigure.cmake b/CMake/GenerateDCMTKConfigure.cmake index 0c4e9118..c432e0a4 100644 --- a/CMake/GenerateDCMTKConfigure.cmake +++ b/CMake/GenerateDCMTKConfigure.cmake @@ -814,8 +814,7 @@ if(NOT DEFINED C_CHAR_UNSIGNED) "// Fail compile for unsigned char. int main() { - unsigned char uc = 255; - char *unused_array[(*reinterpret_cast(&uc) < 0)?1:-1]; + char *unused_array[((char)-1<0)?1:-1]; return 0; }") if(C_CHAR_SIGNED_COMPILED) @@ -1479,7 +1478,7 @@ function(DCMTK_CHECK_CXX_STANDARD STANDARD) else() set(MESSAGE "Checking whether the compiler supports C++${STANDARD}") message(STATUS "${MESSAGE}") - try_compile(COMPILE_RESULT "${CMAKE_BINARY_DIR}" "${DCMTK_SOURCE_DIR}/config/tests/cxx${STANDARD}.cc") + try_compile(COMPILE_RESULT "${CMAKE_BINARY_DIR}" "${DCMTK_SOURCE_DIR}/config/tests/cxx${STANDARD}.cc" COMPILE_DEFINITIONS ${FORCE_MSVC_CPLUSPLUS_MACRO}) set(HAVE_CXX${STANDARD}_TEST_RESULT "${COMPILE_RESULT}" CACHE INTERNAL "Caches the configuration test result for C++${STANDARD} support.") if(COMPILE_RESULT) set(RESULT 1) @@ -1493,9 +1492,12 @@ endfunction() function(DCMTK_TEST_ENABLE_CXX11) get_property(MODERN_CXX_STANDARDS GLOBAL PROPERTY DCMTK_MODERN_CXX_STANDARDS) + # loop through all standard versions (11, 14, ...) and reset + # ENABLE_CXX_... for this standard to 0 for the moment foreach(STANDARD ${MODERN_CXX_STANDARDS}) set(ENABLE_CXX${STANDARD} 0) endforeach() + # DCMTK_CMAKE_HAS_CXX_STANDARD is true for CMake versions >= 3.1.3 get_property(DCMTK_CMAKE_HAS_CXX_STANDARD GLOBAL PROPERTY DCMTK_CMAKE_HAS_CXX_STANDARD) if(DCMTK_CMAKE_HAS_CXX_STANDARD) get_property(MODERN_CXX_STANDARD GLOBAL PROPERTY DCMTK_MODERN_CXX_STANDARD) @@ -1544,7 +1546,7 @@ function(DCMTK_TEST_ENABLE_STL_FEATURE NAME) endif() set(RESULT 0) set(TEXT_RESULT "disabled") - if(DCMTK_ENABLE_STL_${FEATURE} STREQUAL "ON") + if(DCMTK_ENABLE_STL_${FEATURE}) if(DEFINED HAVE_STL_${FEATURE}_TEST_RESULT) if(HAVE_STL_${FEATURE}_TEST_RESULT) set(RESULT 1) @@ -1572,6 +1574,20 @@ function(DCMTK_TEST_ENABLE_STL_FEATURE NAME) message(STATUS "Info: STL ${NAME} support ${TEXT_RESULT}") endfunction() + + +# Visual Studio >= 2017 supports C++11 and later, but does not set +# the __cplusplus macro with the supported C++ standard version. +# /Zc:__cplusplus will enforce setting this macro in Visual Studio. +# VS Versions < 2017 do not support this switch. +# See also https://learn.microsoft.com/de-de/cpp/build/reference/zc-cplusplus +set(FORCE_MSVC_CPLUSPLUS_MACRO "") +if(MSVC) + if(NOT (MSVC_VERSION LESS 1910)) # VS 2017 and above + set (FORCE_MSVC_CPLUSPLUS_MACRO "/Zc:__cplusplus") + endif() +endif() +# Check which modern C++ standards should be enabled DCMTK_TEST_ENABLE_CXX11() DCMTK_TEST_ENABLE_STL_FEATURE("vector") DCMTK_TEST_ENABLE_STL_FEATURE("algorithm" "algo") @@ -1584,6 +1600,19 @@ DCMTK_TEST_ENABLE_STL_FEATURE("string") DCMTK_TEST_ENABLE_STL_FEATURE("type_traits" "ttraits") DCMTK_TEST_ENABLE_STL_FEATURE("tuple") DCMTK_TEST_ENABLE_STL_FEATURE("system_error" "syserr") +# if at least one modern C++ standard should be supported, +# add FORCE_MSVC_CPLUSPLUS_MACRO for MSVC to enforce setting +# of __cplusplus macro +if(MSVC) + get_property(MODERN_CXX_STANDARDS GLOBAL PROPERTY DCMTK_MODERN_CXX_STANDARDS) + foreach(STANDARD ${MODERN_CXX_STANDARDS}) + if(HAVE_CXX${STANDARD}) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FORCE_MSVC_CPLUSPLUS_MACRO}") + break() + endif() + endforeach() +endif() + if(CMAKE_CROSSCOMPILING) set(DCMTK_CROSS_COMPILING ${CMAKE_CROSSCOMPILING}) diff --git a/CMake/dcmtk.pc.in b/CMake/dcmtk.pc.in index 13c79c0d..963e69db 100644 --- a/CMake/dcmtk.pc.in +++ b/CMake/dcmtk.pc.in @@ -1,14 +1,14 @@ - prefix="@CMAKE_INSTALL_PREFIX@" - exec_prefix="${prefix}" - libdir="${prefix}/@CMAKE_INSTALL_LIBDIR@" - includedir="${prefix}/include/" +prefix="@CMAKE_INSTALL_PREFIX@" +exec_prefix="${prefix}" +libdir="@CMAKE_INSTALL_FULL_LIBDIR@" +includedir="${prefix}/include/" - Name: DCMTK - Description: DICOM Toolkit (DCMTK) - URL: https://dcmtk.org - Version: @DCMTK_MAJOR_VERSION@.@DCMTK_MINOR_VERSION@.@DCMTK_BUILD_VERSION@ - Requires: @PKGCONF_REQ_PUB@ - Requires.private: @PKGCONF_REQ_PRIV@ - Cflags: -I"${includedir}" - Libs: -L"${libdir}" @PKGCONF_LIBS@ - Libs.private: -L"${libdir}" @PKGCONF_LIBS_PRIV@ +Name: DCMTK +Description: DICOM Toolkit (DCMTK) +URL: https://dcmtk.org +Version: @DCMTK_MAJOR_VERSION@.@DCMTK_MINOR_VERSION@.@DCMTK_BUILD_VERSION@ +Requires: @PKGCONF_REQ_PUB@ +Requires.private: @PKGCONF_REQ_PRIV@ +Cflags: -I"${includedir}" +Libs: -L"${libdir}" @PKGCONF_LIBS@ +Libs.private: -L"${libdir}" @PKGCONF_LIBS_PRIV@ diff --git a/CMake/dcmtkMacros.cmake b/CMake/dcmtkMacros.cmake index 6cbce0a9..7c3ef33e 100644 --- a/CMake/dcmtkMacros.cmake +++ b/CMake/dcmtkMacros.cmake @@ -30,12 +30,7 @@ function(DCMTK_ADD_TESTS MODULE) # This assumes that test names are globally unique add_test(NAME "${TEST}" COMMAND "${CMAKE_COMMAND}" "-DDCMTK_CTEST_TESTCASE_COMMAND=${TEST_COMMAND}" "-DDCMTK_CTEST_TEST_NAME=${TEST}" "-P" "${DCMTK_RUN_CTEST_SCRIPT}") set_property(TEST "${TEST}" PROPERTY LABELS "${MODULE}") - if(CMAKE_VERSION VERSION_LESS 3.0.0) - # CMake versions prior 3 seemingly don't understand $ within a test's REQUIRED_FILES property - set_property(TEST "${TEST}" PROPERTY REQUIRED_FILES "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${MODULE}_tests${CMAKE_EXECUTABLE_SUFFIX}") - else() - set_property(TEST "${TEST}" PROPERTY REQUIRED_FILES "${TEST_EXECUTABLE}") - endif() + set_property(TEST "${TEST}" PROPERTY REQUIRED_FILES "${TEST_EXECUTABLE}") endforeach() add_custom_target("${MODULE}-test-exhaustive" COMMAND "${CMAKE_COMMAND}" "-DCONFIG=${DCMTK_CONFIG_GENERATOR_EXPRESSION}" "-P" "${DCMTK_SOURCE_DIR}/CMake/CTest/dcmtkCTestRunExhaustive.cmake" @@ -148,38 +143,20 @@ endmacro() set(DCMTK_ALL_LIBRARIES CACHE INTERNAL "List of all libraries in the DCMTK.") set(DCMTK_LIBRARY_DEPENDENCIES CACHE INTERNAL "Dependencies of the DCMTK libraries.") -# Failsafe implementation of UNSET for old CMake versions -if(CMAKE_VERSION VERSION_LESS 2.6.3) - macro(DCMTK_UNSET VAR) - set(${VAR}) - endmacro() -else() - macro(DCMTK_UNSET VAR) - unset(${VAR}) - endmacro() -endif() - -# Failsafe implementation of unset(... CACHE) for old CMake versions -if(CMAKE_VERSION VERSION_LESS 2.6.3) - macro(DCMTK_UNSET_CACHE VAR) - set(${VAR} CACHE INTERNAL "") - endmacro() -else() - macro(DCMTK_UNSET_CACHE VAR) - unset(${VAR} CACHE) - endmacro() -endif() - -# Failsafe implementation of unset(... PARENT_SCOPE) for old CMake versions -if(CMAKE_VERSION VERSION_LESS 3.0) - macro(DCMTK_UNSET_PARENT_SCOPE VAR) - set(${VAR} PARENT_SCOPE) - endmacro() -else() - macro(DCMTK_UNSET_PARENT_SCOPE VAR) - unset(${VAR} PARENT_SCOPE) - endmacro() -endif() +# implementation of UNSET +macro(DCMTK_UNSET VAR) + unset(${VAR}) +endmacro() + +# implementation of unset(... CACHE) +macro(DCMTK_UNSET_CACHE VAR) + unset(${VAR} CACHE) +endmacro() + +# implementation of unset(... PARENT_SCOPE) +macro(DCMTK_UNSET_PARENT_SCOPE VAR) + unset(${VAR} PARENT_SCOPE) +endmacro() # A C++ STL style upper_bound function for CMake ';' lists function(DCMTK_UPPER_BOUND LIST COMP VAR) diff --git a/CMake/dcmtkPrepare.cmake b/CMake/dcmtkPrepare.cmake index 6fe6c711..66421a77 100644 --- a/CMake/dcmtkPrepare.cmake +++ b/CMake/dcmtkPrepare.cmake @@ -141,11 +141,11 @@ endif() # Gather information about the employed CMake version's behavior set(DCMTK_CMAKE_HAS_CXX_STANDARD FALSE) -if(NOT CMAKE_MAJOR_VERSION LESS 3) # CMake versions prior to 3 don't understand VERSION_LESS etc. - if(NOT CMAKE_VERSION VERSION_LESS "3.1.3") - set(DCMTK_CMAKE_HAS_CXX_STANDARD TRUE) - endif() + +if(NOT CMAKE_VERSION VERSION_LESS "3.1.3") + set(DCMTK_CMAKE_HAS_CXX_STANDARD TRUE) endif() + define_property(GLOBAL PROPERTY DCMTK_CMAKE_HAS_CXX_STANDARD BRIEF_DOCS "TRUE iff the CXX_STANDARD property exists." FULL_DOCS "TRUE for CMake versions since 3.1.3 that evaluate the CXX_STANDARD property and CMAKE_CXX_STANDARD variable." @@ -209,11 +209,17 @@ DCMTK_INFERABLE_OPTION(DCMTK_ENABLE_CXX11 "Enable use of native C++11 features ( # On Windows, the built-in dictionary is default, on Unix the external one. # It is not possible to use both, built-in plus external default dictionary. -if(WIN32 OR MINGW) - set(DCMTK_DEFAULT_DICT "builtin" CACHE STRING "Denotes whether DCMTK will use built-in (compiled-in), external (file), or no default dictionary on startup") -else() # built-in dictionary turned off on Unix per default - set(DCMTK_DEFAULT_DICT "external" CACHE STRING "Denotes whether DCMTK will use built-in (compiled-in), external (file), or no default dictionary on startup") +if(NOT DEFINED DCMTK_DEFAULT_DICT) + if(WIN32 OR MINGW) + set(DCMTK_DEFAULT_DICT_DEFAULT "builtin") + else() # built-in dictionary turned off on Unix per default + set(DCMTK_DEFAULT_DICT_DEFAULT "external") + endif() +else() + # prefer user specified one: + set(DCMTK_DEFAULT_DICT_DEFAULT "${DCMTK_DEFAULT_DICT}") endif() +set(DCMTK_DEFAULT_DICT "${DCMTK_DEFAULT_DICT_DEFAULT}" CACHE STRING "Denotes whether DCMTK will use built-in (compiled-in), external (file), or no default dictionary on startup") set_property(CACHE DCMTK_DEFAULT_DICT PROPERTY STRINGS builtin external none) if (DCMTK_DEFAULT_DICT EQUAL "none") message(WARNING "Denotes whether DCMTK will use built-in (compiled-in), external (file), or no default dictionary on startup") @@ -370,7 +376,7 @@ else() set(DCMTK_COMPILE_WIN32_MULTITHREADED_DLL OFF) endif() -if(WIN32 AND CMAKE_GENERATOR MATCHES "Visual Studio .*") +if(WIN32 AND CMAKE_GENERATOR MATCHES "Visual Studio .*|NMake .*") if (POLICY CMP0091) # CMake 3.15 and newer use CMAKE_MSVC_RUNTIME_LIBRARY to select # the MSVC runtime library @@ -588,20 +594,6 @@ set_property(GLOBAL PROPERTY DCMTK_MODERN_CXX_STANDARDS 11 14 17) # Enable various warnings by default #----------------------------------------------------------------------------- -# fallback implementation of add_compile_options() -if(CMAKE_MAJOR_VERSION LESS 3 AND NOT CMAKE_VERSION VERSION_EQUAL 2.8.12) - function(add_compile_options) - foreach(OPTION ${ARGN}) - foreach(FLAG C CXX) - string(FIND "${CMAKE_${FLAG}_FLAGS}" "${OPTION}" IDX) - if(IDX EQUAL -1) - set("CMAKE_${FLAG}_FLAGS" "${CMAKE_${FLAG}_FLAGS} ${OPTION}" PARENT_SCOPE) - endif() - endforeach() - endforeach() - endfunction() -endif() - if(MSVC) # This code removes existing warning flags to prevent MSVC warning D9025. # Remove it once our minimum CMake version is >= 3.15, since those newer @@ -697,11 +689,14 @@ if(DCMTK_WITH_OPENSSL) CHECK_INCLUDE_FILE_CXX("openssl/provider.h" HAVE_OPENSSL_PROVIDER_H) # test presence of functions, constants and macros needed for the dcmtls module - CHECK_FUNCTIONWITHHEADER_EXISTS("SSL_CTX_get0_param" "openssl/ssl.h" HAVE_OPENSSL_PROTOTYPE_SSL_CTX_GET0_PARAM) - CHECK_FUNCTIONWITHHEADER_EXISTS("RAND_egd" "openssl/rand.h" HAVE_OPENSSL_PROTOTYPE_RAND_EGD) CHECK_FUNCTIONWITHHEADER_EXISTS("DH_bits" "openssl/dh.h" HAVE_OPENSSL_PROTOTYPE_DH_BITS) CHECK_FUNCTIONWITHHEADER_EXISTS("EVP_PKEY_RSA_PSS" "openssl/evp.h" HAVE_OPENSSL_PROTOTYPE_EVP_PKEY_RSA_PSS) CHECK_FUNCTIONWITHHEADER_EXISTS("EVP_PKEY_base_id" "openssl/evp.h" HAVE_OPENSSL_PROTOTYPE_EVP_PKEY_BASE_ID) + CHECK_FUNCTIONWITHHEADER_EXISTS("NID_dsa_with_SHA512" "openssl/obj_mac.h" HAVE_OPENSSL_PROTOTYPE_NID_DSA_WITH_SHA512) + CHECK_FUNCTIONWITHHEADER_EXISTS("NID_ecdsa_with_SHA3_256" "openssl/obj_mac.h" HAVE_OPENSSL_PROTOTYPE_NID_ECDSA_WITH_SHA3_256) + CHECK_FUNCTIONWITHHEADER_EXISTS("NID_sha512_256WithRSAEncryption" "openssl/obj_mac.h" HAVE_OPENSSL_PROTOTYPE_NID_SHA512_256WITHRSAENCRYPTION) + CHECK_FUNCTIONWITHHEADER_EXISTS("RAND_egd" "openssl/rand.h" HAVE_OPENSSL_PROTOTYPE_RAND_EGD) + CHECK_FUNCTIONWITHHEADER_EXISTS("SSL_CTX_get0_param" "openssl/ssl.h" HAVE_OPENSSL_PROTOTYPE_SSL_CTX_GET0_PARAM) CHECK_FUNCTIONWITHHEADER_EXISTS("SSL_CTX_get_cert_store" "openssl/ssl.h" HAVE_OPENSSL_PROTOTYPE_SSL_CTX_GET_CERT_STORE) CHECK_FUNCTIONWITHHEADER_EXISTS("SSL_CTX_get_ciphers" "openssl/ssl.h" HAVE_OPENSSL_PROTOTYPE_SSL_CTX_GET_CIPHERS) CHECK_FUNCTIONWITHHEADER_EXISTS("SSL_CTX_set0_tmp_dh_pkey" "openssl/ssl.h" HAVE_OPENSSL_PROTOTYPE_SSL_CTX_SET0_TMP_DH_PKEY) @@ -713,8 +708,14 @@ if(DCMTK_WITH_OPENSSL) CHECK_FUNCTIONWITHHEADER_EXISTS("SSL_ERROR_WANT_ASYNC" "openssl/ssl.h" HAVE_OPENSSL_PROTOTYPE_SSL_ERROR_WANT_ASYNC) CHECK_FUNCTIONWITHHEADER_EXISTS("SSL_ERROR_WANT_ASYNC_JOB" "openssl/ssl.h" HAVE_OPENSSL_PROTOTYPE_SSL_ERROR_WANT_ASYNC_JOB) CHECK_FUNCTIONWITHHEADER_EXISTS("SSL_ERROR_WANT_CLIENT_HELLO_CB" "openssl/ssl.h" HAVE_OPENSSL_PROTOTYPE_SSL_ERROR_WANT_CLIENT_HELLO_CB) + CHECK_FUNCTIONWITHHEADER_EXISTS("TLS1_3_RFC_AES_128_CCM_8_SHA256" "openssl/ssl.h" HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_128_CCM_8_SHA256) + CHECK_FUNCTIONWITHHEADER_EXISTS("TLS1_3_RFC_AES_256_GCM_SHA384" "openssl/ssl.h" HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384) + CHECK_FUNCTIONWITHHEADER_EXISTS("TLS1_3_RFC_CHACHA20_POLY1305_SHA256" "openssl/ssl.h" HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_CHACHA20_POLY1305_SHA256) + CHECK_FUNCTIONWITHHEADER_EXISTS("TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8" "openssl/ssl.h" HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8) + CHECK_FUNCTIONWITHHEADER_EXISTS("TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384" "openssl/ssl.h" HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384) CHECK_FUNCTIONWITHHEADER_EXISTS("TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305" "openssl/ssl.h" HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305) CHECK_FUNCTIONWITHHEADER_EXISTS("TLS_method" "openssl/ssl.h" HAVE_OPENSSL_PROTOTYPE_TLS_METHOD) + CHECK_FUNCTIONWITHHEADER_EXISTS("X509_STORE_CTX_get0_cert" "openssl/x509_vfy.h" HAVE_OPENSSL_PROTOTYPE_X509_STORE_CTX_GET0_CERT) CHECK_FUNCTIONWITHHEADER_EXISTS("X509_STORE_get0_param" "openssl/x509.h" HAVE_OPENSSL_PROTOTYPE_X509_STORE_GET0_PARAM) CHECK_FUNCTIONWITHHEADER_EXISTS("X509_get_signature_nid" "openssl/x509.h" HAVE_OPENSSL_PROTOTYPE_X509_GET_SIGNATURE_NID) @@ -775,11 +776,6 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL SunPro) endif() #----------------------------------------------------------------------------- -# workaround for using the deprecated generator expression $ -# with old CMake versions that do not understand $ +# generator expression $ #----------------------------------------------------------------------------- -if(CMAKE_VERSION VERSION_LESS 3.0.0) - set(DCMTK_CONFIG_GENERATOR_EXPRESSION "$" CACHE INTERNAL "the generator expression to use for retrieving the current config") -else() - set(DCMTK_CONFIG_GENERATOR_EXPRESSION "$" CACHE INTERNAL "the generator expression to use for retrieving the current config") -endif() +set(DCMTK_CONFIG_GENERATOR_EXPRESSION "$" CACHE INTERNAL "the generator expression to use for retrieving the current config") diff --git a/CMake/dcmtkTryRun.cmake b/CMake/dcmtkTryRun.cmake index 86f7bd8b..9c68ff07 100644 --- a/CMake/dcmtkTryRun.cmake +++ b/CMake/dcmtkTryRun.cmake @@ -5,19 +5,6 @@ # Usage and syntax is equivalent to CMake's try_run(). # -# CMakeParseArguments was introduced in CMake 2.8.3. -# DCMTK_TRY_RUN will revert to CMake's internal try_run() -# for versions prior to 2.8.3, as arguments can't be parsed -# in that case. This means cross compiling support will be -# disabled for CMake versions prior to 2.8.3. -if(CMAKE_VERSION VERSION_LESS 2.8.3) - -macro(DCMTK_TRY_RUN) - try_run(${ARGN}) -endmacro() - -else() - include(CMakeParseArguments) function(DCMTK_TRY_RUN_CROSS RUN_RESULT_VAR COMPILE_RESULT_VAR bindir srcfile) @@ -91,5 +78,3 @@ macro(DCMTK_TRY_RUN) try_run(${ARGN}) endif() endmacro() - -endif() diff --git a/CMake/dcmtkUseAndroidSDK.cmake b/CMake/dcmtkUseAndroidSDK.cmake index dec15b94..17232d68 100644 --- a/CMake/dcmtkUseAndroidSDK.cmake +++ b/CMake/dcmtkUseAndroidSDK.cmake @@ -98,11 +98,7 @@ endmacro() function(DCMTK_ANDROID_FIND_RUNTIME_LIBRARIES VAR) set(CMAKE_FIND_LIBRARY_SUFFIXES ".so") foreach(DIR ${ANDROID_STL_INCLUDE_DIRS}) - if(CMAKE_VERSION VERSION_LESS 2.8.11) - get_filename_component(DIR "${DIR}" PATH) - else() - get_filename_component(DIR "${DIR}" DIRECTORY) - endif() + get_filename_component(DIR "${DIR}" DIRECTORY) list(APPEND ANDROID_STL_LIBRARY_DIRS "${DIR}") endforeach() find_library(ANDROID_STL_SHARED_OBJECT ${ANDROID_STL} PATHS ${ANDROID_STL_LIBRARY_DIRS} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH) @@ -200,11 +196,6 @@ endfunction() # the generated UUID as a string value # Will ignore all additional arguments. # -if(CMAKE_VERSION VERSION_LESS 2.8.11) -macro(DCMTK_ANDROID_EMULATOR_GENERATE_UUID VAR) - string(RANDOM LENGTH 20 ALPHABET "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" ${VAR}) -endmacro() -else() function(DCMTK_ANDROID_EMULATOR_GENERATE_UUID VAR) string(RANDOM LENGTH 20 RAND) string(TIMESTAMP TM) @@ -212,7 +203,6 @@ function(DCMTK_ANDROID_EMULATOR_GENERATE_UUID VAR) string(MD5 ${VAR} ${${VAR}}) set(${VAR} ${${VAR}} PARENT_SCOPE) endfunction() -endif() # # Tries to query the UUID property of an accessible Android device. @@ -573,11 +563,7 @@ function(DCMTK_ANDROID_SHELL VAR) endif() # Prefix to prevent collision of output capturing files - if(CMAKE_VERSION VERSION_LESS 2.8.7) - string(RANDOM LENGTH 20 ALPHABET "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" PREFIX) - else() - string(MD5 PREFIX "${DCMTK_ANDROID_SHELL_COMMAND}") - endif() + string(MD5 PREFIX "${DCMTK_ANDROID_SHELL_COMMAND}") # Prepare output redirection (buffering) if(STREAMS_MERGED) diff --git a/CMake/dcmtkUseWine.cmake b/CMake/dcmtkUseWine.cmake index 5011033c..6dbd7dc5 100644 --- a/CMake/dcmtkUseWine.cmake +++ b/CMake/dcmtkUseWine.cmake @@ -65,11 +65,7 @@ endfunction() # function(WINE_DETACHED VAR OUTPUT_VAR ERROR_VAR) # Prefix to prevent collision of output capturing files - if(CMAKE_VERSION VERSION_LESS 2.8.7) - string(RANDOM LENGTH 20 ALPHABET "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" PREFIX) - else() - string(MD5 PREFIX "${ARGN}") - endif() + string(MD5 PREFIX "${ARGN}") set(OUTPUT_FILE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${PREFIX}_output") if(OUTPUT_VAR STREQUAL ERROR_VAR) set(ERROR_FILE "${OUTPUT_FILE}") diff --git a/CMake/osconfig.h.in b/CMake/osconfig.h.in index 9df00867..e964f798 100644 --- a/CMake/osconfig.h.in +++ b/CMake/osconfig.h.in @@ -1280,9 +1280,18 @@ DCMTK was configured to use C++17 features, but your compiler does not or was no /* Define if we have OpenSSL with the SSL_ERROR_WANT_CLIENT_HELLO_CB error code */ #cmakedefine HAVE_OPENSSL_PROTOTYPE_SSL_ERROR_WANT_CLIENT_HELLO_CB @HAVE_OPENSSL_PROTOTYPE_SSL_ERROR_WANT_CLIENT_HELLO_CB@ -/* Define if we have OpenSSL with the EVP_PKEY_base_id error code */ +/* Define if we have OpenSSL with the EVP_PKEY_base_id function */ #cmakedefine HAVE_OPENSSL_PROTOTYPE_EVP_PKEY_BASE_ID @HAVE_OPENSSL_PROTOTYPE_EVP_PKEY_BASE_ID@ +/* Define if we have OpenSSL with the HAVE_OPENSSL_PROTOTYPE_NID_DSA_WITH_SHA512 macro */ +#cmakedefine HAVE_OPENSSL_PROTOTYPE_NID_DSA_WITH_SHA512 @HAVE_OPENSSL_PROTOTYPE_NID_DSA_WITH_SHA512@ + +/* Define if we have OpenSSL with the HAVE_OPENSSL_PROTOTYPE_NID_ECDSA_WITH_SHA3_256 macro */ +#cmakedefine HAVE_OPENSSL_PROTOTYPE_NID_ECDSA_WITH_SHA3_256 @HAVE_OPENSSL_PROTOTYPE_NID_ECDSA_WITH_SHA3_256@ + +/* Define if we have OpenSSL with the HAVE_OPENSSL_PROTOTYPE_NID_SHA512_256WITHRSAENCRYPTION macro */ +#cmakedefine HAVE_OPENSSL_PROTOTYPE_NID_SHA512_256WITHRSAENCRYPTION @HAVE_OPENSSL_PROTOTYPE_NID_SHA512_256WITHRSAENCRYPTION@ + /* Define if we have OpenSSL with the EVP_PKEY_RSA_PSS macro */ #cmakedefine HAVE_OPENSSL_PROTOTYPE_EVP_PKEY_RSA_PSS @HAVE_OPENSSL_PROTOTYPE_EVP_PKEY_RSA_PSS@ @@ -1310,6 +1319,21 @@ DCMTK was configured to use C++17 features, but your compiler does not or was no /* Define if we have OpenSSL with the SSL_CTX_set_security_level() function */ #cmakedefine HAVE_OPENSSL_PROTOTYPE_SSL_CTX_SET_SECURITY_LEVEL @HAVE_OPENSSL_PROTOTYPE_SSL_CTX_SET_SECURITY_LEVEL@ +/* Define if we have OpenSSL with the TLS1_3_RFC_AES_128_CCM_8_SHA256 macro */ +#cmakedefine HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_128_CCM_8_SHA256 @HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_128_CCM_8_SHA256@ + +/* Define if we have OpenSSL with the TLS1_3_RFC_AES_256_GCM_SHA384 macro */ +#cmakedefine HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384 @HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384@ + +/* Define if we have OpenSSL with the TLS1_3_RFC_CHACHA20_POLY1305_SHA256 macro */ +#cmakedefine HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_CHACHA20_POLY1305_SHA256 @HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_CHACHA20_POLY1305_SHA256@ + +/* Define if we have OpenSSL with the TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8 macro */ +#cmakedefine HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8 @HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8@ + +/* Define if we have OpenSSL with the TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 macro */ +#cmakedefine HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 @HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384@ + /* Define if we have OpenSSL with the TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305 macro */ #cmakedefine HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305 @HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305@ @@ -1319,6 +1343,9 @@ DCMTK was configured to use C++17 features, but your compiler does not or was no /* Define if we have OpenSSL with the X509_get_signature_nid() function */ #cmakedefine HAVE_OPENSSL_PROTOTYPE_X509_GET_SIGNATURE_NID @HAVE_OPENSSL_PROTOTYPE_X509_GET_SIGNATURE_NID@ +/* Define if we have OpenSSL with the X509_STORE_CTX_get0_cert() function */ +#cmakedefine HAVE_OPENSSL_PROTOTYPE_X509_STORE_CTX_GET0_CERT @HAVE_OPENSSL_PROTOTYPE_X509_STORE_CTX_GET0_CERT@ + /* Define if we have OpenSSL with the X509_STORE_get0_param() function */ #cmakedefine HAVE_OPENSSL_PROTOTYPE_X509_STORE_GET0_PARAM @HAVE_OPENSSL_PROTOTYPE_X509_STORE_GET0_PARAM@ diff --git a/CMakeLists.txt b/CMakeLists.txt index 3c9214ed..bef673fc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ # Minimum CMake version required -cmake_minimum_required(VERSION 3.0.0...3.23.1 FATAL_ERROR) +cmake_minimum_required(VERSION 3.0.0...3.27.3 FATAL_ERROR) # Declare project project(DCMTK) @@ -210,5 +210,5 @@ configure_file( ) install(FILES "${DCMTK_BINARY_DIR}/dcmtk.pc" - DESTINATION ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/pkgconfig + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig ) diff --git a/COPYRIGHT b/COPYRIGHT index 7602f175..42f22b6c 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -5,7 +5,7 @@ Unless otherwise specified, the DCMTK software package has the following copyright: /* - * Copyright (C) 1994-2022, OFFIS e.V. + * Copyright (C) 1994-2023, OFFIS e.V. * All rights reserved. * * This software and supporting documentation were developed by @@ -500,27 +500,28 @@ copyright: --------------------------------------------------------------------------- -The dcmrt sub-package is covered by the following copyright: +The dcmrt sub-package is covered by the following copyright +(BSD 3-Clause License): --------------------------------------------------------------------------- -Copyright (C) 2008-2022, OFFIS e.V. and ICSMED AG, Oldenburg, Germany -Copyright (C) 2013-2022, J. Riesmeier, Oldenburg, Germany +Copyright (C) 2008-2023, OFFIS e.V. and ICSMED AG, Oldenburg, Germany. +Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. +1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. -* Neither the name of the copyright holders nor the names of its - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. +3. Neither the name of the copyright holders nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE @@ -536,26 +537,27 @@ POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------- -Parts of the dcmsr sub-package are covered by the following copyright: +Parts of the dcmsr sub-package are covered by the following copyright +(BSD 3-Clause License): --------------------------------------------------------------------------- -Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany +Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. +1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. -* Neither the name of the copyright holders nor the names of its - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. +3. Neither the name of the copyright holders nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE @@ -592,7 +594,7 @@ list of conditions and the following disclaimer. this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR diff --git a/INSTALL b/INSTALL index 8edb2f7c..97087f9a 100644 --- a/INSTALL +++ b/INSTALL @@ -190,12 +190,12 @@ using the Transport Layer Security (TLS) protocol as defined in DICOM part 15. DCMTK relies on the OpenSSL toolkit (www.openssl.org) for the underlying cryptographic routines and the TLS protocol implementation. -This release of DCMTK requires OpenSSL release 1.0.1 or newer. We recommend -the use of OpenSSL 1.0.2 or newer, however, since some optional functions -recommended by RFC 7525 / BCP 195 are only available starting with this +This release of DCMTK requires OpenSSL release 1.0.2 or newer. We recommend +the use of OpenSSL 1.1.1 or newer, however, since some optional functions +recommended by RFC 9325 / BCP 195 are only available starting with this OpenSSL release. Furthermore, users should make care that the most recent OpenSSL patch level is applied. This release of DCMTK is known to compile with -the OpenSSL releases 1.0.1 to 3.0.0. +the OpenSSL releases 1.0.2 to 3.0.0. When using CMake, if support for security enhancements is desired, a compiled version of the OpenSSL libraries and include files must be available during diff --git a/config/configure b/config/configure index f2e0c11b..004b098b 100755 --- a/config/configure +++ b/config/configure @@ -696,7 +696,6 @@ infodir docdir oldincludedir includedir -runstatedir localstatedir sharedstatedir sysconfdir @@ -812,7 +811,6 @@ datadir='${datarootdir}/dcmtk-3.6.7-DEV' sysconfdir='${prefix}/etc/dcmtk-3.6.7-DEV' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' -runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/dcmtk-3.6.7-DEV' @@ -1065,15 +1063,6 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; - -runstatedir | --runstatedir | --runstatedi | --runstated \ - | --runstate | --runstat | --runsta | --runst | --runs \ - | --run | --ru | --r) - ac_prev=runstatedir ;; - -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ - | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ - | --run=* | --ru=* | --r=*) - runstatedir=$ac_optarg ;; - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1211,7 +1200,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir runstatedir + libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1364,7 +1353,6 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc/dcmtk-3.6.7-DEV] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -12990,7 +12978,7 @@ if ${ac_cv_check_std_namespace+:} false; then : else ac_link_o='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.o $LIBS 1>&5' cat > conftest.$ac_ext < @@ -13241,7 +13229,7 @@ if ${ac_cv_check_std_namespace+:} false; then : else ac_link_o='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.o $LIBS 1>&5' cat > conftest.$ac_ext < @@ -13491,7 +13479,7 @@ if ${ac_cv_check_class_template+:} false; then : else ac_link_o='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.o $LIBS 1>&5' cat > conftest.$ac_ext < @@ -13560,7 +13548,7 @@ if ${ac_cv_check_static_template_method+:} false; then : else ac_link_o='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.o $LIBS 1>&5' cat > conftest.$ac_ext < conftest.$ac_ext < @@ -14365,6 +14353,132 @@ else $as_echo "no" >&6; } fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL provides a prototype for NID_dsa_with_SHA512 (in openssl/obj_mac.h)" >&5 +$as_echo_n "checking whether OpenSSL provides a prototype for NID_dsa_with_SHA512 (in openssl/obj_mac.h)... " >&6; } + +ac_includes="" +for ac_header in openssl/obj_mac.h +do + ac_includes="$ac_includes +#include<$ac_header>" +done +tmp_save_1=`echo NID_dsa_with_SHA512 | tr ' :' '__'` +if eval \${ac_cv_compiles_$tmp_save_1+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes +int +main () +{ +NID_dsa_with_SHA512 + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + eval "ac_cv_compiles_$tmp_save_1=yes" +else + eval "ac_cv_compiles_$tmp_save_1=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +if eval "test \"`echo '$''{'ac_cv_compiles_$tmp_save_1'}'`\" = yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + $as_echo "#define HAVE_OPENSSL_PROTOTYPE_NID_DSA_WITH_SHA512 1" >>confdefs.h + + : +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL provides a prototype for NID_ecdsa_with_SHA3_256 (in openssl/obj_mac.h)" >&5 +$as_echo_n "checking whether OpenSSL provides a prototype for NID_ecdsa_with_SHA3_256 (in openssl/obj_mac.h)... " >&6; } + +ac_includes="" +for ac_header in openssl/obj_mac.h +do + ac_includes="$ac_includes +#include<$ac_header>" +done +tmp_save_1=`echo NID_ecdsa_with_SHA3_256 | tr ' :' '__'` +if eval \${ac_cv_compiles_$tmp_save_1+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes +int +main () +{ +NID_ecdsa_with_SHA3_256 + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + eval "ac_cv_compiles_$tmp_save_1=yes" +else + eval "ac_cv_compiles_$tmp_save_1=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +if eval "test \"`echo '$''{'ac_cv_compiles_$tmp_save_1'}'`\" = yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + $as_echo "#define HAVE_OPENSSL_PROTOTYPE_NID_ECDSA_WITH_SHA3_256 1" >>confdefs.h + + : +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL provides a prototype for NID_sha512_256WithRSAEncryption (in openssl/obj_mac.h)" >&5 +$as_echo_n "checking whether OpenSSL provides a prototype for NID_sha512_256WithRSAEncryption (in openssl/obj_mac.h)... " >&6; } + +ac_includes="" +for ac_header in openssl/obj_mac.h +do + ac_includes="$ac_includes +#include<$ac_header>" +done +tmp_save_1=`echo NID_sha512_256WithRSAEncryption | tr ' :' '__'` +if eval \${ac_cv_compiles_$tmp_save_1+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes +int +main () +{ +NID_sha512_256WithRSAEncryption + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + eval "ac_cv_compiles_$tmp_save_1=yes" +else + eval "ac_cv_compiles_$tmp_save_1=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +if eval "test \"`echo '$''{'ac_cv_compiles_$tmp_save_1'}'`\" = yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + $as_echo "#define HAVE_OPENSSL_PROTOTYPE_NID_SHA512_256WITHRSAENCRYPTION 1" >>confdefs.h + + : +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL provides a prototype for RAND_egd (in openssl/rand.h)" >&5 $as_echo_n "checking whether OpenSSL provides a prototype for RAND_egd (in openssl/rand.h)... " >&6; } @@ -15030,6 +15144,216 @@ else $as_echo "no" >&6; } fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL provides a prototype for TLS1_3_RFC_AES_128_CCM_8_SHA256 (in openssl/ssl.h)" >&5 +$as_echo_n "checking whether OpenSSL provides a prototype for TLS1_3_RFC_AES_128_CCM_8_SHA256 (in openssl/ssl.h)... " >&6; } + +ac_includes="" +for ac_header in openssl/ssl.h +do + ac_includes="$ac_includes +#include<$ac_header>" +done +tmp_save_1=`echo TLS1_3_RFC_AES_128_CCM_8_SHA256 | tr ' :' '__'` +if eval \${ac_cv_compiles_$tmp_save_1+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes +int +main () +{ +TLS1_3_RFC_AES_128_CCM_8_SHA256 + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + eval "ac_cv_compiles_$tmp_save_1=yes" +else + eval "ac_cv_compiles_$tmp_save_1=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +if eval "test \"`echo '$''{'ac_cv_compiles_$tmp_save_1'}'`\" = yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + $as_echo "#define HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_128_CCM_8_SHA256 1" >>confdefs.h + + : +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL provides a prototype for TLS1_3_RFC_AES_256_GCM_SHA384 (in openssl/ssl.h)" >&5 +$as_echo_n "checking whether OpenSSL provides a prototype for TLS1_3_RFC_AES_256_GCM_SHA384 (in openssl/ssl.h)... " >&6; } + +ac_includes="" +for ac_header in openssl/ssl.h +do + ac_includes="$ac_includes +#include<$ac_header>" +done +tmp_save_1=`echo TLS1_3_RFC_AES_256_GCM_SHA384 | tr ' :' '__'` +if eval \${ac_cv_compiles_$tmp_save_1+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes +int +main () +{ +TLS1_3_RFC_AES_256_GCM_SHA384 + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + eval "ac_cv_compiles_$tmp_save_1=yes" +else + eval "ac_cv_compiles_$tmp_save_1=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +if eval "test \"`echo '$''{'ac_cv_compiles_$tmp_save_1'}'`\" = yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + $as_echo "#define HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384 1" >>confdefs.h + + : +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL provides a prototype for TLS1_3_RFC_CHACHA20_POLY1305_SHA256 (in openssl/ssl.h)" >&5 +$as_echo_n "checking whether OpenSSL provides a prototype for TLS1_3_RFC_CHACHA20_POLY1305_SHA256 (in openssl/ssl.h)... " >&6; } + +ac_includes="" +for ac_header in openssl/ssl.h +do + ac_includes="$ac_includes +#include<$ac_header>" +done +tmp_save_1=`echo TLS1_3_RFC_CHACHA20_POLY1305_SHA256 | tr ' :' '__'` +if eval \${ac_cv_compiles_$tmp_save_1+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes +int +main () +{ +TLS1_3_RFC_CHACHA20_POLY1305_SHA256 + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + eval "ac_cv_compiles_$tmp_save_1=yes" +else + eval "ac_cv_compiles_$tmp_save_1=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +if eval "test \"`echo '$''{'ac_cv_compiles_$tmp_save_1'}'`\" = yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + $as_echo "#define HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_CHACHA20_POLY1305_SHA256 1" >>confdefs.h + + : +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL provides a prototype for TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8 (in openssl/ssl.h)" >&5 +$as_echo_n "checking whether OpenSSL provides a prototype for TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8 (in openssl/ssl.h)... " >&6; } + +ac_includes="" +for ac_header in openssl/ssl.h +do + ac_includes="$ac_includes +#include<$ac_header>" +done +tmp_save_1=`echo TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8 | tr ' :' '__'` +if eval \${ac_cv_compiles_$tmp_save_1+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes +int +main () +{ +TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8 + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + eval "ac_cv_compiles_$tmp_save_1=yes" +else + eval "ac_cv_compiles_$tmp_save_1=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +if eval "test \"`echo '$''{'ac_cv_compiles_$tmp_save_1'}'`\" = yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + $as_echo "#define HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8 1" >>confdefs.h + + : +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL provides a prototype for TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 (in openssl/ssl.h)" >&5 +$as_echo_n "checking whether OpenSSL provides a prototype for TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 (in openssl/ssl.h)... " >&6; } + +ac_includes="" +for ac_header in openssl/ssl.h +do + ac_includes="$ac_includes +#include<$ac_header>" +done +tmp_save_1=`echo TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 | tr ' :' '__'` +if eval \${ac_cv_compiles_$tmp_save_1+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes +int +main () +{ +TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + eval "ac_cv_compiles_$tmp_save_1=yes" +else + eval "ac_cv_compiles_$tmp_save_1=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +if eval "test \"`echo '$''{'ac_cv_compiles_$tmp_save_1'}'`\" = yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + $as_echo "#define HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 1" >>confdefs.h + + : +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL provides a prototype for TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305 (in openssl/ssl.h)" >&5 $as_echo_n "checking whether OpenSSL provides a prototype for TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305 (in openssl/ssl.h)... " >&6; } @@ -15131,6 +15455,48 @@ else $as_echo "no" >&6; } fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL provides a prototype for X509_STORE_CTX_get0_cert (in openssl/x509_vfy.h)" >&5 +$as_echo_n "checking whether OpenSSL provides a prototype for X509_STORE_CTX_get0_cert (in openssl/x509_vfy.h)... " >&6; } + +ac_includes="" +for ac_header in openssl/x509_vfy.h +do + ac_includes="$ac_includes +#include<$ac_header>" +done +tmp_save_1=`echo X509_STORE_CTX_get0_cert | tr ' :' '__'` +if eval \${ac_cv_compiles_$tmp_save_1+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes +int +main () +{ +X509_STORE_CTX_get0_cert + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + eval "ac_cv_compiles_$tmp_save_1=yes" +else + eval "ac_cv_compiles_$tmp_save_1=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +if eval "test \"`echo '$''{'ac_cv_compiles_$tmp_save_1'}'`\" = yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + $as_echo "#define HAVE_OPENSSL_PROTOTYPE_X509_STORE_CTX_GET0_CERT 1" >>confdefs.h + + : +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL provides a prototype for X509_STORE_get0_param (in openssl/x509.h)" >&5 $as_echo_n "checking whether OpenSSL provides a prototype for X509_STORE_get0_param (in openssl/x509.h)... " >&6; } diff --git a/config/configure.in b/config/configure.in index 8988140c..b86c2a91 100644 --- a/config/configure.in +++ b/config/configure.in @@ -1050,6 +1050,9 @@ dnl test presence of functions, constants and macros needed for the dcmtls modul AC_CHECK_EXT_LIB_PROTOTYPE(DH_bits, OpenSSL, openssl/dh.h) AC_CHECK_EXT_LIB_COMPILES(EVP_PKEY_RSA_PSS, OpenSSL, openssl/evp.h, [EVP_PKEY_RSA_PSS]) AC_CHECK_EXT_LIB_PROTOTYPE(EVP_PKEY_base_id, OpenSSL, openssl/evp.h) +AC_CHECK_EXT_LIB_COMPILES(NID_dsa_with_SHA512, OpenSSL, openssl/obj_mac.h, [NID_dsa_with_SHA512]) +AC_CHECK_EXT_LIB_COMPILES(NID_ecdsa_with_SHA3_256, OpenSSL, openssl/obj_mac.h, [NID_ecdsa_with_SHA3_256]) +AC_CHECK_EXT_LIB_COMPILES(NID_sha512_256WithRSAEncryption, OpenSSL, openssl/obj_mac.h, [NID_sha512_256WithRSAEncryption]) AC_CHECK_EXT_LIB_PROTOTYPE(RAND_egd, OpenSSL, openssl/rand.h) AC_CHECK_EXT_LIB_PROTOTYPE(SSL_CTX_get_cert_store, OpenSSL, openssl/ssl.h) AC_CHECK_EXT_LIB_PROTOTYPE(SSL_CTX_get_ciphers, OpenSSL, openssl/ssl.h) @@ -1063,8 +1066,14 @@ AC_CHECK_EXT_LIB_PROTOTYPE(SSL_CTX_set_security_level, OpenSSL, openssl/ssl.h) AC_CHECK_EXT_LIB_COMPILES(SSL_ERROR_WANT_ASYNC, OpenSSL, openssl/ssl.h, [SSL_ERROR_WANT_ASYNC]) AC_CHECK_EXT_LIB_COMPILES(SSL_ERROR_WANT_ASYNC_JOB, OpenSSL, openssl/ssl.h, [SSL_ERROR_WANT_ASYNC_JOB]) AC_CHECK_EXT_LIB_COMPILES(SSL_ERROR_WANT_CLIENT_HELLO_CB, OpenSSL, openssl/ssl.h, [SSL_ERROR_WANT_CLIENT_HELLO_CB]) +AC_CHECK_EXT_LIB_COMPILES(TLS1_3_RFC_AES_128_CCM_8_SHA256, OpenSSL, openssl/ssl.h, [TLS1_3_RFC_AES_128_CCM_8_SHA256]) +AC_CHECK_EXT_LIB_COMPILES(TLS1_3_RFC_AES_256_GCM_SHA384, OpenSSL, openssl/ssl.h, [TLS1_3_RFC_AES_256_GCM_SHA384]) +AC_CHECK_EXT_LIB_COMPILES(TLS1_3_RFC_CHACHA20_POLY1305_SHA256, OpenSSL, openssl/ssl.h, [TLS1_3_RFC_CHACHA20_POLY1305_SHA256]) +AC_CHECK_EXT_LIB_COMPILES(TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8, OpenSSL, openssl/ssl.h, [TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8]) +AC_CHECK_EXT_LIB_COMPILES(TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384, OpenSSL, openssl/ssl.h, [TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384]) AC_CHECK_EXT_LIB_COMPILES(TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305, OpenSSL, openssl/ssl.h, [TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305]) AC_CHECK_EXT_LIB_PROTOTYPE(TLS_method, OpenSSL, openssl/ssl.h) +AC_CHECK_EXT_LIB_COMPILES(X509_STORE_CTX_get0_cert, OpenSSL, openssl/x509_vfy.h, [X509_STORE_CTX_get0_cert]) AC_CHECK_EXT_LIB_PROTOTYPE(X509_STORE_get0_param, OpenSSL, openssl/x509.h) AC_CHECK_EXT_LIB_PROTOTYPE(X509_get_signature_nid, OpenSSL, openssl/x509.h) diff --git a/config/confmod b/config/confmod index 8a8de85a..1c707c22 100755 --- a/config/confmod +++ b/config/confmod @@ -608,7 +608,6 @@ infodir docdir oldincludedir includedir -runstatedir localstatedir sharedstatedir sysconfdir @@ -673,7 +672,6 @@ datadir='${datarootdir}/dcmtk-3.6.7-DEV' sysconfdir='${prefix}/etc/dcmtk-3.6.7-DEV' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' -runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/dcmtk-3.6.7-DEV' @@ -926,15 +924,6 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; - -runstatedir | --runstatedir | --runstatedi | --runstated \ - | --runstate | --runstat | --runsta | --runst | --runs \ - | --run | --ru | --r) - ac_prev=runstatedir ;; - -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ - | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ - | --run=* | --ru=* | --r=*) - runstatedir=$ac_optarg ;; - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1072,7 +1061,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir runstatedir + libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1225,7 +1214,6 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc/dcmtk-3.6.7-DEV] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] diff --git a/config/docs/cxx11.dox b/config/docs/cxx11.dox index ad477397..c6df7cee 100644 --- a/config/docs/cxx11.dox +++ b/config/docs/cxx11.dox @@ -40,7 +40,8 @@ Trying to include a DCMTK build with C++11 enabled from a non C++11 environment will give you the following error message: @verbatim -DCMTK was configured to use C++11 features, but your compiler does not or was not configured to provide them. +DCMTK was configured to use C++11 features, but your compiler does not or was +not configured to provide them. @endverbatim To reduce DCMTK's implementation complexity, C++11 shall only be used if your @@ -49,6 +50,10 @@ this is currently true for the following compilers: \li GNU C++ Compiler (g++) Version 4.8.1 or later. \li Clang (clang++) Version 3.3 or later. +\li According to +Microsoft documentation, Visual Studio 2019 Version 16.8 (or higher) +with Windows SDK 10.0.20348.0 Version 2104 (or higher). DCMTK already allows +enabling C++11 for VS 2017 which reportedly also works well. To enable the C++11 STL, different steps are necessary on CMake and GNU Autoconf, see the appropriate section below: diff --git a/config/docs/macros.txt b/config/docs/macros.txt index 2c49ba7f..ec6d26c7 100644 --- a/config/docs/macros.txt +++ b/config/docs/macros.txt @@ -58,6 +58,18 @@ DCMTK_UNDEF_SANITIZER raised by the sanitizer and thus prevent the CMake configure phase from completing. +DCMTK_ENABLE_ACR_NEMA_DATASET_PRESENT_COMPATIBILITY + Affected: dcmnet + Type of modification: Toolkit customization + Explanation: In DCMTK releases before 3.6.8, some tools incorrectly + compare DataSetType for equality with DIMSE_DATASET_PRESENT, + instead of checking whether DataSetType is different from + DIMSE_DATASET_NULL. These tools will fail if a different value + than 0x0001 is used for this constant. See DCMTK issue #1045. + The DICOM standard, on the other hand, recommends the value 0x0102 + if backwards compatibility with ACR-NEMA is desired. If this is + important, compile with this macro enabled. + DCMTK_ENABLE_STRICT_HUFFMAN_TABLE_CHECK Affected: dcmjpeg Type of modification: Activates feature @@ -93,6 +105,24 @@ DCMTK_GUI them to the user or store them in a log file. See comments in ofstd/include/dcmtk/ofstd/ofconsol.h. +DCMTK_IGNORE_BCP195M_CAMELLIA_GCM_REQUIREMENT + Affected: dcmtls + Type of modification: Enables experimental feature + Explanation: Starting with release 3.6.8, DCMTK contains a feature-complete + implementation of the "Modified BCP 195 RFC 8996 TLS Secure Transport + Connection Profile". Unfortunately, this profile cannot be implemented + with any current version of OpenSSL or LibreSSL because the DICOM committee + has declared support for the TLS 1.2 Camellia ciphersuites in GCM mode + mandatory, and these are not supported in either OpenSSL or LibreSSL. + This macro will enable the support for this profile on library and + command line tool level, but in a manner that is not fully DICOM compliant + (i.e. without the Camellia GCM ciphersuites). + Should OpenSSL/LibreSSL add support for these ciphersuites in the + future, support for the TLS profile will automatically be enabled + when compiling DCMTK against such a future release, because there is + a configure test that checks the availability of this feature. + This macro is primarily intended for testing purposes. + DCMTK_LOG4CPLUS_AVOID_WIN32_FLS Affected: oflog Type of modification: Disables feature diff --git a/config/include/dcmtk/config/osconfig.h.in b/config/include/dcmtk/config/osconfig.h.in index c99aa1e6..f4a94b60 100644 --- a/config/include/dcmtk/config/osconfig.h.in +++ b/config/include/dcmtk/config/osconfig.h.in @@ -635,6 +635,18 @@ typedef unsigned short ushort; . */ #undef HAVE_OPENSSL_PROTOTYPE_EVP_PKEY_RSA_PSS +/* Define if OpenSSL provides a prototype for NID_dsa_with_SHA512 in + . */ +#undef HAVE_OPENSSL_PROTOTYPE_NID_DSA_WITH_SHA512 + +/* Define if OpenSSL provides a prototype for NID_ecdsa_with_SHA3_256 in + . */ +#undef HAVE_OPENSSL_PROTOTYPE_NID_ECDSA_WITH_SHA3_256 + +/* Define if OpenSSL provides a prototype for NID_sha512_256WithRSAEncryption + in . */ +#undef HAVE_OPENSSL_PROTOTYPE_NID_SHA512_256WITHRSAENCRYPTION + /* Define if OpenSSL provides a prototype for OSSL_PROVIDER_load in . */ #undef HAVE_OPENSSL_PROTOTYPE_OSSL_PROVIDER_LOAD @@ -690,6 +702,26 @@ typedef unsigned short ushort; in . */ #undef HAVE_OPENSSL_PROTOTYPE_SSL_ERROR_WANT_CLIENT_HELLO_CB +/* Define if OpenSSL provides a prototype for TLS1_3_RFC_AES_128_CCM_8_SHA256 + in . */ +#undef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_128_CCM_8_SHA256 + +/* Define if OpenSSL provides a prototype for TLS1_3_RFC_AES_256_GCM_SHA384 in + . */ +#undef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384 + +/* Define if OpenSSL provides a prototype for + TLS1_3_RFC_CHACHA20_POLY1305_SHA256 in . */ +#undef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_CHACHA20_POLY1305_SHA256 + +/* Define if OpenSSL provides a prototype for + TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8 in . */ +#undef HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8 + +/* Define if OpenSSL provides a prototype for + TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 in . */ +#undef HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 + /* Define if OpenSSL provides a prototype for TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305 in . */ #undef HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305 @@ -738,6 +770,10 @@ typedef unsigned short ushort; . */ #undef HAVE_OPENSSL_PROTOTYPE_X509_GET_SIGNATURE_NID +/* Define if OpenSSL provides a prototype for X509_STORE_CTX_get0_cert in + . */ +#undef HAVE_OPENSSL_PROTOTYPE_X509_STORE_CTX_GET0_CERT + /* Define if OpenSSL provides a prototype for X509_STORE_get0_param in . */ #undef HAVE_OPENSSL_PROTOTYPE_X509_STORE_GET0_PARAM diff --git a/dcmdata/apps/dcm2json.cc b/dcmdata/apps/dcm2json.cc index bc3f80d2..83be46ba 100644 --- a/dcmdata/apps/dcm2json.cc +++ b/dcmdata/apps/dcm2json.cc @@ -105,7 +105,7 @@ int main(int argc, char *argv[]) cmd.setOptionColumns(LONGCOL, SHORTCOL); cmd.setParamColumn(LONGCOL + SHORTCOL + 4); - cmd.addParam("dcmfile-in", "DICOM input filename to be converted", OFCmdParam::PM_Mandatory); + cmd.addParam("dcmfile-in", "DICOM input filename to be converted\n(\"-\" for stdin)", OFCmdParam::PM_Mandatory); cmd.addParam("jsonfile-out", "JSON output filename (default: stdout)", OFCmdParam::PM_Optional); cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2); diff --git a/dcmdata/apps/dcm2pdf.cc b/dcmdata/apps/dcm2pdf.cc index 912e3cea..ead47f7a 100644 --- a/dcmdata/apps/dcm2pdf.cc +++ b/dcmdata/apps/dcm2pdf.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2007-2022, OFFIS e.V. + * Copyright (C) 2007-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -98,7 +98,7 @@ int main(int argc, char *argv[]) cmd.setOptionColumns(LONGCOL, SHORTCOL); cmd.setParamColumn(LONGCOL + SHORTCOL + 4); - cmd.addParam("dcmfile-in", "DICOM input filename"); + cmd.addParam("dcmfile-in", "DICOM input filename (\"-\" for stdin)"); cmd.addParam("pdffile-out", "PDF output filename"); cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2); @@ -111,7 +111,7 @@ int main(int argc, char *argv[]) cmd.addOption("--read-file", "+f", "read file format or data set (default)"); cmd.addOption("--read-file-only", "+fo", "read file format only"); cmd.addOption("--read-dataset", "-f", "read data set without file meta information"); - cmd.addSubGroup("input transfer syntax:", LONGCOL, SHORTCOL); + cmd.addSubGroup("input transfer syntax:"); cmd.addOption("--read-xfer-auto", "-t=", "use TS recognition (default)"); cmd.addOption("--read-xfer-detect", "-td", "ignore TS specified in the file meta header"); cmd.addOption("--read-xfer-little", "-te", "read with explicit VR little endian TS"); diff --git a/dcmdata/apps/dcm2xml.cc b/dcmdata/apps/dcm2xml.cc index 70c24c05..61181284 100644 --- a/dcmdata/apps/dcm2xml.cc +++ b/dcmdata/apps/dcm2xml.cc @@ -324,7 +324,7 @@ int main(int argc, char *argv[]) cmd.setOptionColumns(LONGCOL, SHORTCOL); cmd.setParamColumn(LONGCOL + SHORTCOL + 4); - cmd.addParam("dcmfile-in", "DICOM input filename to be converted", OFCmdParam::PM_Mandatory); + cmd.addParam("dcmfile-in", "DICOM input filename to be converted\n(\"-\" for stdin)", OFCmdParam::PM_Mandatory); cmd.addParam("xmlfile-out", "XML output filename (default: stdout)", OFCmdParam::PM_Optional); cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2); diff --git a/dcmdata/apps/dcmconv.cc b/dcmdata/apps/dcmconv.cc index 3eec4870..759f622e 100644 --- a/dcmdata/apps/dcmconv.cc +++ b/dcmdata/apps/dcmconv.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1994-2021, OFFIS e.V. + * Copyright (C) 1994-2022, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -101,8 +101,8 @@ int main(int argc, char *argv[]) cmd.setOptionColumns(LONGCOL, SHORTCOL); cmd.setParamColumn(LONGCOL + SHORTCOL + 4); - cmd.addParam("dcmfile-in", "DICOM input filename to be converted"); - cmd.addParam("dcmfile-out", "DICOM output filename"); + cmd.addParam("dcmfile-in", "DICOM input filename to be converted\n(\"-\" for stdin)"); + cmd.addParam("dcmfile-out", "DICOM output filename\n(\"-\" for stdout)"); cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2); cmd.addOption("--help", "-h", "print this help text and exit", OFCommandLine::AF_Exclusive); diff --git a/dcmdata/apps/dcmcrle.cc b/dcmdata/apps/dcmcrle.cc index b7908712..0a58a100 100644 --- a/dcmdata/apps/dcmcrle.cc +++ b/dcmdata/apps/dcmcrle.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2002-2021, OFFIS e.V. + * Copyright (C) 2002-2022, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -70,8 +70,8 @@ int main(int argc, char *argv[]) cmd.setOptionColumns(LONGCOL, SHORTCOL); cmd.setParamColumn(LONGCOL + SHORTCOL + 4); - cmd.addParam("dcmfile-in", "DICOM input filename to be converted"); - cmd.addParam("dcmfile-out", "DICOM output filename"); + cmd.addParam("dcmfile-in", "DICOM input filename to be converted\n(\"-\" for stdin)"); + cmd.addParam("dcmfile-out", "DICOM output filename\n(\"-\" for stdout)"); cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2); cmd.addOption("--help", "-h", "print this help text and exit", OFCommandLine::AF_Exclusive); diff --git a/dcmdata/apps/dcmdrle.cc b/dcmdata/apps/dcmdrle.cc index 1405587e..bafa13c1 100644 --- a/dcmdata/apps/dcmdrle.cc +++ b/dcmdata/apps/dcmdrle.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2002-2021, OFFIS e.V. + * Copyright (C) 2002-2022, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -69,8 +69,8 @@ int main(int argc, char *argv[]) cmd.setOptionColumns(LONGCOL, SHORTCOL); cmd.setParamColumn(LONGCOL + SHORTCOL + 4); - cmd.addParam("dcmfile-in", "DICOM input filename to be converted"); - cmd.addParam("dcmfile-out", "DICOM output filename"); + cmd.addParam("dcmfile-in", "DICOM input filename to be converted\n(\"-\" for stdin)"); + cmd.addParam("dcmfile-out", "DICOM output filename\n(\"-\" for stdout)"); cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2); cmd.addOption("--help", "-h", "print this help text and exit", OFCommandLine::AF_Exclusive); diff --git a/dcmdata/apps/dcmdump.cc b/dcmdata/apps/dcmdump.cc index 4e3215c8..94d5abae 100644 --- a/dcmdata/apps/dcmdump.cc +++ b/dcmdata/apps/dcmdump.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1994-2021, OFFIS e.V. + * Copyright (C) 1994-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -40,10 +40,6 @@ #define PATTERN_MATCHING_AVAILABLE #endif -#ifndef HAVE_WINDOWS_H -#define ANSI_ESCAPE_CODES_AVAILABLE -#endif - #define OFFIS_CONSOLE_APPLICATION "dcmdump" static OFLogger dcmdumpLogger = OFLog::getLogger("dcmtk.apps." OFFIS_CONSOLE_APPLICATION); @@ -163,7 +159,7 @@ DCMTK_MAIN_FUNCTION cmd.setOptionColumns(LONGCOL, SHORTCOL); cmd.setParamColumn(LONGCOL + SHORTCOL + 4); - cmd.addParam("dcmfile-in", "DICOM input file or directory to be dumped", OFCmdParam::PM_MultiMandatory); + cmd.addParam("dcmfile-in", "DICOM input file or directory to be dumped\n(\"-\" for stdin)", OFCmdParam::PM_MultiMandatory); cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2); cmd.addOption("--help", "-h", "print this help text and exit", OFCommandLine::AF_Exclusive); @@ -265,12 +261,9 @@ DCMTK_MAIN_FUNCTION cmd.addOption("--quote-nonascii", "+Qn", "quote non-ASCII and control chars as XML markup"); cmd.addOption("--quote-as-octal", "+Qo", "quote non-ASCII and control ch. as octal numbers"); cmd.addOption("--print-nonascii", "-Qn", "print non-ASCII and control chars (default)"); -#ifdef ANSI_ESCAPE_CODES_AVAILABLE cmd.addSubGroup("color:"); cmd.addOption("--print-color", "+C", "use ANSI escape codes for colored output"); cmd.addOption("--no-color", "-C", "do not use any ANSI escape codes (default)"); -#endif - cmd.addSubGroup("error handling:"); cmd.addOption("--stop-on-error", "-E", "do not print if file is damaged (default)"); cmd.addOption("--ignore-errors", "+E", "attempt to print even if file is damaged"); @@ -570,12 +563,10 @@ DCMTK_MAIN_FUNCTION printFlags = printFlags & ~(DCMTypes::PF_convertToMarkup | DCMTypes::PF_convertToOctalNumbers); cmd.endOptionBlock(); -#ifdef ANSI_ESCAPE_CODES_AVAILABLE cmd.beginOptionBlock(); if (cmd.findOption("--print-color")) printFlags |= DCMTypes::PF_useANSIEscapeCodes; if (cmd.findOption("--no-color")) printFlags &= ~DCMTypes::PF_useANSIEscapeCodes; cmd.endOptionBlock(); -#endif cmd.beginOptionBlock(); if (cmd.findOption("--stop-on-error")) stopOnErrors = OFTrue; @@ -743,7 +734,7 @@ static void printResult(STD_NAMESPACE ostream &out, /* do not print if a DCM_Item as this is not * very helpful to distinguish instances. */ - if (dobj != NULL && dobj->getTag().getXTag() != DCM_Item) { + if (dobj != NULL && dobj->getTag() != DCM_Item) { out << dobj->getTag() << "."; } } diff --git a/dcmdata/apps/dump2dcm.cc b/dcmdata/apps/dump2dcm.cc index 522475a1..9cdc3e71 100644 --- a/dcmdata/apps/dump2dcm.cc +++ b/dcmdata/apps/dump2dcm.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1994-2021, OFFIS e.V. + * Copyright (C) 1994-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -626,10 +626,10 @@ insertIntoSet(DcmStack &stack, const E_TransferSyntax xfer, const DcmTagKey &tag } else if (newElementError == EC_InvalidTag) { - if (tag.getXTag() == DCM_Item) + if (tag == DCM_Item) { DcmItem *item = NULL; - if (topOfStack->getTag().getXTag() == DCM_DirectoryRecordSequence) + if (topOfStack->getTag() == DCM_DirectoryRecordSequence) { // an Item must be pushed to the stack item = new DcmDirectoryRecord(tag, 0); @@ -792,7 +792,7 @@ int main(int argc, char *argv[]) cmd.setParamColumn(LONGCOL + SHORTCOL + 4); cmd.addParam("dumpfile-in", "dump input filename"); - cmd.addParam("dcmfile-out", "DICOM output filename"); + cmd.addParam("dcmfile-out", "DICOM output filename (\"-\" for stdout)"); cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2); cmd.addOption("--help", "-h", "print this help text and exit", OFCommandLine::AF_Exclusive); @@ -1012,7 +1012,7 @@ int main(int argc, char *argv[]) } OFLOG_INFO(dump2dcmLogger, "reading dump file: " << opt_ifname); - FILE *dumpfile = fopen(opt_ifname, "r"); + FILE *dumpfile = fopen(opt_ifname, "rb"); if (!dumpfile) { OFLOG_FATAL(dump2dcmLogger, "input file does not exist: " << opt_ifname); diff --git a/dcmdata/apps/img2dcm.cc b/dcmdata/apps/img2dcm.cc index e2e62bb2..742ff815 100644 --- a/dcmdata/apps/img2dcm.cc +++ b/dcmdata/apps/img2dcm.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2007-2022, OFFIS e.V. + * Copyright (C) 2007-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -92,6 +92,7 @@ static OFCondition evaluateFromFileOptions( } #endif + cmd.beginOptionBlock(); if (cmd.findOption("--study-from")) { OFString tempStr; @@ -111,6 +112,7 @@ static OFCondition evaluateFromFileOptions( return makeOFCondition(OFM_dcmdata, 18, OF_error, "Unable to read value of --series-from option"); converter.setSeriesFrom(tempStr); } + cmd.endOptionBlock(); if (cmd.findOption("--instance-inc")) converter.setIncrementInstanceNumber(OFTrue); @@ -123,7 +125,7 @@ static OFCondition evaluateFromFileOptions( static void addCmdLineOptions(OFCommandLine& cmd) { cmd.addParam("imgfile-in", "image input filename", OFCmdParam::PM_MultiMandatory); - cmd.addParam("dcmfile-out", "DICOM output filename"); + cmd.addParam("dcmfile-out", "DICOM output filename (\"-\" for stdout)"); cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2); cmd.addOption("--help", "-h", "print this help text and exit", OFCommandLine::AF_Exclusive); diff --git a/dcmdata/apps/mdfconen.cc b/dcmdata/apps/mdfconen.cc index 84497aae..5583d45b 100644 --- a/dcmdata/apps/mdfconen.cc +++ b/dcmdata/apps/mdfconen.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2003-2020, OFFIS e.V. + * Copyright (C) 2003-2022, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -81,7 +81,7 @@ MdfConsoleEngine::MdfConsoleEngine(int argc, char *argv[], cmd->setOptionColumns(LONGCOL, SHORTCOL); cmd->setParamColumn(LONGCOL + SHORTCOL + 4); - cmd->addParam("dcmfile-in", "DICOM input filename to be modified", OFCmdParam::PM_MultiMandatory); + cmd->addParam("dcmfile-in", "DICOM input filename to be modified\n(\"-\" for stdin/stdout)", OFCmdParam::PM_MultiMandatory); // add options to commandline application cmd->addGroup("general options:", LONGCOL, SHORTCOL + 2); diff --git a/dcmdata/apps/xml2dcm.cc b/dcmdata/apps/xml2dcm.cc index f9eda835..c7529523 100644 --- a/dcmdata/apps/xml2dcm.cc +++ b/dcmdata/apps/xml2dcm.cc @@ -74,8 +74,8 @@ int main(int argc, char *argv[]) cmd.setOptionColumns(LONGCOL, SHORTCOL); cmd.setParamColumn(LONGCOL + SHORTCOL + 4); - cmd.addParam("xmlfile-in", "XML input filename to be converted (stdin: \"-\")", OFCmdParam::PM_Mandatory); - cmd.addParam("dcmfile-out", "DICOM output filename", OFCmdParam::PM_Mandatory); + cmd.addParam("xmlfile-in", "XML input filename to be converted\n(\"-\" for stdin)", OFCmdParam::PM_Mandatory); + cmd.addParam("dcmfile-out", "DICOM output filename\n(\"-\" for stdout)", OFCmdParam::PM_Mandatory); cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2); cmd.addOption("--help", "-h", "print this help text and exit", OFCommandLine::AF_Exclusive); diff --git a/dcmdata/data/dicom.dic b/dcmdata/data/dicom.dic index e8f575f4..9ad2da61 100644 --- a/dcmdata/data/dicom.dic +++ b/dcmdata/data/dicom.dic @@ -1,5 +1,5 @@ # -# Copyright (C) 1994-2022, OFFIS e.V. +# Copyright (C) 1994-2023, OFFIS e.V. # All rights reserved. See COPYRIGHT file for details. # # This software and supporting documentation were developed by @@ -21,8 +21,8 @@ # DICONDE (Digital Imaging and Communication in Nondestructive Evaluation) and # DICOS (Digital Imaging and Communications in Security) standard. # -# Generated automatically from DICOM PS 3.6-2022d and PS 3.7-2022d. -# File created on 2022-10-17 21:01:54 by J. Riesmeier on thinkpad2. +# Generated automatically from DICOM PS 3.6-2023c and PS 3.7-2023c. +# File created on 2023-07-14 12:17:55 by J. Riesmeier on thinkpad2. # # In addition, the data dictionary entries from the following final text # supplements and correction items (CP) have been incorporated: @@ -208,7 +208,7 @@ (0008,0400) SQ ScopeOfInventorySequence 1 DICOM (0008,0401) LT InventoryPurpose 1 DICOM (0008,0402) LT InventoryInstanceDescription 1 DICOM -(0008,0403) CS InventoryContentLevel 1 DICOM +(0008,0403) CS InventoryLevel 1 DICOM (0008,0404) DT ItemInventoryDateTime 1 DICOM (0008,0405) CS RemovedFromOperationalUse 1 DICOM (0008,0406) SQ ReasonForRemovalCodeSequence 1 DICOM @@ -222,7 +222,7 @@ (0008,040E) UI StoredInstanceTransferSyntaxUID 1 DICOM (0008,040F) CS ExtendedMatchingMechanisms 1-n DICOM (0008,0410) SQ RangeMatchingSequence 1 DICOM -(0008,0411) SQ UIDListMatchingSequence 1 DICOM +(0008,0411) SQ ListOfUIDMatchingSequence 1 DICOM (0008,0412) SQ EmptyValueMatchingSequence 1 DICOM (0008,0413) SQ GeneralMatchingSequence 1 DICOM (0008,0414) US RequestedStatusInterval 1 DICOM @@ -321,7 +321,7 @@ (0008,3010) UI IrradiationEventUID 1-n DICOM (0008,3011) SQ SourceIrradiationEventSequence 1 DICOM (0008,3012) UI RadiopharmaceuticalAdministrationEventUID 1 DICOM -(0008,9007) CS FrameType 4 DICOM +(0008,9007) CS FrameType 4-5 DICOM (0008,9092) SQ ReferencedImageEvidenceSequence 1 DICOM (0008,9121) SQ ReferencedRawDataSequence 1 DICOM (0008,9123) UI CreatorVersionUID 1 DICOM @@ -927,6 +927,8 @@ (0018,1201) TM TimeOfLastCalibration 1-n DICOM (0018,1202) DT DateTimeOfLastCalibration 1 DICOM (0018,1203) DT CalibrationDateTime 1 DICOM +(0018,1204) DA DateOfManufacture 1 DICOM +(0018,1205) DA DateOfInstallation 1 DICOM (0018,1210) SH ConvolutionKernel 1-n DICOM (0018,1242) IS ActualFrameDuration 1 DICOM (0018,1243) IS CountRate 1 DICOM @@ -1526,6 +1528,27 @@ (0018,980E) SQ TransducerBeamSteeringCodeSequence 1 DICOM (0018,980F) SQ TransducerApplicationCodeSequence 1 DICOM (0018,9810) xs ZeroVelocityPixelValue 1 DICOM +(0018,9821) SQ PhotoacousticExcitationCharacteristicsSequence 1 DICOM +(0018,9822) FD ExcitationSpectralWidth 1 DICOM +(0018,9823) FD ExcitationEnergy 1 DICOM +(0018,9824) FD ExcitationPulseDuration 1 DICOM +(0018,9825) SQ ExcitationWavelengthSequence 1 DICOM +(0018,9826) FD ExcitationWavelength 1 DICOM +(0018,9828) CS IlluminationTranslationFlag 1 DICOM +(0018,9829) CS AcousticCouplingMediumFlag 1 DICOM +(0018,982A) SQ AcousticCouplingMediumCodeSequence 1 DICOM +(0018,982B) FD AcousticCouplingMediumTemperature 1 DICOM +(0018,982C) SQ TransducerResponseSequence 1 DICOM +(0018,982D) FD CenterFrequency 1 DICOM +(0018,982E) FD FractionalBandwidth 1 DICOM +(0018,982F) FD LowerCutoffFrequency 1 DICOM +(0018,9830) FD UpperCutoffFrequency 1 DICOM +(0018,9831) SQ TransducerTechnologySequence 1 DICOM +(0018,9832) SQ SoundSpeedCorrectionMechanismCodeSequence 1 DICOM +(0018,9833) FD ObjectSoundSpeed 1 DICOM +(0018,9834) FD AcousticCouplingMediumSoundSpeed 1 DICOM +(0018,9835) SQ PhotoacousticImageFrameTypeSequence 1 DICOM +(0018,9836) SQ ImageDataTypeCodeSequence 1 DICOM (0018,9900) LO ReferenceLocationLabel 1 DICOM (0018,9901) UT ReferenceLocationDescription 1 DICOM (0018,9902) SQ ReferenceBasisCodeSequence 1 DICOM @@ -2039,6 +2062,7 @@ (0028,2112) DS LossyImageCompressionRatio 1-n DICOM (0028,2114) CS LossyImageCompressionMethod 1-n DICOM (0028,3000) SQ ModalityLUTSequence 1 DICOM +(0028,3001) SQ VariableModalityLUTSequence 1 DICOM (0028,3002) xs LUTDescriptor 3 DICOM (0028,3003) LO LUTExplanation 1 DICOM (0028,3004) LO ModalityLUTType 1 DICOM @@ -3531,6 +3555,60 @@ (3002,0050) SQ PrimaryFluenceModeSequence 1 DICOM (3002,0051) CS FluenceMode 1 DICOM (3002,0052) SH FluenceModeID 1 DICOM +(3002,0100) IS SelectedFrameNumber 1 DICOM +(3002,0101) SQ SelectedFrameFunctionalGroupsSequence 1 DICOM +(3002,0102) SQ RTImageFrameGeneralContentSequence 1 DICOM +(3002,0103) SQ RTImageFrameContextSequence 1 DICOM +(3002,0104) SQ RTImageScopeSequence 1 DICOM +(3002,0105) CS BeamModifierCoordinatesPresenceFlag 1 DICOM +(3002,0106) FD StartCumulativeMeterset 1 DICOM +(3002,0107) FD StopCumulativeMeterset 1 DICOM +(3002,0108) SQ RTAcquisitionPatientPositionSequence 1 DICOM +(3002,0109) SQ RTImageFrameImagingDevicePositionSequence 1 DICOM +(3002,010A) SQ RTImageFramekVRadiationAcquisitionSequence 1 DICOM +(3002,010B) SQ RTImageFrameMVRadiationAcquisitionSequence 1 DICOM +(3002,010C) SQ RTImageFrameRadiationAcquisitionSequence 1 DICOM +(3002,010D) SQ ImagingSourcePositionSequence 1 DICOM +(3002,010E) SQ ImageReceptorPositionSequence 1 DICOM +(3002,010F) FD DevicePositionToEquipmentMappingMatrix 16 DICOM +(3002,0110) SQ DevicePositionParameterSequence 1 DICOM +(3002,0111) CS ImagingSourceLocationSpecificationType 1 DICOM +(3002,0112) SQ ImagingDeviceLocationMatrixSequence 1 DICOM +(3002,0113) SQ ImagingDeviceLocationParameterSequence 1 DICOM +(3002,0114) SQ ImagingApertureSequence 1 DICOM +(3002,0115) CS ImagingApertureSpecificationType 1 DICOM +(3002,0116) US NumberOfAcquisitionDevices 1 DICOM +(3002,0117) SQ AcquisitionDeviceSequence 1 DICOM +(3002,0118) SQ AcquisitionTaskSequence 1 DICOM +(3002,0119) SQ AcquisitionTaskWorkitemCodeSequence 1 DICOM +(3002,011A) SQ AcquisitionSubtaskSequence 1 DICOM +(3002,011B) SQ SubtaskWorkitemCodeSequence 1 DICOM +(3002,011C) US AcquisitionTaskIndex 1 DICOM +(3002,011D) US AcquisitionSubtaskIndex 1 DICOM +(3002,011E) SQ ReferencedBaselineParametersRTRadiationInstanceSequence 1 DICOM +(3002,011F) SQ PositionAcquisitionTemplateIdentificationSequence 1 DICOM +(3002,0120) ST PositionAcquisitionTemplateID 1 DICOM +(3002,0121) LO PositionAcquisitionTemplateName 1 DICOM +(3002,0122) SQ PositionAcquisitionTemplateCodeSequence 1 DICOM +(3002,0123) LT PositionAcquisitionTemplateDescription 1 DICOM +(3002,0124) SQ AcquisitionTaskApplicabilitySequence 1 DICOM +(3002,0125) SQ ProjectionImagingAcquisitionParameterSequence 1 DICOM +(3002,0126) SQ CTImagingAcquisitionParameterSequence 1 DICOM +(3002,0127) SQ KVImagingGenerationParametersSequence 1 DICOM +(3002,0128) SQ MVImagingGenerationParametersSequence 1 DICOM +(3002,0129) CS AcquisitionSignalType 1 DICOM +(3002,012A) CS AcquisitionMethod 1 DICOM +(3002,012B) SQ ScanStartPositionSequence 1 DICOM +(3002,012C) SQ ScanStopPositionSequence 1 DICOM +(3002,012D) FD ImagingSourceToBeamModifierDefinitionPlaneDistance 1 DICOM +(3002,012E) CS ScanArcType 1 DICOM +(3002,012F) CS DetectorPositioningType 1 DICOM +(3002,0130) SQ AdditionalRTAccessoryDeviceSequence 1 DICOM +(3002,0131) SQ DeviceSpecificAcquisitionParameterSequence 1 DICOM +(3002,0132) SQ ReferencedPositionReferenceInstanceSequence 1 DICOM +(3002,0133) SQ EnergyDerivationCodeSequence 1 DICOM +(3002,0134) FD MaximumCumulativeMetersetExposure 1 DICOM +(3002,0135) SQ AcquisitionInitiationSequence 1 DICOM (3004,0001) CS DVHType 1 DICOM (3004,0002) CS DoseUnits 1 DICOM (3004,0004) CS DoseType 1 DICOM @@ -3540,8 +3618,6 @@ (3004,000A) CS DoseSummationType 1 DICOM (3004,000C) DS GridFrameOffsetVector 2-n DICOM (3004,000E) DS DoseGridScaling 1 DICOM -(3004,0010) SQ RTDoseROISequence 1 DICOM -(3004,0012) DS DoseValue 1 DICOM (3004,0014) CS TissueHeterogeneityCorrection 1-3 DICOM (3004,0040) DS DVHNormalizationPoint 3 DICOM (3004,0042) DS DVHNormalizationDoseValue 1 DICOM @@ -3612,7 +3688,6 @@ (3008,0024) DA TreatmentControlPointDate 1 DICOM (3008,0025) TM TreatmentControlPointTime 1 DICOM (3008,002A) CS TreatmentTerminationStatus 1 DICOM -(3008,002B) SH TreatmentTerminationCode 1 DICOM (3008,002C) CS TreatmentVerificationStatus 1 DICOM (3008,0030) SQ ReferencedTreatmentRecordSequence 1 DICOM (3008,0032) DS SpecifiedPrimaryMeterset 1 DICOM @@ -3655,6 +3730,10 @@ (3008,0090) SQ ReferencedCalculatedDoseReferenceSequence 1 DICOM (3008,0092) IS ReferencedCalculatedDoseReferenceNumber 1 DICOM (3008,00A0) SQ BeamLimitingDeviceLeafPairsSequence 1 DICOM +(3008,00A1) SQ EnhancedRTBeamLimitingDeviceSequence 1 DICOM +(3008,00A2) SQ EnhancedRTBeamLimitingOpeningSequence 1 DICOM +(3008,00A3) CS EnhancedRTBeamLimitingDeviceDefinitionFlag 1 DICOM +(3008,00A4) FD ParallelRTBeamDelimiterOpeningExtents 2-2n DICOM (3008,00B0) SQ RecordedWedgeSequence 1 DICOM (3008,00C0) SQ RecordedCompensatorSequence 1 DICOM (3008,00D0) SQ RecordedBlockSequence 1 DICOM @@ -4489,7 +4568,6 @@ (3010,0087) SQ WeekdayFractionPatternSequence 1 DICOM (3010,0088) SQ DeliveryTimeStructureCodeSequence 1 DICOM (3010,0089) SQ TreatmentSiteModifierCodeSequence 1 DICOM -(3010,0090) CS RoboticBaseLocationIndicator 1 DICOM (3010,0091) SQ RoboticPathNodeSetCodeSequence 1 DICOM (3010,0092) UL RoboticNodeIdentifier 1 DICOM (3010,0093) FD RTTreatmentSourceCoordinates 3 DICOM @@ -5007,6 +5085,8 @@ (2130,0050) SQ RETIRED_AnnotationContentSequence 1 DICOM/retired (2130,0060) SQ RETIRED_ImageOverlayBoxContentSequence 1 DICOM/retired (2130,0080) SQ RETIRED_PresentationLUTContentSequence 1 DICOM/retired +(3004,0010) SQ RETIRED_RTDoseROISequence 1 DICOM/retired +(3004,0012) DS RETIRED_DoseValue 1 DICOM/retired (3006,0044) DS RETIRED_ContourSlabThickness 1 DICOM/retired (3006,0045) DS RETIRED_ContourOffsetVector 3 DICOM/retired (3006,0049) IS RETIRED_AttachedContours 1-n DICOM/retired @@ -5016,6 +5096,7 @@ (3006,00C0) SQ RETIRED_FrameOfReferenceRelationshipSequence 1 DICOM/retired (3006,00C2) UI RETIRED_RelatedFrameOfReferenceUID 1 DICOM/retired (3006,00C4) CS RETIRED_FrameOfReferenceTransformationType 1 DICOM/retired +(3008,002B) SH RETIRED_TreatmentTerminationCode 1 DICOM/retired (300A,000B) LO RETIRED_TreatmentSites 1-n DICOM/retired (300A,0082) DS RETIRED_BeamDoseSpecificationPoint 3 DICOM/retired (300A,008D) FL RETIRED_AverageBeamDosePointDepth 1 DICOM/retired @@ -5023,6 +5104,7 @@ (300A,008F) FL RETIRED_AverageBeamDosePointSSD 1 DICOM/retired (300A,0632) SQ RETIRED_ReferencedRTPatientSetupSequence 1 DICOM/retired (300A,0650) UI RETIRED_PatientSetupUID 1 DICOM/retired +(3010,0090) CS RETIRED_RoboticBaseLocationIndicator 1 DICOM/retired (4000,0010) LT RETIRED_Arbitrary 1 DICOM/retired (4000,4000) LT RETIRED_TextComments 1 DICOM/retired (4008,0040) SH RETIRED_ResultsID 1 DICOM/retired diff --git a/dcmdata/docs/cda2dcm.man b/dcmdata/docs/cda2dcm.man index 05ac79d7..e47ee49e 100644 --- a/dcmdata/docs/cda2dcm.man +++ b/dcmdata/docs/cda2dcm.man @@ -23,7 +23,7 @@ to an output file (\e dcmfile-out). \verbatim cdafile-in CDA input filename to be encapsulated -dcmfile-out DICOM output filename +dcmfile-out DICOM output filename ("-" for stdout) \endverbatim \section cda2dcm_options OPTIONS @@ -177,21 +177,21 @@ The application may be fed with some additional input for filling mandatory (and optional) attributes in the new DICOM file like patient, study and series information: -\li The \e --key option can be used to add further attributes to the DICOM - output file. +- The \e --key option can be used to add further attributes to the DICOM output + file. -\li It is also possible to specify sequences, items and nested - attributes using the \e --key option. In these cases, a special "path" - notation has to be used. Details on this path notation can be found in the - documentation of \b dcmodify. +- It is also possible to specify sequences, items and nested attributes using + the \e --key option. In these cases, a special "path" notation has to be + used. Details on this path notation can be found in the documentation of + \b dcmodify. -\li The \e --key option can be present more than once. +- The \e --key option can be present more than once. -\li The value part (after the '=') may be absent causing the attribute to be - set with zero length. +- The value part (after the '=') may be absent causing the attribute to be set + with zero length. -\li Please be advised that the \e --key option is applied at the very end, just - before saving the DICOM file, so there is no value checking whatsoever. +- Please be advised that the \e --key option is applied at the very end, just + before saving the DICOM file, so there is no value checking whatsoever. \section cda2dcm_logging LOGGING @@ -277,6 +277,6 @@ It is an error if no data dictionary can be loaded. \section cda2dcm_copyright COPYRIGHT -Copyright (C) 2018-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 2018-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmdata/docs/dcm2json.man b/dcmdata/docs/dcm2json.man index 6ab83917..d436cd1d 100644 --- a/dcmdata/docs/dcm2json.man +++ b/dcmdata/docs/dcm2json.man @@ -29,9 +29,9 @@ with a particular transfer syntax. \section dcm2json_parameters PARAMETERS \verbatim -dcmfile-in DICOM input filename to be converted +dcmfile-in DICOM input filename to be converted ("-" for stdin) -jsonfile-out JSON output filename (default: stdout) +jsonfile-out JSON output filename (default: stdout) \endverbatim \section dcm2json_options OPTIONS @@ -413,6 +413,6 @@ It is an error if no data dictionary can be loaded. \section dcm2json_copyright COPYRIGHT -Copyright (C) 2016-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 2016-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmdata/docs/dcm2pdf.man b/dcmdata/docs/dcm2pdf.man index 0ec0508b..438a1011 100644 --- a/dcmdata/docs/dcm2pdf.man +++ b/dcmdata/docs/dcm2pdf.man @@ -22,7 +22,7 @@ creation of the PDF file. \section dcm2pdf_parameters PARAMETERS \verbatim -dcmfile-in DICOM input filename +dcmfile-in DICOM input filename ("-" for stdin) pdffile-out PDF output filename \endverbatim @@ -206,6 +206,6 @@ It is an error if no data dictionary can be loaded. \section dcm2pdf_copyright COPYRIGHT -Copyright (C) 2007-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 2007-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmdata/docs/dcm2xml.man b/dcmdata/docs/dcm2xml.man index ed7006dc..eb24402e 100644 --- a/dcmdata/docs/dcm2xml.man +++ b/dcmdata/docs/dcm2xml.man @@ -32,7 +32,7 @@ with a particular transfer syntax. \section dcm2xml_parameters PARAMETERS \verbatim -dcmfile-in DICOM input filename to be converted +dcmfile-in DICOM input filename to be converted ("-" for stdin) xmlfile-out XML output filename (default: stdout) \endverbatim @@ -123,15 +123,17 @@ specific character set: check all data elements with string values (default: only PN, LO, LT, SH, ST, UC and UT) - # this option is only used for the mapping to an appropriate - # XML character encoding, but not for the conversion to UTF-8 + # this option is only used for the extended check whether + # the Specific Character Set (0008,0005) attribute should be + # present, but not for the conversion of unaffected element + # values to UTF-8 (e.g. element values with a VR of CS) +U8 --convert-to-utf8 convert all element values that are affected by Specific Character Set (0008,0005) to UTF-8 - # requires support from an underlying character encoding library - # (see output of --version on which one is available) + # requires support from an underlying character encoding + # library (see output of --version on which one is available) \endverbatim \subsection dcm2xml_output_options output options @@ -393,6 +395,6 @@ It is an error if no data dictionary can be loaded. \section dcm2xml_copyright COPYRIGHT -Copyright (C) 2002-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 2002-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmdata/docs/dcmconv.man b/dcmdata/docs/dcmconv.man index dce91abf..5cdd6cf3 100644 --- a/dcmdata/docs/dcmconv.man +++ b/dcmdata/docs/dcmconv.man @@ -20,9 +20,9 @@ conversion and writes the converted data to an output file (\e dcmfile-out). \section dcmconv_parameters PARAMETERS \verbatim -dcmfile-in DICOM input filename to be converted +dcmfile-in DICOM input filename to be converted ("-" for stdin) -dcmfile-out DICOM output filename to write to +dcmfile-out DICOM output filename to write to ("-" for stdout) \endverbatim \section dcmconv_options OPTIONS @@ -387,6 +387,6 @@ It is an error if no data dictionary can be loaded. \section dcmconv_copyright COPYRIGHT -Copyright (C) 1994-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 1994-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmdata/docs/dcmcrle.man b/dcmdata/docs/dcmcrle.man index 7d2553a2..f332baaa 100644 --- a/dcmdata/docs/dcmcrle.man +++ b/dcmdata/docs/dcmcrle.man @@ -21,9 +21,9 @@ syntax) and writes the converted image to an output file (\e dcmfile-out). \section dcmcrle_parameters PARAMETERS \verbatim -dcmfile-in DICOM input filename to be converted +dcmfile-in DICOM input filename to be converted ("-" for stdin) -dcmfile-out DICOM output filename +dcmfile-out DICOM output filename ("-" for stdout) \endverbatim \section dcmcrle_options OPTIONS @@ -258,6 +258,6 @@ It is an error if no data dictionary can be loaded. \section dcmcrle_copyright COPYRIGHT -Copyright (C) 2002-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 2002-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmdata/docs/dcmdrle.man b/dcmdata/docs/dcmdrle.man index 037a9e39..1c690e63 100644 --- a/dcmdata/docs/dcmdrle.man +++ b/dcmdata/docs/dcmdrle.man @@ -21,9 +21,9 @@ and writes the converted image to an output file (\e dcmfile-out). \section dcmdrle_parameters PARAMETERS \verbatim -dcmfile-in DICOM input filename to be converted +dcmfile-in DICOM input filename to be converted ("-" for stdin) -dcmfile-out DICOM output filename +dcmfile-out DICOM output filename ("-" for stdout) \endverbatim \section dcmdrle_options OPTIONS @@ -247,6 +247,6 @@ It is an error if no data dictionary can be loaded. \section dcmdrle_copyright COPYRIGHT -Copyright (C) 2002-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany +Copyright (C) 2002-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany */ diff --git a/dcmdata/docs/dcmdump.man b/dcmdata/docs/dcmdump.man index 08256f4d..f8129e7c 100644 --- a/dcmdata/docs/dcmdump.man +++ b/dcmdata/docs/dcmdump.man @@ -33,7 +33,7 @@ with a particular transfer syntax. \section dcmdump_parameters PARAMETERS \verbatim -dcmfile-in DICOM input file or directory to be dumped +dcmfile-in DICOM input file or directory to be dumped ("-" for stdin) \endverbatim \section dcmdump_options OPTIONS @@ -306,13 +306,9 @@ color: +C --print-color use ANSI escape codes for colored output - # not available on Windows systems - -C --no-color do not use any ANSI escape codes (default) - # not available on Windows systems - error handling: -E --stop-on-error @@ -423,6 +419,6 @@ It is an error if no data dictionary can be loaded. \section dcmdump_copyright COPYRIGHT -Copyright (C) 1994-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 1994-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmdata/docs/dcmftest.man b/dcmdata/docs/dcmftest.man index a2b39b4d..fe02bc68 100644 --- a/dcmdata/docs/dcmftest.man +++ b/dcmdata/docs/dcmftest.man @@ -20,7 +20,7 @@ are DICOM files in part 10 format (with meta-header). \section dcmftest_parameters PARAMETERS \verbatim -dcmfile-in DICOM input filename to be dumped +dcmfile-in DICOM input filename to be checked \endverbatim \section dcmftest_notes NOTES diff --git a/dcmdata/docs/dcmgpdir.man b/dcmdata/docs/dcmgpdir.man index d12c0ea8..b1b1951a 100644 --- a/dcmdata/docs/dcmgpdir.man +++ b/dcmdata/docs/dcmgpdir.man @@ -20,8 +20,9 @@ Application Profiles. Currently, the following profiles are supported: -\li General Purpose CD-R Interchange (STD-GEN-CD) -\li General Purpose Interchange on DVD-RAM Media (STD-GEN-DVD-RAM) +- General Purpose CD-R Interchange (STD-GEN-CD) + +- General Purpose Interchange on DVD-RAM Media (STD-GEN-DVD-RAM) \b dcmmkdir is an extended version of this tool which also supports other Media Storage Application Profiles than the general purpose one (e.g. the @@ -296,6 +297,6 @@ It is an error if no data dictionary can be loaded. \section dcmgpdir_copyright COPYRIGHT -Copyright (C) 1996-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 1996-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmdata/docs/dcmodify.man b/dcmdata/docs/dcmodify.man index d3a7f672..93381913 100644 --- a/dcmdata/docs/dcmodify.man +++ b/dcmdata/docs/dcmodify.man @@ -69,7 +69,7 @@ tags (see PRIVATE TAGS section) and for changing UIDs (CHANGING UIDs section). \section dcmodify_parameters PARAMETERS \verbatim -dcmfile-in DICOM input filename(s) to be modified +dcmfile-in DICOM input filename(s) to be modified ("-" for stdin/stdout) \endverbatim \section dcmodify_options OPTIONS @@ -443,19 +443,19 @@ single elements (i.e. a single dictionary name or tag key). dcmodify -m "(0010,0010)=A Name" file.dcm Changes tag (0010,0010) on 1st level to "A Name". - This option also permits longer tag paths as demonstrated - above for -i. If the leaf element or any intermediate - part of the path does not exist, it is not inserted as it - would be if using the '-i' option. + This option also permits longer tag paths as demonstrated above + for -i. If the leaf element or any intermediate part of the path + does not exist, it is not inserted as it would be if using the + '-i' option. dcmodify -m "(0010,0010)=A Name" -imt file.dcm - Changes tag (0010,0010) on 1st level to "A Name". Due to the - given option '-imt', success is returned instead of "tag not found", - if the element/item (or any intermediate node in a longer path) does + Changes tag (0010,0010) on 1st level to "A Name". Due to the given + option '-imt', success is returned instead of "tag not found", if + the element/item (or any intermediate node in a longer path) does not exist. - Note that for the '-m' option the last node in the path must be - a leaf element, i.e. not a sequence or an item. + Note that for the '-m' option the last node in the path must be a + leaf element, i.e. not a sequence or an item. -mf --modify-from-file: dcmodify -mf "PixelData=pixel.raw" file.dcm @@ -477,9 +477,9 @@ single elements (i.e. a single dictionary name or tag key). dcmodify -e "(0010,0010)" -imt *.dcm Erases tag (0010,0010) in all *.dcm files at 1st level. Due to the - given option '-imt', success is returned instead of "tag not found", - if the element/item (or any intermediate node in a longer path) does - not exist. + given option '-imt', success is returned instead of "tag not + found", if the element/item (or any intermediate node in a longer + path) does not exist. -ea --erase-all: dcmodify -ea "(0010,0010)" *.dcm @@ -487,18 +487,18 @@ single elements (i.e. a single dictionary name or tag key). -ep --erase-private: dcmodify -ep *.dcm - Deletes all private tags (i.e. tags having an odd group number) from - all files matching *.dcm in the current directory. + Deletes all private tags (i.e. tags having an odd group number) + from all files matching *.dcm in the current directory. -gst --gen-stud-uid: dcmodify -gst file.dcm - This generates a new value for the StudyInstanceUID - (0020,000d). Other UIDs are not modified! + This generates a new value for the StudyInstanceUID (0020,000d). + Other UIDs are not modified! -gse --gen-ser-uid: dcmodify -gse file.dcm - This generates a new value for the SeriesInstanceUID - (0020,000e). Other UIDs are not modified! + This generates a new value for the SeriesInstanceUID (0020,000e). + Other UIDs are not modified! -gin --gen-inst-uid: dcmodify -gin file.dcm @@ -510,10 +510,9 @@ single elements (i.e. a single dictionary name or tag key). -nmu --no-meta-uid: dcmodify -m "SOPInstanceUID=[UID]" -nmu *.dcm - This will modify the SOPInstanceUID to the given [UID], - but -nmu avoids, that dcmodify adjusts the - MediaStorageSOPInstanceUID in the metaheader, too. - + This will modify the SOPInstanceUID to the given [UID], but -nmu + avoids, that dcmodify adjusts the MediaStorageSOPInstanceUID in + the metaheader, too. \endverbatim \section dcmodify_error_handling ERROR HANDLING @@ -590,6 +589,6 @@ It is an error if no data dictionary can be loaded. \section dcmodify_copyright COPYRIGHT -Copyright (C) 2003-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 2003-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmdata/docs/dump2dcm.man b/dcmdata/docs/dump2dcm.man index a9a9a13d..c06a2cc3 100644 --- a/dcmdata/docs/dump2dcm.man +++ b/dcmdata/docs/dump2dcm.man @@ -24,7 +24,7 @@ create a new DICOM file. \verbatim dumpfile-in dump input filename -dcmfile-out DICOM output filename +dcmfile-out DICOM output filename ("-" for stdout) \endverbatim \section dump2dcm_options OPTIONS @@ -314,6 +314,6 @@ It is an error if no data dictionary can be loaded. \section dump2dcm_copyright COPYRIGHT -Copyright (C) 1996-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 1996-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmdata/docs/img2dcm.man b/dcmdata/docs/img2dcm.man index 856c8766..b494c8c9 100644 --- a/dcmdata/docs/img2dcm.man +++ b/dcmdata/docs/img2dcm.man @@ -15,10 +15,10 @@ img2dcm [options] imgfile-in... dcmfile-out \section img2dcm_description DESCRIPTION The \b img2dcm tool serves as a conversion tool from a standard image format -like JPEG (including JPEG-LS) or BMP to DICOM. Different output SOP Classes -can be selected. The additional information (regarding patients, series, etc.) +like JPEG (including JPEG-LS) or BMP to DICOM. Different output SOP Classes +can be selected. The additional information (regarding patients, series, etc.) stored in the DICOM output file can be extracted from other DICOM files which -serve as a "template" for the resulting DICOM object. \b img2dcm can also be +serve as a "template" for the resulting DICOM object. \b img2dcm can also be configured to invent missing DICOM type 1 and type 2 attributes to work even without any template dataset. @@ -26,7 +26,7 @@ without any template dataset. \verbatim imgfile-in image input filename -dcmfile-out DICOM output filename +dcmfile-out DICOM output filename ("-" for stdout) \endverbatim \section img2dcm_options OPTIONS @@ -208,32 +208,32 @@ data set trailing padding (not with --write-dataset): For converting a general image format into DICOM format, the \b img2dcm application may be fed with some additional input for filling mandatory (and optional) attributes in the new DICOM file like patient, study and series -information. This information can be collected using different approaches, +information. This information can be collected using different approaches, which can be combined and are applied to the result file in the following order: -\li Using the \e --dataset-from option \b img2dcm is forced to import - attributes from an existing DICOM file. The given DICOM file is fully - imported and serves as the basis for all further export operations. - As an exception, the SOP Instance UID is not copied by this option. - Also image related data like Rows, Columns etc. is exchanged during - conversion. Note that \b img2dcm does not check any other attribute - values for validity, e.g. it does not look into sequences to adapt any - attributes to the new object (referenced images etc.). Therefore, it is - recommended to use the templates in the data directory for (old) SC and - VLP objects. See also section "Input Templates". - -\li Using the \e --dataset-from-xml option \b img2dcm is also forced to - import attributes from an existing file. In this case, however, the - file must contain XML data in the format as produced by \b dcm2xml. - -\li The \e --study-from and \e --series-from options (mutually exclusive) can - be used to import patient, study and series information from an existing - DICOM file. If \e --series-from is specified, then the given DICOM file - is opened by \b img2dcm and all mandatory information down to the series - level is imported. Note that this includes patient, study and series - information. In case of \e --study-from, the series information is - excluded. The following attributes are taken over: +- Using the \e --dataset-from option \b img2dcm is forced to import attributes + from an existing DICOM file. The given DICOM file is fully imported and + serves as the basis for all further export operations. As an exception, the + SOP Instance UID is not copied by this option. Also image related data like + Rows, Columns etc. is exchanged during conversion. Note that \b img2dcm does + not check any other attribute values for validity, e.g. it does not look into + sequences to adapt any attributes to the new object (referenced images etc.). + Therefore, it is recommended to use the templates in the data directory for + (old) SC and VLP objects. See also section "Input Templates". As an + alternative to option \e --dataset-from the mutually exclusive option + \e --dataset-from-xml can be used. In this case, however, the file must + contain XML data in the format as produced by \b dcm2xml. + +- The \e --study-from and \e --series-from options can be used to import + patient, study and series information from an existing DICOM file. If + \e --series-from is specified, then the given DICOM file is opened by + \b img2dcm and all mandatory information down to the series level is + imported. Note that this includes patient, study and series information. + In case of \e --study-from, the series information is excluded. Using + \e --study-from and \e --series-from at the same time does make sense. + If both options are provided on the command line, the rightmost option wins. + The following attributes are taken over: \verbatim Patient Level: Patient's Name @@ -256,44 +256,46 @@ order: Manufacturer \endverbatim -\li With the \e --insert-type2 and \e --invent-type1 options (both enabled per - default), missing attributes (type 2 attributes) and/or missing attribute - values (for type 1 attributes) are automatically added and invented by - \b img2dcm. Please note that these options are only evaluated if option - \e --do-checks is enabled (default). If the \e --no-checks options is - enabled, no automatic attribute insertion will take place. - -\li The \e --key option can be used to add further attributes to the DICOM - output file. It is also possible to specify sequences, items and nested - attributes using the \e --key option. In these cases, a special "path" - notation has to be used. Details on this path notation can be found in the - documentation of \b dcmodify. The \e --key option can be present more than - once. The value part (after the '=') may be absent causing the attribute to - be set with zero length. Please be advised that the \e --key option is - applied at the very end, just before saving the DICOM file, so there is no - value checking whatsoever. +- With the \e --insert-type2 and \e --invent-type1 options (both enabled per + default), missing attributes (type 2 attributes) and/or missing attribute + values (for type 1 attributes) are automatically added and invented by + \b img2dcm. Please note that these options are only evaluated if option + \e --do-checks is enabled (default). If the \e --no-checks options is + enabled, no automatic attribute insertion will take place. + +- The \e --key option can be used to add further attributes to the DICOM output + file. It is also possible to specify sequences, items and nested attributes + using the \e --key option. In these cases, a special "path" notation has to + be used. Details on this path notation can be found in the documentation of + \b dcmodify. The \e --key option can be present more than once. The value + part (after the '=') may be absent causing the attribute to be set with zero + length. Please be advised that the \e --key option is applied at the very + end, just before saving the DICOM file, so there is no value checking + whatsoever. \subsection img2dcm_uids UIDs New Study and Series Instance UIDs are generated if necessary after -applying the \e --study-from and \e --series options. If Study Instance UID or -Series Instance UID are not present after these steps, they are newly generated, -independently from each other. +applying the \e --study-from and \e --series-from options. If Study Instance +UID or Series Instance UID are not present after these steps, they are newly +generated, independently from each other. + A contrary behavior is chosen for the SOP Instance UID that one could expect -to be taken over when using the \e --dataset-from option. This is \b not the -case, the SOP Instance UID is \b not copied to the new object. This should -be the desirable behavior for most use cases. However, if a certain SOP -Instance UID should be inserted into the new object, the \e --key option should -be used. +to be taken over when using the \e --dataset-from or \e --dataset-from-xml +option. This is \b not the case, the SOP Instance UID is \b not copied to the +new object. This should be the desirable behavior for most use cases. +However, if a certain SOP Instance UID should be inserted into the new object, +the \e --key option should be used. \subsection img2dcm_input_templates Input Templates For supporting the conversion into DICOM, \b img2dcm comes with some pre-defined templates which can be used for the \e --dataset-from option (see -sample files \e SC.dump and \e VLP.dump). These templates should be filled with -the desired values and then must be dumped (converted) to a DICOM file before -actually being used with \b img2dcm. Use \b dump2dcm to convert the dump to -DICOM. Example: +sample files \e SC.dump and \e VLP.dump). These templates should be filled +with the desired values and then must be dumped (converted) to a DICOM file +before actually being used with \b img2dcm. Use \b dump2dcm to convert the +dump to DICOM. Example: + \verbatim dump2dcm SC.dump SC.dcm \endverbatim @@ -301,7 +303,7 @@ DICOM. Example: For Ophthalmic Photography images, XML templates are provided (see sample file \e OP_template_utf_8.xml and \e OP_template_latin_1.xml). -It is possible to use any DICOM file as a template. Please note that the +It is possible to use any DICOM file as a template. Please note that the complete DICOM dataset is imported; hence, it should be assured that only attributes are present which should be part of the constructed DICOM object. The SOP Class UID and the Pixel Data attributes (including attributes like @@ -312,18 +314,18 @@ Rows, Columns etc.) are not copied but replaced by \b img2dcm during conversion. When an input template is loaded using \e --dataset-from or \e --dataset-from-xml, the specific character set of that template is used for the generated DICOM file. If the \e --study-from or \e --series-from options are used additionally, -img2dcm will try to convert the character set of these attributes to that +\b img2dcm will try to convert the character set of these attributes to that of the template, and will report an error if that is not possible. If the \e --study-from or \e --series-from options are used without a template, the specific character set of this source is used for the generated DICOM file. -Any keys specified on the command line with the \e --key option are treated -as raw bytes and override any attributes that may already be present due -to a template or study/series file. Therefore, care should be taken to not -specify a specific character set on the command line if one might be loaded -from another file. It is also the user's responsibility to ensure that -attribute values specified on the command line use the correct encoding, -as no conversion will take place before the values are stored in the DICOM file. +Any keys specified on the command line with the \e --key option are treated as +raw bytes and override any attributes that may already be present due to a +template or study/series file. Therefore, care should be taken to not specify +a specific character set on the command line if one might be loaded from +another file. It is also the user's responsibility to ensure that attribute +values specified on the command line use the correct encoding, as no conversion +will take place before the values are stored in the DICOM file. \subsection img2dcm_input_plugins Input Plugins @@ -334,30 +336,23 @@ as input. For JPEG, the original JPEG from the source file is not decoded but extracted and slightly transformed (e.g. JFIF header is cut off) to allow fast conversion -of even big JPEG files without the need of decoding and re-encoding. The JPEG +of even big JPEG files without the need of decoding and re-encoding. The JPEG plugin chooses the necessary output transfer syntax automatically depending on -the actual encoding of the data inside the JPEG file. Therefore, the following +the actual encoding of the data inside the JPEG file. Therefore, the following Transfer Syntaxes (and their corresponding JPEG encodings) are used by the JPEG plugin: -
    - -
  • JPEG Coding Process 1 -
    Baseline, Lossy, Non-Hierarchical, Sequential, DCT, Huffman, 8 Bit -
    Transfer Syntax UID = 1.2.840.10008.1.2.4.50 -
  • +- JPEG Coding Process 1
    + Baseline, Lossy, Non-Hierarchical, Sequential, DCT, Huffman, 8 Bit
    + Transfer Syntax UID = 1.2.840.10008.1.2.4.50 -
  • JPEG Coding Process 2 (8-bit) and 4 (12-bit) -
    Extended, Lossy, Non-Hierarchical, Sequential, DCT, Huffman, 8/12 Bit -
    Transfer Syntax UID = 1.2.840.10008.1.2.4.51 -
  • +- JPEG Coding Process 2 (8-bit) and 4 (12-bit)
    + Extended, Lossy, Non-Hierarchical, Sequential, DCT, Huffman, 8/12 Bit
    + Transfer Syntax UID = 1.2.840.10008.1.2.4.51 -
  • JPEG Coding Process 10 (8-bit) and 12 (12-bit) -
    Full Progression, lossy, Non-Hierarch., Progressive, DCT, Huffman, 8/12 Bit -
    Transfer Syntax UID = 1.2.840.10008.1.2.4.55 -
  • - -
+- JPEG Coding Process 10 (8-bit) and 12 (12-bit)
+ Full Progression, lossy, Non-Hierarch., Progressive, DCT, Huffman, 8/12 Bit
+ Transfer Syntax UID = 1.2.840.10008.1.2.4.55 Color and grayscale images are supported. @@ -369,24 +364,24 @@ JPEG lossless encoding as well as any arithmetic or hierarchical JPEG encoding modes are not supported by the plugin. JFIF (JPEG File Interchange Format) information facilitates optional APPn -markers in a JPEG file. Many digital cameras do not integrate such JFIF -information into the JPEG output they create. For example, JFIF contains -information about the pixel aspect ratio of the compressed image. If you want +markers in a JPEG file. Many digital cameras do not integrate such JFIF +information into the JPEG output they create. For example, JFIF contains +information about the pixel aspect ratio of the compressed image. If you want the \b img2dcm application to insist on a JFIF header in the JPEG stream, you can use the option \e --insist-on-jfif which will abort if no JFIF information -can be found. By default, missing JFIF information is ignored. +can be found. By default, missing JFIF information is ignored. For DICOM it is kind of a "gray zone", whether the integration of JFIF (or any other APPn) data into the DICOM object's internal JPEG stream is allowed or -not. However, the most reliable approach is to cut those markers and their -information off the JPEG stream. This approach is also taken by the \b img2dcm -application. By default, all APPn markers are cut off from the original JPEG -stream. However, if you want to keep other APPn markers than JFIF (e.g. EXIF +not. However, the most reliable approach is to cut those markers and their +information off the JPEG stream. This approach is also taken by the \b img2dcm +application. By default, all APPn markers are cut off from the original JPEG +stream. However, if you want to keep other APPn markers than JFIF (e.g. EXIF information) inside the DICOM stream, the option \e --keep-appn does the trick. It should also be slightly faster than cutting off APPn information, because it -is not necessary to scan the whole JPEG stream for such data. As stated before, -JFIF information is always removed by \b img2dcm. However, when using this -option, the APP2 marker is retained, but \b img2dcm does not create an +is not necessary to scan the whole JPEG stream for such data. As stated +before, JFIF information is always removed by \b img2dcm. However, when using +this option, the APP2 marker is retained, but \b img2dcm does not create an equivalent ICC Profile (0028,2000) attribute. \subsubsection img2dcm_jpegls_input_plugin JPEG-LS Input Plugin @@ -405,126 +400,102 @@ depending on the actual encoding of the data inside the JPEG-LS file. Therefore, the following Transfer Syntaxes (and there corresponding JPEG-LS encodings) are used by the JPEG-LS plugin: -
    - -
  • JPEG-LS Lossless Image Compression -
    Transfer Syntax UID = 1.2.840.10008.1.2.4.80 -
  • - -
  • JPEG-LS Lossy (Near-Lossless) Image Compression -
    Transfer Syntax UID = 1.2.840.10008.1.2.4.81 -
  • +- JPEG-LS Lossless Image Compression
    + Transfer Syntax UID = 1.2.840.10008.1.2.4.80 -
+- JPEG-LS Lossy (Near-Lossless) Image Compression
+ Transfer Syntax UID = 1.2.840.10008.1.2.4.81 -Color and grayscale images are supported. CP-1843 enforce that the value of +Color and grayscale images are supported. CP-1843 enforce that the value of Planar Configuration (0028,0006) is irrelevant since the manner of encoding components is specified in the JPEG-LS bit stream as component, line or sample -interleaved, hence it shall be set to 0. Since no color transformation +interleaved, hence it shall be set to 0. Since no color transformation specific for JPEG-LS is currently defined in DICOM, it is assumed that the JPEG-LS stream is encoded in RGB color space. For DICOM it is clear that SPIFF header should not be present in the DICOM -object's internal JPEG-LS stream. The plugin will simply rejects any input +object's internal JPEG-LS stream. The plugin will simply rejects any input JPEG-LS file containing a SPIFF header at marker APP8. By default, all APPn markers are cut off from the original JPEG-LS stream. -However, if you want to keep APPn markers (e. g. APP8/HP color transform +However, if you want to keep APPn markers (e.g. APP8/HP color transform information, aka 'mrfx') inside the DICOM stream, the option \e --keep-appn -does the trick. Pay attention that the plugin will check the actual color -transform specified in the APP8/HP marker. Since DICOM does not allow any color -transform to be specified in the APP8 marker, only a value of `0` (no color -transform) is accepted. +does the trick. Pay attention that the plugin will check the actual color +transform specified in the APP8/HP marker. Since DICOM does not allow any +color transform to be specified in the APP8 marker, only a value of `0` (no +color transform) is accepted. \subsubsection img2dcm_bmp_input_plugin BMP Input Plugin -\b img2dcm supports BMP as input format. However, so far only the most common -BMP images are supported. In particular, BMP images which use bit fields or -run length encoding will be rejected. Such images are uncommon. Input images +\b img2dcm supports BMP as input format. However, so far only the most common +BMP images are supported. In particular, BMP images which use bit fields or +run length encoding will be rejected. Such images are uncommon. Input images will either be converted into a DICOM image with RGB color model and a bit depth of 24, or into an image with MONOCHROME2 color model an 8 bits per pixel. There are no specific options for fine-tuning BMP format conversion. \subsection img2dcm_output_plugins Output Plugins -The desired output SOP Class can be selected on the command line. Currently, +The desired output SOP Class can be selected on the command line. Currently, export plugins for the Secondary Capture Image SOP Class (default, option \e -sc), the Multiframe Secondary Capture Image SOP Classes (option \e -nsc), Visible Light Photographic Image SOP Class (option \e -vl), and the Ophthalmic -Photography Image SOP Classes (option \e -oph) are available. Please note that +Photography Image SOP Classes (option \e -oph) are available. Please note that the first one is deprecated according to the DICOM standard but is selected as -a default because it is widely supported. Future versions of \b img2dcm might +a default because it is widely supported. Future versions of \b img2dcm might provide further output plugins for other SOP Classes. For the new Secondary Capture SOP Classes, it is not possible to specify which -specific SOP Class should be used for output. That is because these new SOP +specific SOP Class should be used for output. That is because these new SOP classes are differentiated from each other by color depth (1/8/16) and the -fact whether the image is black/white or color. That is why \b img2dcm decides +fact whether the image is black/white or color. That is why \b img2dcm decides during conversion, which output SOP Class is suitable for a given source image. \section img2dcm_examples EXAMPLES Here are some examples that show how the \b img2dcm application can be used. -
    - -
  1. -img2dcm image.jpg out.dcm -
    Read JPEG file "image.jpg", convert to the old Secondary Capture SOP Class -and save the result to DICOM file "out.dcm". This is the easiest way of using -\b img2dcm. Any type 1 and type 2 attributes required for writing valid objects -of this SOP Class are inserted automatically. -
  2. - -
  3. -img2dcm -i BMP image.bmp out.dcm -
    Same as above but tells img2dcm to read a BMP file instead of JPEG. -
  4. - -
  5. -img2dcm image.jpg out.dcm -vlp -k "PatientName=Bond^James" -
    Same as first example, but writes Visible Light Photographic Image object -to "out.dcm" and sets PatientName to "Bond^James" which otherwise would be -left empty. -
  6. - -
  7. -img2dcm image.jpg out.dcm --series-from template.dcm -k -"PatientName=Bond^James" -
    Same as 1), but imports patient/study/series information from DICOM file -"template.dcm". Please note that attribute PatientName will contain -"Bond^James" at the end, any value from "template.dcm" will be overwritten. -That is, because the -k option is applied at the very end of the conversion -pipeline (see above). -
  8. - -
  9. -img2dcm image.jpg out.dcm --no-checks -
    Same as 1), but does not perform any attribute checking and no type 1 and -type 2 attribute insertion! So in this case, an invalid DICOM object would be -generated. This can be interesting if the output file is not meant to be -completed but will undergo further transformations, e.g. adding attributes -using \b dcmodify. Only use option \e --no-checks if you know what you are -doing! -
  10. - -
  11. -img2dcm image.jpg out.dcm --no-type1-invent -
    Same as 1), but does not insert missing type 1 attributes and/or their -values. Type 2 attributes will be inserted. Note that in this case it must be -assured that all type 1 attributes are provided by other means, i. e. by adding -them with the \e --key option. Otherwise, \b img2dcm will report an error and -will stop converting. -
  12. - -
  13. -img2dcm image.jpg out.dcm --keep-appn --insist-on-jfif -
    Same as 1), but takes over APPn information like EXIF into the DICOM -object's resulting JPEG stream. Further, \e --insist-on-jfif will force -\b img2dcm to abort if no JFIF information is existent in the source file. -
  14. - -
+-# img2dcm image.jpg out.dcm
+ Read JPEG file "image.jpg", convert to the old Secondary Capture SOP Class + and save the result to DICOM file "out.dcm". This is the easiest way of + using \b img2dcm. Any type 1 and type 2 attributes required for writing + valid objects of this SOP Class are inserted automatically. + +-# img2dcm -i BMP image.bmp out.dcm
+ Same as above but tells \b img2dcm to read a BMP file instead of JPEG. + +-# img2dcm image.jpg out.dcm -vlp -k "PatientName=Bond^James"
+ Same as first example, but writes Visible Light Photographic Image object + to "out.dcm" and sets PatientName to "Bond^James" which otherwise would be + left empty. + +-# img2dcm image.jpg out.dcm --series-from template.dcm -k + "PatientName=Bond^James"
+ Same as 1), but imports patient/study/series information from DICOM file + "template.dcm". Please note that attribute PatientName will contain + "Bond^James" at the end, any value from "template.dcm" will be overwritten. + That is, because the -k option is applied at the very end of the conversion + pipeline (see above). + +-# img2dcm image.jpg out.dcm --no-checks
+ Same as 1), but does not perform any attribute checking and no type 1 and + type 2 attribute insertion! So in this case, an invalid DICOM object would + be generated. This can be interesting if the output file is not meant to be + completed but will undergo further transformations, e.g. adding attributes + using \b dcmodify. Only use option \e --no-checks if you know what you are + doing! + +-# img2dcm image.jpg out.dcm --no-type1-invent
+ Same as 1), but does not insert missing type 1 attributes and/or their + values. Type 2 attributes will be inserted. Note that in this case it must + be assured that all type 1 attributes are provided by other means, i.e. by + adding them with the \e --key option. Otherwise, \b img2dcm will report an + error and will stop converting. + +-# img2dcm image.jpg out.dcm --keep-appn --insist-on-jfif
+ Same as 1), but takes over APPn information like EXIF into the DICOM + object's resulting JPEG stream. Further, \e --insist-on-jfif will force + \b img2dcm to abort if no JFIF information is existent in the source file. \section img2dcm_logging LOGGING @@ -598,6 +569,6 @@ Photography images \section img2dcm_copyright COPYRIGHT -Copyright (C) 2007-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 2007-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmdata/docs/pdf2dcm.man b/dcmdata/docs/pdf2dcm.man index 7c2755ff..0fd97ab1 100644 --- a/dcmdata/docs/pdf2dcm.man +++ b/dcmdata/docs/pdf2dcm.man @@ -23,7 +23,7 @@ to an output file (\e dcmfile-out). \verbatim pdffile-in PDF input filename to be encapsulated -dcmfile-out DICOM output filename +dcmfile-out DICOM output filename ("-" for stdout) \endverbatim \section pdf2dcm_options OPTIONS @@ -163,25 +163,25 @@ data set trailing padding (not with --write-dataset): \subsection pdf2dcm_attribute_sources Attribute Sources -The application may be fed with some additional input for filling mandatory (and -optional) attributes in the new DICOM file like patient, study and series +The application may be fed with some additional input for filling mandatory +(and optional) attributes in the new DICOM file like patient, study and series information: -\li The \e --key option can be used to add further attributes to the DICOM - output file. +- The \e --key option can be used to add further attributes to the DICOM output + file. -\li It is also possible to specify sequences, items and nested - attributes using the \e --key option. In these cases, a special "path" - notation has to be used. Details on this path notation can be found in the - documentation of \b dcmodify. +- It is also possible to specify sequences, items and nested attributes using + the \e --key option. In these cases, a special "path" notation has to be + used. Details on this path notation can be found in the documentation of + \b dcmodify. -\li The \e --key option can be present more than once. +- The \e --key option can be present more than once. -\li The value part (after the '=') may be absent causing the attribute to be - set with zero length. +- The value part (after the '=') may be absent causing the attribute to be set + with zero length. -\li Please be advised that the \e --key option is applied at the very end, just - before saving the DICOM file, so there is no value checking whatsoever. +- Please be advised that the \e --key option is applied at the very end, just + before saving the DICOM file, so there is no value checking whatsoever. \section pdf2dcm_logging LOGGING @@ -271,6 +271,6 @@ It is an error if no data dictionary can be loaded. \section pdf2dcm_copyright COPYRIGHT -Copyright (C) 2005-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 2005-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmdata/docs/stl2dcm.man b/dcmdata/docs/stl2dcm.man index 29c41ed6..242e12a2 100644 --- a/dcmdata/docs/stl2dcm.man +++ b/dcmdata/docs/stl2dcm.man @@ -23,7 +23,7 @@ to an output file (\e dcmfile-out). \verbatim stlfile-in STL input filename to be encapsulated -dcmfile-out DICOM output filename +dcmfile-out DICOM output filename ("-" for stdout) \endverbatim \section stl2dcm_options OPTIONS @@ -183,25 +183,25 @@ data set trailing padding (not with --write-dataset): \subsection stl2dcm_attribute_sources Attribute Sources -The application may be fed with some additional input for filling mandatory (and -optional) attributes in the new DICOM file like patient, study and series +The application may be fed with some additional input for filling mandatory +(and optional) attributes in the new DICOM file like patient, study and series information: -\li The \e --key option can be used to add further attributes to the DICOM - output file. +- The \e --key option can be used to add further attributes to the DICOM output + file. -\li It is also possible to specify sequences, items and nested - attributes using the \e --key option. In these cases, a special "path" - notation has to be used. Details on this path notation can be found in the - documentation of \b dcmodify. +- It is also possible to specify sequences, items and nested attributes using + the \e --key option. In these cases, a special "path" notation has to be + used. Details on this path notation can be found in the documentation of + \b dcmodify. -\li The \e --key option can be present more than once. +- The \e --key option can be present more than once. -\li The value part (after the '=') may be absent causing the attribute to be - set with zero length. +- The value part (after the '=') may be absent causing the attribute to be set + with zero length. -\li Please be advised that the \e --key option is applied at the very end, just - before saving the DICOM file, so there is no value checking whatsoever. +- Please be advised that the \e --key option is applied at the very end, just + before saving the DICOM file, so there is no value checking whatsoever. \section stl2dcm_logging LOGGING @@ -287,6 +287,6 @@ It is an error if no data dictionary can be loaded. \section stl2dcm_copyright COPYRIGHT -Copyright (C) 2018-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 2018-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmdata/docs/xml2dcm.man b/dcmdata/docs/xml2dcm.man index ffaac82f..90d7c1d7 100644 --- a/dcmdata/docs/xml2dcm.man +++ b/dcmdata/docs/xml2dcm.man @@ -23,9 +23,9 @@ validate against the DTD (Document Type Definition) which is described in file \section xml2dcm_parameters PARAMETERS \verbatim -xmlfile-in XML input filename to be converted (stdin: "-") +xmlfile-in XML input filename to be converted ("-" for stdin) -dcmfile-out DICOM output filename +dcmfile-out DICOM output filename ("-" for stdout) \endverbatim \section xml2dcm_options OPTIONS @@ -351,6 +351,6 @@ It is an error if no data dictionary can be loaded. \section xml2dcm_copyright COPYRIGHT -Copyright (C) 2003-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 2003-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmdata/include/dcmtk/dcmdata/dccodec.h b/dcmdata/include/dcmtk/dcmdata/dccodec.h index efe8edbe..55fa5c59 100644 --- a/dcmdata/include/dcmtk/dcmdata/dccodec.h +++ b/dcmdata/include/dcmtk/dcmdata/dccodec.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1997-2022, OFFIS e.V. + * Copyright (C) 1997-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -249,7 +249,7 @@ public: */ static OFCondition convertToSecondaryCapture(DcmItem *dataset); - /** create new SOP instance UID and Source Image Sequence + /** create new SOP Instance UID and Source Image Sequence * referencing the old SOP instance (if present) * @param dataset dataset to be modified * @param purposeOfReferenceCodingScheme coding scheme designator for purpose of reference code sequence @@ -263,7 +263,15 @@ public: const char *purposeOfReferenceCodeValue = NULL, const char *purposeOfReferenceCodeMeaning = NULL); - /** set first value of Image Type to DERIVED. + /** update value of the Image Type element (if needed). + * Three cases are handled by this method: + * 1. The Image Type element is not present or has an empty value. + * 2. The Image Type element is present and has a single value only. + * 3. The Image Type element is present and has two or more values. + * + * For case 1, nothing is done. An empty value means "unknown" for Type 2.
+ * For case 2, the value "DERIVED\SECONDARY" is used (VM is 2-n).
+ * For case 3, the first value is replaced by the string "DERIVED". * @param dataset dataset to be modified * @return EC_Normal if successful, an error code otherwise */ diff --git a/dcmdata/include/dcmtk/dcmdata/dcddirif.h b/dcmdata/include/dcmtk/dcmdata/dcddirif.h index b31e8e28..cfbf63d2 100644 --- a/dcmdata/include/dcmtk/dcmdata/dcddirif.h +++ b/dcmdata/include/dcmtk/dcmdata/dcddirif.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2002-2022, OFFIS e.V. + * Copyright (C) 2002-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -1128,6 +1128,18 @@ class DCMTK_DCMDATA_EXPORT DicomDirInterface const OFString &referencedFileID, const OFFilename &sourceFilename); + /** create or update inventory record and copy required values from dataset + * @param record record to be updated, use NULL to create a new one + * @param fileformat DICOM dataset of the current file + * @param referencedFileID value of the Referenced File ID attribute + * @param sourceFilename name of the source DICOM file + * @return pointer to new or updated record, NULL if an error occurred + */ + DcmDirectoryRecord *buildInventoryRecord(DcmDirectoryRecord *record, + DcmFileFormat *fileformat, + const OFString &referencedFileID, + const OFFilename &sourceFilename); + /** create or update image record and copy required values from dataset * @param record record to be updated, use NULL to create a new one * @param fileformat DICOM dataset of the current file @@ -1231,7 +1243,9 @@ class DCMTK_DCMDATA_EXPORT DicomDirInterface */ void inventMissingSeriesLevelAttributes(DcmDirectoryRecord *parent); - /** invent missing type 1 attributes for all child records (from instance level) + /** invent missing type 1 attributes for all child records (from instance level). + * This method is currently limited to the identifying instance-level attributes + * such as Instance Number (0020,0013) or Overlay Number (0020,0022). * @param parent invent missing attributes for all children of this record */ void inventMissingInstanceLevelAttributes(DcmDirectoryRecord *parent); diff --git a/dcmdata/include/dcmtk/dcmdata/dcdeftag.h b/dcmdata/include/dcmtk/dcmdata/dcdeftag.h index b739f0c5..848c402d 100644 --- a/dcmdata/include/dcmtk/dcmdata/dcdeftag.h +++ b/dcmdata/include/dcmtk/dcmdata/dcdeftag.h @@ -4,7 +4,7 @@ ** ** User: joergr ** Host: thinkpad2 -** Date: 2022-10-17 21:04:18 +** Date: 2023-07-14 12:18:43 ** Prog: /home/joergr/Source/dcmtk-full/public/dcmdata/libsrc/mkdeftag ** ** From: ../data/dicom.dic @@ -17,12 +17,12 @@ #include "dcmtk/dcmdata/dctagkey.h" -#define DCM_DICT_DEFTAG_BUILD_DATE "2022-10-17 21:04:18" +#define DCM_DICT_DEFTAG_BUILD_DATE "2023-07-14 12:18:43" /* ** Fixed Tags in ascending (gggg,eeee) order. -** Number of entries: 4991 +** Number of entries: 5073 ** Tags with a repeating component (repeating tags) are listed later. */ #define DCM_CommandGroupLength DcmTagKey(0x0000, 0x0000) @@ -221,7 +221,7 @@ #define DCM_ScopeOfInventorySequence DcmTagKey(0x0008, 0x0400) #define DCM_InventoryPurpose DcmTagKey(0x0008, 0x0401) #define DCM_InventoryInstanceDescription DcmTagKey(0x0008, 0x0402) -#define DCM_InventoryContentLevel DcmTagKey(0x0008, 0x0403) +#define DCM_InventoryLevel DcmTagKey(0x0008, 0x0403) #define DCM_ItemInventoryDateTime DcmTagKey(0x0008, 0x0404) #define DCM_RemovedFromOperationalUse DcmTagKey(0x0008, 0x0405) #define DCM_ReasonForRemovalCodeSequence DcmTagKey(0x0008, 0x0406) @@ -235,7 +235,7 @@ #define DCM_StoredInstanceTransferSyntaxUID DcmTagKey(0x0008, 0x040e) #define DCM_ExtendedMatchingMechanisms DcmTagKey(0x0008, 0x040f) #define DCM_RangeMatchingSequence DcmTagKey(0x0008, 0x0410) -#define DCM_UIDListMatchingSequence DcmTagKey(0x0008, 0x0411) +#define DCM_ListOfUIDMatchingSequence DcmTagKey(0x0008, 0x0411) #define DCM_EmptyValueMatchingSequence DcmTagKey(0x0008, 0x0412) #define DCM_GeneralMatchingSequence DcmTagKey(0x0008, 0x0413) #define DCM_RequestedStatusInterval DcmTagKey(0x0008, 0x0414) @@ -980,6 +980,8 @@ #define DCM_TimeOfLastCalibration DcmTagKey(0x0018, 0x1201) #define DCM_DateTimeOfLastCalibration DcmTagKey(0x0018, 0x1202) #define DCM_CalibrationDateTime DcmTagKey(0x0018, 0x1203) +#define DCM_DateOfManufacture DcmTagKey(0x0018, 0x1204) +#define DCM_DateOfInstallation DcmTagKey(0x0018, 0x1205) #define DCM_ConvolutionKernel DcmTagKey(0x0018, 0x1210) #define DCM_RETIRED_UpperLowerPixelValues DcmTagKey(0x0018, 0x1240) #define DCM_ActualFrameDuration DcmTagKey(0x0018, 0x1242) @@ -1597,6 +1599,27 @@ #define DCM_TransducerBeamSteeringCodeSequence DcmTagKey(0x0018, 0x980e) #define DCM_TransducerApplicationCodeSequence DcmTagKey(0x0018, 0x980f) #define DCM_ZeroVelocityPixelValue DcmTagKey(0x0018, 0x9810) +#define DCM_PhotoacousticExcitationCharacteristicsSequence DcmTagKey(0x0018, 0x9821) +#define DCM_ExcitationSpectralWidth DcmTagKey(0x0018, 0x9822) +#define DCM_ExcitationEnergy DcmTagKey(0x0018, 0x9823) +#define DCM_ExcitationPulseDuration DcmTagKey(0x0018, 0x9824) +#define DCM_ExcitationWavelengthSequence DcmTagKey(0x0018, 0x9825) +#define DCM_ExcitationWavelength DcmTagKey(0x0018, 0x9826) +#define DCM_IlluminationTranslationFlag DcmTagKey(0x0018, 0x9828) +#define DCM_AcousticCouplingMediumFlag DcmTagKey(0x0018, 0x9829) +#define DCM_AcousticCouplingMediumCodeSequence DcmTagKey(0x0018, 0x982a) +#define DCM_AcousticCouplingMediumTemperature DcmTagKey(0x0018, 0x982b) +#define DCM_TransducerResponseSequence DcmTagKey(0x0018, 0x982c) +#define DCM_CenterFrequency DcmTagKey(0x0018, 0x982d) +#define DCM_FractionalBandwidth DcmTagKey(0x0018, 0x982e) +#define DCM_LowerCutoffFrequency DcmTagKey(0x0018, 0x982f) +#define DCM_UpperCutoffFrequency DcmTagKey(0x0018, 0x9830) +#define DCM_TransducerTechnologySequence DcmTagKey(0x0018, 0x9831) +#define DCM_SoundSpeedCorrectionMechanismCodeSequence DcmTagKey(0x0018, 0x9832) +#define DCM_ObjectSoundSpeed DcmTagKey(0x0018, 0x9833) +#define DCM_AcousticCouplingMediumSoundSpeed DcmTagKey(0x0018, 0x9834) +#define DCM_PhotoacousticImageFrameTypeSequence DcmTagKey(0x0018, 0x9835) +#define DCM_ImageDataTypeCodeSequence DcmTagKey(0x0018, 0x9836) #define DCM_ReferenceLocationLabel DcmTagKey(0x0018, 0x9900) #define DCM_ReferenceLocationDescription DcmTagKey(0x0018, 0x9901) #define DCM_ReferenceBasisCodeSequence DcmTagKey(0x0018, 0x9902) @@ -2204,6 +2227,7 @@ #define DCM_LossyImageCompressionRatio DcmTagKey(0x0028, 0x2112) #define DCM_LossyImageCompressionMethod DcmTagKey(0x0028, 0x2114) #define DCM_ModalityLUTSequence DcmTagKey(0x0028, 0x3000) +#define DCM_VariableModalityLUTSequence DcmTagKey(0x0028, 0x3001) #define DCM_LUTDescriptor DcmTagKey(0x0028, 0x3002) #define DCM_LUTExplanation DcmTagKey(0x0028, 0x3003) #define DCM_ModalityLUTType DcmTagKey(0x0028, 0x3004) @@ -3888,6 +3912,60 @@ #define DCM_PrimaryFluenceModeSequence DcmTagKey(0x3002, 0x0050) #define DCM_FluenceMode DcmTagKey(0x3002, 0x0051) #define DCM_FluenceModeID DcmTagKey(0x3002, 0x0052) +#define DCM_SelectedFrameNumber DcmTagKey(0x3002, 0x0100) +#define DCM_SelectedFrameFunctionalGroupsSequence DcmTagKey(0x3002, 0x0101) +#define DCM_RTImageFrameGeneralContentSequence DcmTagKey(0x3002, 0x0102) +#define DCM_RTImageFrameContextSequence DcmTagKey(0x3002, 0x0103) +#define DCM_RTImageScopeSequence DcmTagKey(0x3002, 0x0104) +#define DCM_BeamModifierCoordinatesPresenceFlag DcmTagKey(0x3002, 0x0105) +#define DCM_StartCumulativeMeterset DcmTagKey(0x3002, 0x0106) +#define DCM_StopCumulativeMeterset DcmTagKey(0x3002, 0x0107) +#define DCM_RTAcquisitionPatientPositionSequence DcmTagKey(0x3002, 0x0108) +#define DCM_RTImageFrameImagingDevicePositionSequence DcmTagKey(0x3002, 0x0109) +#define DCM_RTImageFramekVRadiationAcquisitionSequence DcmTagKey(0x3002, 0x010a) +#define DCM_RTImageFrameMVRadiationAcquisitionSequence DcmTagKey(0x3002, 0x010b) +#define DCM_RTImageFrameRadiationAcquisitionSequence DcmTagKey(0x3002, 0x010c) +#define DCM_ImagingSourcePositionSequence DcmTagKey(0x3002, 0x010d) +#define DCM_ImageReceptorPositionSequence DcmTagKey(0x3002, 0x010e) +#define DCM_DevicePositionToEquipmentMappingMatrix DcmTagKey(0x3002, 0x010f) +#define DCM_DevicePositionParameterSequence DcmTagKey(0x3002, 0x0110) +#define DCM_ImagingSourceLocationSpecificationType DcmTagKey(0x3002, 0x0111) +#define DCM_ImagingDeviceLocationMatrixSequence DcmTagKey(0x3002, 0x0112) +#define DCM_ImagingDeviceLocationParameterSequence DcmTagKey(0x3002, 0x0113) +#define DCM_ImagingApertureSequence DcmTagKey(0x3002, 0x0114) +#define DCM_ImagingApertureSpecificationType DcmTagKey(0x3002, 0x0115) +#define DCM_NumberOfAcquisitionDevices DcmTagKey(0x3002, 0x0116) +#define DCM_AcquisitionDeviceSequence DcmTagKey(0x3002, 0x0117) +#define DCM_AcquisitionTaskSequence DcmTagKey(0x3002, 0x0118) +#define DCM_AcquisitionTaskWorkitemCodeSequence DcmTagKey(0x3002, 0x0119) +#define DCM_AcquisitionSubtaskSequence DcmTagKey(0x3002, 0x011a) +#define DCM_SubtaskWorkitemCodeSequence DcmTagKey(0x3002, 0x011b) +#define DCM_AcquisitionTaskIndex DcmTagKey(0x3002, 0x011c) +#define DCM_AcquisitionSubtaskIndex DcmTagKey(0x3002, 0x011d) +#define DCM_ReferencedBaselineParametersRTRadiationInstanceSequence DcmTagKey(0x3002, 0x011e) +#define DCM_PositionAcquisitionTemplateIdentificationSequence DcmTagKey(0x3002, 0x011f) +#define DCM_PositionAcquisitionTemplateID DcmTagKey(0x3002, 0x0120) +#define DCM_PositionAcquisitionTemplateName DcmTagKey(0x3002, 0x0121) +#define DCM_PositionAcquisitionTemplateCodeSequence DcmTagKey(0x3002, 0x0122) +#define DCM_PositionAcquisitionTemplateDescription DcmTagKey(0x3002, 0x0123) +#define DCM_AcquisitionTaskApplicabilitySequence DcmTagKey(0x3002, 0x0124) +#define DCM_ProjectionImagingAcquisitionParameterSequence DcmTagKey(0x3002, 0x0125) +#define DCM_CTImagingAcquisitionParameterSequence DcmTagKey(0x3002, 0x0126) +#define DCM_KVImagingGenerationParametersSequence DcmTagKey(0x3002, 0x0127) +#define DCM_MVImagingGenerationParametersSequence DcmTagKey(0x3002, 0x0128) +#define DCM_AcquisitionSignalType DcmTagKey(0x3002, 0x0129) +#define DCM_AcquisitionMethod DcmTagKey(0x3002, 0x012a) +#define DCM_ScanStartPositionSequence DcmTagKey(0x3002, 0x012b) +#define DCM_ScanStopPositionSequence DcmTagKey(0x3002, 0x012c) +#define DCM_ImagingSourceToBeamModifierDefinitionPlaneDistance DcmTagKey(0x3002, 0x012d) +#define DCM_ScanArcType DcmTagKey(0x3002, 0x012e) +#define DCM_DetectorPositioningType DcmTagKey(0x3002, 0x012f) +#define DCM_AdditionalRTAccessoryDeviceSequence DcmTagKey(0x3002, 0x0130) +#define DCM_DeviceSpecificAcquisitionParameterSequence DcmTagKey(0x3002, 0x0131) +#define DCM_ReferencedPositionReferenceInstanceSequence DcmTagKey(0x3002, 0x0132) +#define DCM_EnergyDerivationCodeSequence DcmTagKey(0x3002, 0x0133) +#define DCM_MaximumCumulativeMetersetExposure DcmTagKey(0x3002, 0x0134) +#define DCM_AcquisitionInitiationSequence DcmTagKey(0x3002, 0x0135) #define DCM_DVHType DcmTagKey(0x3004, 0x0001) #define DCM_DoseUnits DcmTagKey(0x3004, 0x0002) #define DCM_DoseType DcmTagKey(0x3004, 0x0004) @@ -3897,8 +3975,8 @@ #define DCM_DoseSummationType DcmTagKey(0x3004, 0x000a) #define DCM_GridFrameOffsetVector DcmTagKey(0x3004, 0x000c) #define DCM_DoseGridScaling DcmTagKey(0x3004, 0x000e) -#define DCM_RTDoseROISequence DcmTagKey(0x3004, 0x0010) -#define DCM_DoseValue DcmTagKey(0x3004, 0x0012) +#define DCM_RETIRED_RTDoseROISequence DcmTagKey(0x3004, 0x0010) +#define DCM_RETIRED_DoseValue DcmTagKey(0x3004, 0x0012) #define DCM_TissueHeterogeneityCorrection DcmTagKey(0x3004, 0x0014) #define DCM_DVHNormalizationPoint DcmTagKey(0x3004, 0x0040) #define DCM_DVHNormalizationDoseValue DcmTagKey(0x3004, 0x0042) @@ -3978,7 +4056,7 @@ #define DCM_TreatmentControlPointDate DcmTagKey(0x3008, 0x0024) #define DCM_TreatmentControlPointTime DcmTagKey(0x3008, 0x0025) #define DCM_TreatmentTerminationStatus DcmTagKey(0x3008, 0x002a) -#define DCM_TreatmentTerminationCode DcmTagKey(0x3008, 0x002b) +#define DCM_RETIRED_TreatmentTerminationCode DcmTagKey(0x3008, 0x002b) #define DCM_TreatmentVerificationStatus DcmTagKey(0x3008, 0x002c) #define DCM_ReferencedTreatmentRecordSequence DcmTagKey(0x3008, 0x0030) #define DCM_SpecifiedPrimaryMeterset DcmTagKey(0x3008, 0x0032) @@ -4021,6 +4099,10 @@ #define DCM_ReferencedCalculatedDoseReferenceSequence DcmTagKey(0x3008, 0x0090) #define DCM_ReferencedCalculatedDoseReferenceNumber DcmTagKey(0x3008, 0x0092) #define DCM_BeamLimitingDeviceLeafPairsSequence DcmTagKey(0x3008, 0x00a0) +#define DCM_EnhancedRTBeamLimitingDeviceSequence DcmTagKey(0x3008, 0x00a1) +#define DCM_EnhancedRTBeamLimitingOpeningSequence DcmTagKey(0x3008, 0x00a2) +#define DCM_EnhancedRTBeamLimitingDeviceDefinitionFlag DcmTagKey(0x3008, 0x00a3) +#define DCM_ParallelRTBeamDelimiterOpeningExtents DcmTagKey(0x3008, 0x00a4) #define DCM_RecordedWedgeSequence DcmTagKey(0x3008, 0x00b0) #define DCM_RecordedCompensatorSequence DcmTagKey(0x3008, 0x00c0) #define DCM_RecordedBlockSequence DcmTagKey(0x3008, 0x00d0) @@ -4862,7 +4944,7 @@ #define DCM_WeekdayFractionPatternSequence DcmTagKey(0x3010, 0x0087) #define DCM_DeliveryTimeStructureCodeSequence DcmTagKey(0x3010, 0x0088) #define DCM_TreatmentSiteModifierCodeSequence DcmTagKey(0x3010, 0x0089) -#define DCM_RoboticBaseLocationIndicator DcmTagKey(0x3010, 0x0090) +#define DCM_RETIRED_RoboticBaseLocationIndicator DcmTagKey(0x3010, 0x0090) #define DCM_RoboticPathNodeSetCodeSequence DcmTagKey(0x3010, 0x0091) #define DCM_RoboticNodeIdentifier DcmTagKey(0x3010, 0x0092) #define DCM_RTTreatmentSourceCoordinates DcmTagKey(0x3010, 0x0093) diff --git a/dcmdata/include/dcmtk/dcmdata/dcdicent.h b/dcmdata/include/dcmtk/dcmdata/dcdicent.h index c337afd0..d7d16403 100644 --- a/dcmdata/include/dcmtk/dcmdata/dcdicent.h +++ b/dcmdata/include/dcmtk/dcmdata/dcdicent.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1994-2021, OFFIS e.V. + * Copyright (C) 1994-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -65,7 +65,7 @@ public: * @param vmMax upper limit for value multiplicity, DcmVariableVM for unlimited * @param vers standard version name, may be NULL * @param doCopyStrings true if strings should be copied, false if only referenced - * @param pcreator private creator name, may be NULL (for standard tags) + * @param pcreator private creator identifier, may be NULL (for standard tags) */ DcmDictEntry(Uint16 g, Uint16 e, DcmVR vr, const char* nam, int vmMin, int vmMax, @@ -83,7 +83,7 @@ public: * @param vmMax upper limit for value multiplicity, DcmVariableVM for unlimited * @param vers standard version name, may be NULL * @param doCopyStrings true if strings should be copied, false if only referenced - * @param pcreator private creator name, may be NULL (for standard tags) + * @param pcreator private creator identifier, may be NULL (for standard tags) */ DcmDictEntry(Uint16 g, Uint16 e, Uint16 ug, Uint16 ue, DcmVR vr, const char* nam, int vmMin, int vmMax, @@ -124,13 +124,13 @@ public: return tagName; } - /// returns private creator code, may be NULL + /// returns private creator identifier, may be NULL const char* getPrivateCreator() const { return privateCreator; } - /** checks if the private creator code equals the given string + /** checks if the private creator identifier equals the given string * @param c string to compare with, may be NULL * @return true if equal, false otherwise */ @@ -143,10 +143,10 @@ public: ); } - /** checks if the private creator code of this object matches - * the one of the given object. + /** checks if the private creator identifier of this object matches the one + * of the given object. * @param arg dictionary entry to compare with - * @return true if private creators are equal, false otherwise + * @return true if private creator identifiers are equal, false otherwise */ int privateCreatorMatch(const DcmDictEntry& arg) const { @@ -285,11 +285,12 @@ public: /* containment */ - /** checks if the given tag key and private creator code are covered + /** checks if the given tag key and private creator identifier are covered * by this object. * @param key tag key - * @param privCreator private creator, may be NULL - * @return true if this entry contains the given tag for the given private creator + * @param privCreator private creator identifier, may be NULL + * @return true if this entry contains the given tag for the given private + * creator identifier */ int contains(const DcmTagKey& key, const char *privCreator) const /* this contains key */ { @@ -400,7 +401,7 @@ private: /// restriction (even, odd, unrestricted) for element range DcmDictRangeRestriction elementRangeRestriction; - /// private creator name, may be NULL + /// private creator identifier, may be NULL const char *privateCreator; }; diff --git a/dcmdata/include/dcmtk/dcmdata/dcdict.h b/dcmdata/include/dcmtk/dcmdata/dcdict.h index f1e9ba7f..6c1110d8 100644 --- a/dcmdata/include/dcmtk/dcmdata/dcdict.h +++ b/dcmdata/include/dcmtk/dcmdata/dcdict.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1994-2022, OFFIS e.V. + * Copyright (C) 1994-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -113,25 +113,25 @@ public: /** load a particular dictionary from file. * @param fileName filename - * @param errorIfAbsent causes the method to return false - * if the file cannot be opened + * @param errorIfAbsent causes the method to return false if the file + * cannot be opened * @return false if the file contains a parse error or if the file could * not be opened and errorIfAbsent was set, true otherwise. */ OFBool loadDictionary(const char* fileName, OFBool errorIfAbsent = OFTrue); - /** dictionary lookup for the given tag key and private creator name. - * First the normal tag dictionary is searched. If not found - * then the repeating tag dictionary is searched. + /** dictionary lookup for the given tag key and private creator identifier. + * First the normal tag dictionary is searched. If not found then the + * repeating tag dictionary is searched. * @param key tag key - * @param privCreator private creator name, may be NULL + * @param privCreator private creator identifier, may be NULL */ const DcmDictEntry* findEntry(const DcmTagKey& key, const char *privCreator) const; /** dictionary lookup for the given attribute name. - * First the normal tag dictionary is searched. If not found - * then the repeating tag dictionary is searched. - * Only considers standard attributes (i. e. without private creator) + * First the normal tag dictionary is searched. If not found then the + * repeating tag dictionary is searched. + * Only considers standard attributes (i. e. without private creator). * @param name attribute name */ const DcmDictEntry* findEntry(const char *name) const; diff --git a/dcmdata/include/dcmtk/dcmdata/dcdirrec.h b/dcmdata/include/dcmtk/dcmdata/dcdirrec.h index 3ffb057e..7fb0022b 100644 --- a/dcmdata/include/dcmtk/dcmdata/dcdirrec.h +++ b/dcmdata/include/dcmtk/dcmdata/dcdirrec.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1994-2021, OFFIS e.V. + * Copyright (C) 1994-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -130,7 +130,9 @@ typedef enum { /// radiotherapy ERT_Radiotherapy = 48, /// annotation - ERT_Annotation = 49 + ERT_Annotation = 49, + /// inventory + ERT_Inventory = 50 } E_DirRecType; diff --git a/dcmdata/include/dcmtk/dcmdata/dcelem.h b/dcmdata/include/dcmtk/dcmdata/dcelem.h index bb9b90c4..b6ffeb7e 100644 --- a/dcmdata/include/dcmtk/dcmdata/dcelem.h +++ b/dcmdata/include/dcmtk/dcmdata/dcelem.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1994-2022, OFFIS e.V. + * Copyright (C) 1994-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -27,6 +27,7 @@ #include "dcmtk/dcmdata/dcobject.h" #include "dcmtk/ofstd/ofstring.h" +#include "dcmtk/ofstd/oftypes.h" // forward declarations class DcmInputStreamFactory; @@ -717,10 +718,15 @@ class DCMTK_DCMDATA_EXPORT DcmElement * @param dataset dataset in which this pixel data element is contained * @param frameSize frame size in bytes (without padding) returned in this * parameter upon success, otherwise set to 0 + * @param pixelDataIsUncompressed flag indicating whether the frame + * to be accessed already exists in uncompressed form. This is important + * for the YBR_FULL_422 color model, which is never created by DCMTK's + * decoders but can exist in uncompressed format * @return EC_Normal if successful, an error code otherwise */ virtual OFCondition getUncompressedFrameSize(DcmItem *dataset, - Uint32 &frameSize) const; + Uint32 &frameSize, + OFBool pixelDataIsUncompressed) const; /** access single frame without decompressing or loading a complete * multi-frame object. The frame is copied into the buffer passed by the caller @@ -877,9 +883,9 @@ class DCMTK_DCMDATA_EXPORT DcmElement * @param vmNum value multiplicity of the value to be checked. * For empty values (vmNum=0), the status of the check is always EC_Normal (i.e. no error). * @param vmStr value multiplicity (according to the data dictionary) to be checked for. - * (valid values: "1", "1-2", "1-3", "1-8", "1-99", "1-n", "2", "2-n", "2-2n", - * "3", "3-n", "3-3n", "4", "5", "5-n", "6", "7", "7-7n", "8", "9", - * "16", "24", "32", "256") + * (valid values: "1", "1-2", "1-3", "1-8", "1-99", "1-n", "2", "2-4", "2-n", "2-2n", + * "3", "3-n", "3-3n", "4", "4-5", "4-4n", "5", "5-n", "6", "6-n", + * "7", "7-7n", "8", "9", "11", "16", "24", "32", "256") * @return status of the check, EC_ValueMultiplicityViolated in case of error */ static OFCondition checkVM(const unsigned long vmNum, diff --git a/dcmdata/include/dcmtk/dcmdata/dchashdi.h b/dcmdata/include/dcmtk/dcmdata/dchashdi.h index 960d1e75..6a77836e 100644 --- a/dcmdata/include/dcmtk/dcmdata/dchashdi.h +++ b/dcmdata/include/dcmtk/dcmdata/dchashdi.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1994-2017, OFFIS e.V. + * Copyright (C) 1994-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -92,7 +92,7 @@ public: /** find an entry in the set * @param key tag key of the entry to be searched for - * @param privCreator private creator name, may be NULL + * @param privCreator private creator identifier, may be NULL * @return pointer to entry (if found), otherwise NULL */ DcmDictEntry *find(const DcmTagKey& key, const char *privCreator); @@ -224,14 +224,14 @@ public: /** hash table lookup for the given tag key and private creator name * @param key tag key of the entry to be searched for - * @param privCreator private creator name, may be NULL + * @param privCreator private creator identifier, may be NULL * @return pointer to entry (if found), otherwise NULL */ const DcmDictEntry* get(const DcmTagKey& key, const char *privCreator) const; - /** deletes the entry for the given tag and private creator + /** deletes the entry for the given tag and private creator identifier * @param key tag key of the entry to be deleted - * @param privCreator private creator name, may be NULL + * @param privCreator private creator identifier, may be NULL */ void del(const DcmTagKey& key, const char *privCreator); @@ -264,7 +264,7 @@ private: /** compute hash value for given tag key * @param key pointer to tag key - * @param privCreator private creator name, may be NULL + * @param privCreator private creator identifier, may be NULL * @return hash value */ int hash(const DcmTagKey* key, const char *privCreator) const; @@ -276,18 +276,18 @@ private: */ DcmDictEntry* insertInList(DcmDictEntryList& lst, DcmDictEntry* entry); - /** removes the entry for the given tag and private creator + /** removes the entry for the given tag and private creator identifier * @param lst list to remove from * @param key tag key of the entry to be removed - * @param privCreator private creator name, may be NULL + * @param privCreator private creator identifier, may be NULL * @return pointer to removed element, if any */ DcmDictEntry* removeInList(DcmDictEntryList& lst, const DcmTagKey& key, const char *privCreator); - /** searches entry for the given tag and private creator + /** searches entry for the given tag and private creator identifier * @param lst list to search in * @param key tag key of the entry to be searched for - * @param privCreator private creator name, may be NULL + * @param privCreator private creator identifier, may be NULL * @return pointer to found element, NULL if not found */ DcmDictEntry* findInList(DcmDictEntryList& lst, const DcmTagKey& key, const char *privCreator) const; diff --git a/dcmdata/include/dcmtk/dcmdata/dcitem.h b/dcmdata/include/dcmtk/dcmdata/dcitem.h index fff90d86..e79d5580 100644 --- a/dcmdata/include/dcmtk/dcmdata/dcitem.h +++ b/dcmdata/include/dcmtk/dcmdata/dcitem.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1994-2021, OFFIS e.V. + * Copyright (C) 1994-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -95,9 +95,9 @@ class DCMTK_DCMDATA_EXPORT DcmItem * cannot be casted to this object type or both objects are of * different VR (i.e. the DcmEVR returned by the element's ident() * call are different). - * 1 if either this element has more components than the rhs element, or - * if the first component that does not match is greater in this object than - * in rhs object. + * 1 if either this element has more components than the rhs + * element, or if the first component that does not match is + * greater in this object than in rhs object. */ virtual int compare(const DcmItem& rhs) const; @@ -448,8 +448,8 @@ class DCMTK_DCMDATA_EXPORT DcmItem * that is, DcmItem and DcmSequenceOfItems. It returns a pointer to the * next object in the list AFTER the given object. If the caller passes NULL, * a pointer to the first object in the list is returned. If the given object - * is not found, the given object is the last one in the list or the list is empty, - * NULL is returned. + * is not found, the given object is the last one in the list or the list is + * empty, NULL is returned. * @param obj pointer to one object in the container; we are looking for the * next entry after this one. NULL if looking for the first entry. * @return pointer to next object in container or NULL if not found @@ -1206,6 +1206,19 @@ class DCMTK_DCMDATA_EXPORT DcmItem const unsigned long pos = 0, const OFBool replaceOld = OFTrue); + /** create a new element, put specified value to it and insert the element into the dataset/item. + * Applicable to the following VRs: SL. + * @param tag DICOM tag specifying the attribute to be created + * @param value value to be set for the new element + * @param count number of values (not bytes!) to be copied from 'value' + * @param replaceOld flag indicating whether to replace an existing element or not + * @return EC_Normal upon success, an error code otherwise. + */ + OFCondition putAndInsertSint32Array(const DcmTag &tag, + const Sint32 *value, + const unsigned long count, + const OFBool replaceOld = OFTrue); + /** create a new element, put specified value to it and insert the element into the dataset/item. * Applicable to the following VRs: FL, OF. * @param tag DICOM tag specifying the attribute to be created @@ -1308,8 +1321,8 @@ class DCMTK_DCMDATA_EXPORT DcmItem * in the dictionary) will result in a DcmElement instance of derived type * DcmOtherByteOtherWord. * @param tag attribute tag of the element to be created - * @param privateCreator private creator of the element, if element tag - * is private (default: NULL, i.e. non-private DICOM standard tag) + * @param privateCreator private creator identifier of the element, if element + * tag is private (default: NULL, i.e. non-private DICOM standard tag) * @return pointer to newly created element upon success, NULL pointer otherwise * */ @@ -1323,8 +1336,8 @@ class DCMTK_DCMDATA_EXPORT DcmItem * @param newElement pointer to newly created element returned in this parameter * upon success, NULL pointer otherwise * @param tag attribute tag of the element to be created - * @param privateCreator private creator of the element, if element tag - * is private (default: NULL, i.e. non-private DICOM standard tag) + * @param privateCreator private creator identifier of the element, if element + * tag is private (default: NULL, i.e. non-private DICOM standard tag) * @return EC_Normal upon success, an error code otherwise */ static OFCondition newDicomElement(DcmElement *&newElement, @@ -1451,8 +1464,8 @@ class DCMTK_DCMDATA_EXPORT DcmItem * @param tag attribute tag of the element to be created. VR of tag may be * updated within the method. * @param length attribute value length of the element to be created - * @param privateCreatorCache cache object for private creator strings in - * the current dataset + * @param privateCreatorCache cache object for private creator elements + * in the current dataset * @param readAsUN flag indicating whether parser is currently handling * UN element that must be read in implicit VR little endian; updated * upon return @@ -1487,7 +1500,7 @@ class DCMTK_DCMDATA_EXPORT DcmItem */ static OFBool foundVR(const Uint8* atposition); - /// cache for private creator tags and names + /// cache for private creator tags and identifiers DcmPrivateTagCache privateCreatorCache; }; diff --git a/dcmdata/include/dcmtk/dcmdata/dcostrmf.h b/dcmdata/include/dcmtk/dcmdata/dcostrmf.h index ce745146..fe60c6b6 100644 --- a/dcmdata/include/dcmtk/dcmdata/dcostrmf.h +++ b/dcmdata/include/dcmtk/dcmdata/dcostrmf.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1994-2021, OFFIS e.V. + * Copyright (C) 1994-2022, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -26,6 +26,8 @@ #include "dcmtk/config/osconfig.h" #include "dcmtk/dcmdata/dcostrma.h" +class OFFile; + /** consumer class that stores data in a plain file. */ class DCMTK_DCMDATA_EXPORT DcmFileConsumer: public DcmConsumer @@ -42,6 +44,13 @@ public: */ DcmFileConsumer(FILE *file); + /** constructor + * @param OFFile instance, file must already be open for writing, + * and the OFFile object must remain valid as long as this instance + * exists. + */ + DcmFileConsumer(OFFile& file); + /// destructor virtual ~DcmFileConsumer(); @@ -95,8 +104,12 @@ private: /// private unimplemented copy assignment operator DcmFileConsumer& operator=(const DcmFileConsumer&); - /// the file we're actually writing to - OFFile file_; + /// container encapsulating a FILE * + OFFile file_container_; + + /// reference the file we actually writing to. + /// Points to file_container_ in most, but not all cases + OFFile& file_; /// status OFCondition status_; @@ -119,6 +132,13 @@ public: */ DcmOutputFileStream(FILE *file); + /** constructor + * @param OFFile instance, file must already be open for writing, + * and the OFFile object must remain valid as long as this instance + * exists. + */ + DcmOutputFileStream(OFFile& file); + /// destructor virtual ~DcmOutputFileStream(); diff --git a/dcmdata/include/dcmtk/dcmdata/dcpath.h b/dcmdata/include/dcmtk/dcmdata/dcpath.h index 84a788c2..31a6357a 100644 --- a/dcmdata/include/dcmtk/dcmdata/dcpath.h +++ b/dcmdata/include/dcmtk/dcmdata/dcpath.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2008-2022, OFFIS e.V. + * Copyright (C) 2008-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -245,10 +245,10 @@ public: */ void checkPrivateReservations(const OFBool doChecking); - /** Returns private creator string for given tag + /** Returns private creator identifier for given tag * @param item [in] The item to search in * @param tagKey [in] The tag key for which a reservation should be looked up - * @param privateCreator [out] The private creator string + * @param privateCreator [out] The private creator identifier * @return Return EC_Normal if reservation was found (can be empty, though), * EC_TagNotFound if no private creator tag exists, error otherwise */ @@ -258,8 +258,8 @@ public: * tag key exists. * @param item [in] The item to search in * @param tagKey [in/out] The tag to be checked. - * @param privateCreator [in] The private creator to check for (if known, - * can be left empty) + * @param privateCreator [in] The private creator identifier to check for + * (if known, can be left empty) * @return Return EC_Normal if reservation checking was successful. * Otherwise an error code is returned. */ @@ -272,8 +272,8 @@ public: * @param item [in] The item to search in * @param tag [in/out] The tag to be checked. Will be updated with VR and * private creator. - * @param privateCreator [in] The private creator to check for (if known, - * can be left empty) + * @param privateCreator [in] The private creator identifier to check for + * (if known, can be left empty) * @return Return EC_Normal if reservation checking and updating the * tag was successful. Otherwise an error code is returned. */ diff --git a/dcmdata/include/dcmtk/dcmdata/dcpcache.h b/dcmdata/include/dcmtk/dcmdata/dcpcache.h index eeb2b3e9..e9f4e7f4 100644 --- a/dcmdata/include/dcmtk/dcmdata/dcpcache.h +++ b/dcmdata/include/dcmtk/dcmdata/dcpcache.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1994-2011, OFFIS e.V. + * Copyright (C) 1994-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -23,10 +23,10 @@ #define DCPCACHE_H #include "dcmtk/config/osconfig.h" /* make sure OS specific configuration is included first */ -#include "dcmtk/ofstd/oftypes.h" /* for OFBool */ -#include "dcmtk/ofstd/oflist.h" /* for OFList */ -#include "dcmtk/ofstd/ofstring.h" /* for OFString */ -#include "dcmtk/dcmdata/dctagkey.h" /* for DcmTagKey */ +#include "dcmtk/ofstd/oftypes.h" /* for OFBool */ +#include "dcmtk/ofstd/oflist.h" /* for OFList */ +#include "dcmtk/ofstd/ofstring.h" /* for OFString */ +#include "dcmtk/dcmdata/dctagkey.h" /* for DcmTagKey */ class DcmObject; @@ -37,14 +37,14 @@ class DCMTK_DCMDATA_EXPORT DcmPrivateTagCacheEntry public: /** constructor * @param tk tag key for private creator element - * @param pc private creator name, must not be NULL or empty string + * @param pc private creator identifier, must not be NULL or empty string */ DcmPrivateTagCacheEntry(const DcmTagKey& tk, const char *pc); /// destructor virtual ~DcmPrivateTagCacheEntry(); - /** returns the private creator name + /** returns the private creator identifier */ const char *getPrivateCreator() const; @@ -60,14 +60,14 @@ private: /// private undefined copy constructor DcmPrivateTagCacheEntry(const DcmPrivateTagCacheEntry&); - + /// private undefined copy assignment operator DcmPrivateTagCacheEntry& operator=(const DcmPrivateTagCacheEntry&); /// the tag key of the private creator element DcmTagKey tagKey; - /// the private creator name + /// the private creator identifier OFString privateCreator; }; @@ -87,15 +87,15 @@ public: /// resets the cache to default-constructed state void clear(); - /** looks up the private creator name for the given private tag + /** looks up the private creator identifier for the given private tag * @param tk private tag to check - * @return private creator name if found, NULL otherwise. + * @return private creator identifier if found, NULL otherwise. */ const char *findPrivateCreator(const DcmTagKey& tk) const; /** updates the private creator cache with the given object. - * If the object points to a private creator element, - * the tag key and creator code are added to the cache. + * If the object points to a private creator element, the + * tag key and creator identifier are added to the cache. * Otherwise, the cache remains unmodified. * @param dobj the given object */ @@ -105,7 +105,7 @@ private: /// private undefined copy constructor DcmPrivateTagCache(const DcmPrivateTagCache&); - + /// private undefined copy assignment operator DcmPrivateTagCache& operator=(const DcmPrivateTagCache&); diff --git a/dcmdata/include/dcmtk/dcmdata/dctag.h b/dcmdata/include/dcmtk/dcmdata/dctag.h index ba1368ee..e279a61e 100644 --- a/dcmdata/include/dcmtk/dcmdata/dctag.h +++ b/dcmdata/include/dcmtk/dcmdata/dctag.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1994-2015, OFFIS e.V. + * Copyright (C) 1994-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -45,7 +45,7 @@ /** this class encapsulates an attribute tag (group, element) and a VR. - * It maintains a private creator name for private tags and caches + * It maintains a private creator identifier for private tags and caches * the attribute name, once it is looked up in the data dictionary. * This class maintains the interface to the DICOM data dictionary, * i.e. performs look-ups of attribute VR and name in the background. @@ -60,21 +60,21 @@ public: DcmTag(); /** constructor. - * Initializes group/element from given tag key and performs - * a dictionary lookup for the VR. The lookup also considers - * private tags if the private creator is defined (not NULL). + * Initializes group/element from given tag key and performs a dictionary + * lookup for the VR. The lookup also considers private tags if the + * private creator identifier is defined (not NULL). * @param akey tag key - * @param privCreator private creator code (optional) + * @param privCreator private creator identifier (optional) */ DcmTag(const DcmTagKey& akey, const char *privCreator = NULL); /** constructor. - * Initializes group/element from given parameters and performs - * a dictionary lookup for the VR. The lookup also considers - * private tags if the private creator is defined (not NULL). + * Initializes group/element from given parameters and performs a + * dictionary lookup for the VR. The lookup also considers private tags + * if the private creator identifier is defined (not NULL). * @param g tag group * @param e tag element - * @param privCreator private creator code (optional) + * @param privCreator private creator identifier (optional) */ DcmTag(Uint16 g, Uint16 e, const char *privCreator = NULL); @@ -95,15 +95,42 @@ public: */ DcmTag(Uint16 g, Uint16 e, const DcmVR& avr); - /// copy constructor + /** copy constructor + * @param tag tag to be copied + */ DcmTag(const DcmTag& tag); + /** constructor. + * Initializes tag from given parameter, but uses the specified VR. + * This constructor is e.g. useful for attributes with multiple VRs. + * No dictionary lookup needed/performed. + * @param tag tag to be copied + * @param avr VR to be used + */ + DcmTag(const DcmTag& tag, const DcmVR& avr); + /// destructor ~DcmTag(); /// copy assignment operator DcmTag& operator=(const DcmTag& tag); + /** comparison operator. Returns true if both group and element number + * as well as private creator identifier (if present) are the same. + * Please note that the VR is not used for comparison. + * @param tag tag to compare with + * @return true if tags are the same + */ + OFBool operator==(const DcmTag& tag) const; + + /** negation operator. Returns true if either group or element number + * or private creator identifier (if present) are not the same. + * Please note that the VR is not used for comparison. + * @param tag tag to compare with + * @return true if tags are not the same + */ + OFBool operator!=(const DcmTag& tag) const; + /// set specific VR DcmVR setVR(const DcmVR& avr); @@ -111,22 +138,35 @@ public: DcmVR getVR() const { return vr; } /// returns VR code - DcmEVR getEVR() const { return vr.getEVR(); } + DcmEVR getEVR() const + { + return vr.getEVR(); + } /// returns name of VR - const char* getVRName() const { return vr.getVRName(); } + const char* getVRName() const + { + return vr.getVRName(); + } /** returns tag group * @return tag group */ - Uint16 getGTag() const { return getGroup(); } + Uint16 getGTag() const + { + return getGroup(); + } /** returns tag element * @return tag element */ - Uint16 getETag() const { return getElement(); } + Uint16 getETag() const + { + return getElement(); + } - /** returns a copy of the tag key by value + /** returns a copy of the tag key by value. + * @note In most cases, the method getTagKey() should be preferred. * @return copy of tag key, by value */ DcmTagKey getXTag() const @@ -134,37 +174,45 @@ public: return * OFstatic_cast(const DcmTagKey *, this); } + /** returns tag key as a const reference + * @return tag key + */ + const DcmTagKey &getTagKey() const + { + return *this; + } + /** returns name of attribute tag. - * If name has not been accessed before, a dictionary lookup - * under consideration of the current private creator code - * is performed. If no attribute name is found, a default - * name is used. Never returns NULL. + * If name has not been accessed before, a dictionary lookup under + * consideration of the current private creator identifier is performed. + * If no attribute name is found, a default name is used. Never returns + * NULL. * @return attribute tag name, never NULL. */ const char* getTagName(); - /** returns the current private creator string for this object - * if any, NULL otherwise. - * @return creator code if present, NULL otherwise + /** returns the current private creator identifier for this object if any, + * NULL otherwise. + * @return private creator identifier if present, NULL otherwise */ const char* getPrivateCreator() const; - /** assigns a private creator code and deletes a possibly - * cached attribute name since the attribute name could - * change if a different private creator code is used. - * @param privCreator private creator code, may be NULL + /** assigns a private creator identifier and deletes a possibly cached + * attribute name since the attribute name could change if a different + * private creator identifier is used. + * @param privCreator private creator identifier, may be NULL */ void setPrivateCreator(const char *privCreator); /** performs a look-up of the VR for the current tag key in the dictionary, - * under consideration of the private creator (if defined). + * under consideration of the private creator identifier (if defined). * If a dictionary entry is found, the VR of this object is copied * from the dictionary entry, otherwise the VR remains unmodified. */ void lookupVRinDictionary(); - /** returns true if a data element with the given tag and VR - * can be digitally signed, false otherwise + /** returns true if a data element with the given tag and VR can be + * digitally signed, false otherwise * @return true if signable, false otherwise */ OFBool isSignable() const; @@ -174,7 +222,10 @@ public: OFBool isUnknownVR() const; /// returns current status flag - OFCondition error() const { return errorFlag; } + OFCondition error() const + { + return errorFlag; + } // --- static helper functions --- @@ -191,6 +242,12 @@ public: */ static OFCondition findTagFromName(const char *name, DcmTag &value); + + // --- re-introduce methods from base class + + using DcmTagKey::operator==; + using DcmTagKey::operator!=; + private: /** replace tagName with copy of given string @@ -199,7 +256,7 @@ private: void updateTagName(const char *c); /** replace privateCreator with copy of given string - * @param c new private creator + * @param c new private creator identifier */ void updatePrivateCreator(const char *c); @@ -209,7 +266,8 @@ private: /// name of this attribute tag, remains NULL unless getTagName() is called char *tagName; - /// private creator code, remains NULL unless setPrivateCreator() is called + /// private creator identifier, remains NULL unless setPrivateCreator() is + /// called char *privateCreator; /// current error code, EC_Normal if a valid VR for the tag is known diff --git a/dcmdata/include/dcmtk/dcmdata/dctagkey.h b/dcmdata/include/dcmtk/dcmdata/dctagkey.h index 5897f14a..f7e0fefb 100644 --- a/dcmdata/include/dcmtk/dcmdata/dctagkey.h +++ b/dcmdata/include/dcmtk/dcmdata/dctagkey.h @@ -135,7 +135,7 @@ public: */ inline DcmTagKey& operator = (const DcmTagKey& key); - /** Comparison operator. Returns true if both group and element number + /** comparison operator. Returns true if both group and element number * are the same. * @param key key to compare with * @return true if tag keys are the same diff --git a/dcmdata/include/dcmtk/dcmdata/dcuid.h b/dcmdata/include/dcmtk/dcmdata/dcuid.h index d8f63bd3..5c2f4cbe 100644 --- a/dcmdata/include/dcmtk/dcmdata/dcuid.h +++ b/dcmdata/include/dcmtk/dcmdata/dcuid.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1994-2022, OFFIS e.V. + * Copyright (C) 1994-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -67,9 +67,10 @@ DCMTK_DCMDATA_EXPORT const char* dcmFindUIDFromName(const char* name); /** return the keyword of a UID. * Performs a table lookup and returns a pointer to a read-only string. * @param uid UID string for which the keyword is to be looked up - * @return keyword string or NULL if UID is unknown + * @param defaultValue default to return if UID not known + * @return keyword string or defaultValue if UID is unknown */ -DCMTK_DCMDATA_EXPORT const char* dcmFindKeywordOfUID(const char* uid); +DCMTK_DCMDATA_EXPORT const char* dcmFindKeywordOfUID(const char* uid, const char* defaultValue = NULL); /** return the UID of a keyword. * Performs a table lookup and returns a pointer to a read-only string. @@ -264,21 +265,35 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID #endif /* -** Useful UID prefixes. These can be whatever you want. +** Useful UID prefixes. ** ** These site UIDs are arbitrary, non-standard, with no meaning ** and can be changed at any time. Do _not_ rely on these values. -** Do _not_ assume any semantics when using these suffixes. +** Do _not_ assume any semantics when using these prefixes. +** +** The DCMTK currently uses the following site-specific UID prefixes: +** - SITE_UID_ROOT + ".1" ** +** In addition, the DCMTK uses the following UID prefixes based on the +** organization root that is registered for OFFIS, which is identical +* to SITE_UID_ROOT if not redefined: +** - OFFIS_UID_ROOT + ".0" +** - OFFIS_UID_ROOT + ".4" +** +** Note: For application-specific purposes that require specific +** semantics, the UID prefix SITE_UID_ROOT + ".9" may be used +** in user code. DCMTK does not and will not use this UID prefix +** internally. Of course, this UID prefix should preferably be +** used with a site-specific SITE_UID_ROOT (see above). */ -/// UID root for study instance UIDs +/// UID root for Study Instance UIDs #define SITE_STUDY_UID_ROOT SITE_UID_ROOT ".1.2" -/// UID root for series instance UIDs +/// UID root for Series Instance UIDs #define SITE_SERIES_UID_ROOT SITE_UID_ROOT ".1.3" -/// UID root for SOP instance UIDs +/// UID root for SOP Instance UIDs #define SITE_INSTANCE_UID_ROOT SITE_UID_ROOT ".1.4" /** A private SOP Class UID which is used in a file meta-header when no @@ -361,18 +376,32 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID #define UID_JPIPReferencedDeflateTransferSyntax "1.2.840.10008.1.2.4.95" /// MPEG2 Main Profile @ Main Level (changed with DICOM 2016e to: MPEG2 Main Profile / Main Level) #define UID_MPEG2MainProfileAtMainLevelTransferSyntax "1.2.840.10008.1.2.4.100" +/// Fragmentable MPEG2 Main Profile / Main Level +#define UID_FragmentableMPEG2MainProfileMainLevelTransferSyntax "1.2.840.10008.1.2.4.100.1" /// MPEG2 Main Profile @ High Level (changed with DICOM 2016e to: MPEG2 Main Profile / High Level) #define UID_MPEG2MainProfileAtHighLevelTransferSyntax "1.2.840.10008.1.2.4.101" +/// Fragmentable MPEG-4 AVC/H.264 High Profile / Level 4.1 +#define UID_FragmentableMPEG2MainProfileHighLevelTransferSyntax "1.2.840.10008.1.2.4.101.1" /// MPEG-4 AVC/H.264 High Profile / Level 4.1 #define UID_MPEG4HighProfileLevel4_1TransferSyntax "1.2.840.10008.1.2.4.102" +/// Fragmentable MPEG-4 AVC/H.264 High Profile / Level 4.1 +#define UID_FragmentableMPEG4HighProfileLevel4_1TransferSyntax "1.2.840.10008.1.2.4.102.1" /// MPEG-4 AVC/H.264 BD-compatible High Profile / Level 4.1 #define UID_MPEG4BDcompatibleHighProfileLevel4_1TransferSyntax "1.2.840.10008.1.2.4.103" +/// Fragmentable MPEG-4 AVC/H.264 BD-compatible High Profile / Level 4.1 +#define UID_FragmentableMPEG4BDcompatibleHighProfileLevel4_1TransferSyntax "1.2.840.10008.1.2.4.103.1" /// MPEG-4 AVC/H.264 High Profile / Level 4.2 For 2D Video #define UID_MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax "1.2.840.10008.1.2.4.104" +/// Fragmentable MPEG-4 AVC/H.264 High Profile / Level 4.2 For 2D Video +#define UID_FragmentableMPEG4HighProfileLevel4_2_For2DVideoTransferSyntax "1.2.840.10008.1.2.4.104.1" /// MPEG-4 AVC/H.264 High Profile / Level 4.2 For 3D Video #define UID_MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax "1.2.840.10008.1.2.4.105" +/// Fragmentable MPEG-4 AVC/H.264 High Profile / Level 4.2 For 3D Video +#define UID_FragmentableMPEG4HighProfileLevel4_2_For3DVideoTransferSyntax "1.2.840.10008.1.2.4.105.1" /// MPEG-4 AVC/H.264 Stereo High Profile / Level 4.2 #define UID_MPEG4StereoHighProfileLevel4_2TransferSyntax "1.2.840.10008.1.2.4.106" +/// Fragmentable MPEG-4 AVC/H.264 Stereo High Profile / Level 4.2 +#define UID_FragmentableMPEG4StereoHighProfileLevel4_2TransferSyntax "1.2.840.10008.1.2.4.106.1" /// HEVC/H.265 Main Profile / Level 5.1 #define UID_HEVCMainProfileLevel5_1TransferSyntax "1.2.840.10008.1.2.4.107" /// HEVC/H.265 Main 10 Profile / Level 5.1 @@ -391,13 +420,13 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID * on a DICOM storage medium. It was never used for network communication * or encoding of DICOM objects. */ -#define UID_RFC2557MIMEEncapsulationTransferSyntax "1.2.840.10008.1.2.6.1" +#define UID_RETIRED_RFC2557MIMEEncapsulationTransferSyntax "1.2.840.10008.1.2.6.1" /** XML Encoding (RETIRED) was only a pseudo transfer syntax used to refer to * encapsulated HL7 CDA documents from a DICOMDIR when stored on a DICOM storage * medium. It was never used for network communication or encoding of DICOM objects. */ -#define UID_XMLEncodingTransferSyntax "1.2.840.10008.1.2.6.2" +#define UID_RETIRED_XMLEncodingTransferSyntax "1.2.840.10008.1.2.6.2" /** Private transfer syntax defined by GE. This transfer syntax is identical to * Implicit VR Little Endian, except that Pixel Data are encoded in big endian. @@ -433,6 +462,7 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID #define UID_RETIRED_UltrasoundImageStorage "1.2.840.10008.5.1.4.1.1.6" #define UID_UltrasoundImageStorage "1.2.840.10008.5.1.4.1.1.6.1" #define UID_EnhancedUSVolumeStorage "1.2.840.10008.5.1.4.1.1.6.2" +#define UID_PhotoacousticImageStorage "1.2.840.10008.5.1.4.1.1.6.3" #define UID_SecondaryCaptureImageStorage "1.2.840.10008.5.1.4.1.1.7" #define UID_MultiframeSingleBitSecondaryCaptureImageStorage "1.2.840.10008.5.1.4.1.1.7.1" #define UID_MultiframeGrayscaleByteSecondaryCaptureImageStorage "1.2.840.10008.5.1.4.1.1.7.2" @@ -443,6 +473,7 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID #define UID_TwelveLeadECGWaveformStorage "1.2.840.10008.5.1.4.1.1.9.1.1" #define UID_GeneralECGWaveformStorage "1.2.840.10008.5.1.4.1.1.9.1.2" #define UID_AmbulatoryECGWaveformStorage "1.2.840.10008.5.1.4.1.1.9.1.3" +#define UID_General32BitECGWaveformStorage "1.2.840.10008.5.1.4.1.1.9.1.4" #define UID_HemodynamicWaveformStorage "1.2.840.10008.5.1.4.1.1.9.2.1" #define UID_CardiacElectrophysiologyWaveformStorage "1.2.840.10008.5.1.4.1.1.9.3.1" #define UID_BasicVoiceAudioWaveformStorage "1.2.840.10008.5.1.4.1.1.9.4.1" @@ -468,6 +499,7 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID #define UID_VolumeRenderingVolumetricPresentationStateStorage "1.2.840.10008.5.1.4.1.1.11.9" #define UID_SegmentedVolumeRenderingVolumetricPresentationStateStorage "1.2.840.10008.5.1.4.1.1.11.10" #define UID_MultipleVolumeRenderingVolumetricPresentationStateStorage "1.2.840.10008.5.1.4.1.1.11.11" +#define UID_VariableModalityLUTSoftcopyPresentationStateStorage "1.2.840.10008.5.1.4.1.1.11.12" #define UID_XRayAngiographicImageStorage "1.2.840.10008.5.1.4.1.1.12.1" #define UID_EnhancedXAImageStorage "1.2.840.10008.5.1.4.1.1.12.1.1" #define UID_XRayRadiofluoroscopicImageStorage "1.2.840.10008.5.1.4.1.1.12.2" @@ -581,12 +613,11 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID #define UID_RoboticRadiationRecordStorage "1.2.840.10008.5.1.4.1.1.481.20" #define UID_RTRadiationSetDeliveryInstructionStorage "1.2.840.10008.5.1.4.1.1.481.21" #define UID_RTTreatmentPreparationStorage "1.2.840.10008.5.1.4.1.1.481.22" +#define UID_EnhancedRTImageStorage "1.2.840.10008.5.1.4.1.1.481.23" +#define UID_EnhancedContinuousRTImageStorage "1.2.840.10008.5.1.4.1.1.481.24" +#define UID_RTPatientPositionAcquisitionInstructionStorage "1.2.840.10008.5.1.4.1.1.481.25" #define UID_RTBeamsDeliveryInstructionStorage "1.2.840.10008.5.1.4.34.7" #define UID_RTBrachyApplicationSetupDeliveryInstructionStorage "1.2.840.10008.5.1.4.34.10" -#define UID_HangingProtocolStorage "1.2.840.10008.5.1.4.38.1" -#define UID_GenericImplantTemplateStorage "1.2.840.10008.5.1.4.43.1" -#define UID_ImplantAssemblyTemplateStorage "1.2.840.10008.5.1.4.44.1" -#define UID_ImplantTemplateGroupStorage "1.2.840.10008.5.1.4.45.1" // DICOMDIR (was UID_BasicDirectoryStorageSOPClass in DCMTK versions prior to 3.5.3) #define UID_MediaStorageDirectoryStorage "1.2.840.10008.1.3.10" @@ -652,7 +683,8 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID #define UID_RETIRED_StorageCommitmentPullModelSOPClass "1.2.840.10008.1.20.2" #define UID_RETIRED_StorageCommitmentPullModelSOPInstance "1.2.840.10008.1.20.2.1" -// Hanging Protocols +// Hanging Protocol Storage and Query/Retrieve +#define UID_HangingProtocolStorage "1.2.840.10008.5.1.4.38.1" #define UID_FINDHangingProtocolInformationModel "1.2.840.10008.5.1.4.38.2" #define UID_MOVEHangingProtocolInformationModel "1.2.840.10008.5.1.4.38.3" #define UID_GETHangingProtocolInformationModel "1.2.840.10008.5.1.4.38.4" @@ -669,13 +701,18 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID #define UID_MOVEColorPaletteInformationModel "1.2.840.10008.5.1.4.39.3" #define UID_GETColorPaletteInformationModel "1.2.840.10008.5.1.4.39.4" -// Implant Template Query/Retrieve +// Implant Template Storage and Query/Retrieve +#define UID_GenericImplantTemplateStorage "1.2.840.10008.5.1.4.43.1" #define UID_FINDGenericImplantTemplateInformationModel "1.2.840.10008.5.1.4.43.2" #define UID_MOVEGenericImplantTemplateInformationModel "1.2.840.10008.5.1.4.43.3" #define UID_GETGenericImplantTemplateInformationModel "1.2.840.10008.5.1.4.43.4" + +#define UID_ImplantAssemblyTemplateStorage "1.2.840.10008.5.1.4.44.1" #define UID_FINDImplantAssemblyTemplateInformationModel "1.2.840.10008.5.1.4.44.2" #define UID_MOVEImplantAssemblyTemplateInformationModel "1.2.840.10008.5.1.4.44.3" #define UID_GETImplantAssemblyTemplateInformationModel "1.2.840.10008.5.1.4.44.4" + +#define UID_ImplantTemplateGroupStorage "1.2.840.10008.5.1.4.45.1" #define UID_FINDImplantTemplateGroupInformationModel "1.2.840.10008.5.1.4.45.2" #define UID_MOVEImplantTemplateGroupInformationModel "1.2.840.10008.5.1.4.45.3" #define UID_GETImplantTemplateGroupInformationModel "1.2.840.10008.5.1.4.45.4" @@ -690,6 +727,15 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID #define UID_MOVEProtocolApprovalInformationModel "1.2.840.10008.5.1.4.1.1.200.5" #define UID_GETProtocolApprovalInformationModel "1.2.840.10008.5.1.4.1.1.200.6" +// Inventory Storage, Query/Retrieve, and related Services +#define UID_InventoryStorage "1.2.840.10008.5.1.4.1.1.201.1" +#define UID_FINDInventory "1.2.840.10008.5.1.4.1.1.201.2" +#define UID_MOVEInventory "1.2.840.10008.5.1.4.1.1.201.3" +#define UID_GETInventory "1.2.840.10008.5.1.4.1.1.201.4" +#define UID_InventoryCreation "1.2.840.10008.5.1.4.1.1.201.5" +#define UID_RepositoryQuery "1.2.840.10008.5.1.4.1.1.201.6" +#define UID_StorageManagementSOPInstance "1.2.840.10008.5.1.4.1.1.201.1.1" + // Print Management #define UID_BasicFilmSessionSOPClass "1.2.840.10008.5.1.1.1" #define UID_BasicFilmBoxSOPClass "1.2.840.10008.5.1.1.2" diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrdt.h b/dcmdata/include/dcmtk/dcmdata/dcvrdt.h index 5e950a7c..25d7ef12 100644 --- a/dcmdata/include/dcmtk/dcmdata/dcvrdt.h +++ b/dcmdata/include/dcmtk/dcmdata/dcvrdt.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1994-2018, OFFIS e.V. + * Copyright (C) 1994-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -129,8 +129,8 @@ class DCMTK_DCMDATA_EXPORT DcmDateTime OFCondition setOFDateTime(const OFDateTime &dateTimeValue); /** get the current element value in OFDateTime format. - * Please note that the element value is expected to be in valid DICOM DT format - * ("YYYYMMDD[HH[MM[SS[.FFFFFF]]]][&ZZZZ]"). If the optional time zone ("&ZZZZ") is + * Please note that the element value is expected to be in the DICOM DT format + * "YYYYMMDD[HH[MM[SS[.FFFFFF]]]][&ZZZZ]". If the optional time zone ("&ZZZZ") is * missing the local time zone is used. * If this function fails the result variable 'dateTimeValue' is cleared automatically. * @param dateTimeValue reference to OFDateTime variable where the result is stored @@ -143,7 +143,7 @@ class DCMTK_DCMDATA_EXPORT DcmDateTime /** get the current element value in ISO date/time format. * The ISO date/time format supported by this function is "YYYY-MM-DD[ HH:MM[:SS[.FFFFFF]]] * [&HH:MM]" where the brackets enclose optional parts. Please note that the element value - * is expected to be in valid DICOM DT format ("YYYYMMDD[HH[MM[SS[.FFFFFF]]]][&ZZZZ]"). + * is expected to be in the DICOM DT format "YYYYMMDD[HH[MM[SS[.FFFFFF]]]][&ZZZZ]". * If this function fails or the current element value is empty, the result variable * 'formattedDateTime' is cleared automatically. * @param formattedDateTime reference to string variable where the result is stored @@ -255,7 +255,7 @@ class DCMTK_DCMDATA_EXPORT DcmDateTime /** get the specified DICOM datetime value in ISO format. * The ISO date/time format supported by this function is "YYYY-MM-DD[ HH:MM[:SS[.FFFFFF]]] * [&HH:MM]" where the brackets enclose optional parts. Please note that the specified - * value is expected to be in valid DICOM DT format ("YYYYMMDD[HH[MM[SS[.FFFFFF]]]][&ZZZZ]"). + * value is expected to be in the DICOM DT format "YYYYMMDD[HH[MM[SS[.FFFFFF]]]][&ZZZZ]". * If this function fails or the specified DICOM datetime value is empty, the result * variable 'formattedDateTime' is cleared automatically. * @param dicomDateTime string value in DICOM DT format to be converted to ISO format diff --git a/dcmdata/include/dcmtk/dcmdata/dcxfer.h b/dcmdata/include/dcmtk/dcmdata/dcxfer.h index 6ac2d79e..7a561199 100644 --- a/dcmdata/include/dcmtk/dcmdata/dcxfer.h +++ b/dcmdata/include/dcmtk/dcmdata/dcxfer.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1994-2022, OFFIS e.V. + * Copyright (C) 1994-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -103,24 +103,38 @@ typedef enum { EXS_JPIPReferencedDeflate = 31, /// MPEG2 Main Profile at Main Level EXS_MPEG2MainProfileAtMainLevel = 32, + /// Fragmentable MPEG2 Main Profile / Main Level + EXS_FragmentableMPEG2MainProfileMainLevel = 33, /// MPEG2 Main Profile at High Level - EXS_MPEG2MainProfileAtHighLevel = 33, + EXS_MPEG2MainProfileAtHighLevel = 34, + /// Fragmentable MPEG2 Main Profile / High Level + EXS_FragmentableMPEG2MainProfileHighLevel = 35, /// MPEG4 High Profile / Level 4.1 - EXS_MPEG4HighProfileLevel4_1 = 34, + EXS_MPEG4HighProfileLevel4_1 = 36, + /// Fragmentable MPEG4 High Profile / Level 4.1 + EXS_FragmentableMPEG4HighProfileLevel4_1 = 37, /// MPEG4 BD-compatible High Profile / Level 4.1 - EXS_MPEG4BDcompatibleHighProfileLevel4_1 = 35, + EXS_MPEG4BDcompatibleHighProfileLevel4_1 = 38, + /// Fragmentable MPEG4 BD-compatible High Profile / Level 4.1 + EXS_FragmentableMPEG4BDcompatibleHighProfileLevel4_1 = 39, /// MPEG4 High Profile / Level 4.2 For 2D Video - EXS_MPEG4HighProfileLevel4_2_For2DVideo = 36, + EXS_MPEG4HighProfileLevel4_2_For2DVideo = 40, + /// Fragmentable MPEG4 High Profile / Level 4.2 For 2D Video + EXS_FragmentableMPEG4HighProfileLevel4_2_For2DVideo = 41, /// MPEG4 High Profile / Level 4.2 For 3D Video - EXS_MPEG4HighProfileLevel4_2_For3DVideo = 37, + EXS_MPEG4HighProfileLevel4_2_For3DVideo = 42, + /// Fragmentable MPEG4 Stereo High Profile / Level 4.2 + EXS_FragmentableMPEG4HighProfileLevel4_2_For3DVideo = 43, /// MPEG4 Stereo High Profile / Level 4.2 - EXS_MPEG4StereoHighProfileLevel4_2 = 38, + EXS_MPEG4StereoHighProfileLevel4_2 = 44, + /// Fragmentable HEVC/H.265 Main Profile / Level 5.1 + EXS_FragmentableMPEG4StereoHighProfileLevel4_2 = 45, /// HEVC/H.265 Main Profile / Level 5.1 - EXS_HEVCMainProfileLevel5_1 = 39, + EXS_HEVCMainProfileLevel5_1 = 46, /// HEVC/H.265 Main 10 Profile / Level 5.1 - EXS_HEVCMain10ProfileLevel5_1 = 40, + EXS_HEVCMain10ProfileLevel5_1 = 47, /// Private GE Little Endian Implicit with big endian pixel data - EXS_PrivateGE_LEI_WithBigEndianPixelData = 41 + EXS_PrivateGE_LEI_WithBigEndianPixelData = 48 } E_TransferSyntax; /** enumeration of byte orders @@ -180,42 +194,93 @@ public: /** constructor * @param xfer transfer syntax enum */ - DcmXfer( E_TransferSyntax xfer ); + DcmXfer(E_TransferSyntax xfer); /** constructor * @param xferName_xferID transfer syntax name as string */ - DcmXfer( const char *xferName_xferID ); + DcmXfer(const char *xferName_xferID); /// copy constructor - DcmXfer( const DcmXfer &newXfer ); + DcmXfer(const DcmXfer &newXfer); /// destructor ~DcmXfer(); /// assignment operator for transfer syntax enum - DcmXfer & operator = ( const E_TransferSyntax xfer ); + DcmXfer & operator=(const E_TransferSyntax xfer); /// copy assignment operator - DcmXfer & operator = ( const DcmXfer &newtag ); + DcmXfer & operator=(const DcmXfer &newXfer); + + /** comparison operator + * @param xfer transfer syntax enum to compare with + * @return true if equal, false if not equal + */ + OFBool operator==(const E_TransferSyntax xfer) const + { + return xferSyn == xfer; + } + + /** comparison operator + * @param xfer transfer syntax to compare with + * @return true if equal, false if not equal + */ + OFBool operator==(const DcmXfer &xfer) const + { + return xferSyn == xfer.getXfer(); + } + + /** comparison operator + * @param xfer transfer syntax enum to compare with + * @return true if not equal, false if equal + */ + OFBool operator!=(const E_TransferSyntax xfer) const + { + return xferSyn != xfer; + } + + /** comparison operator + * @param xfer transfer syntax to compare with + * @return true if not equal, false if equal + */ + OFBool operator!=(const DcmXfer &xfer) const + { + return xferSyn != xfer.getXfer(); + } /// return transfer syntax enum for this transfer syntax - inline E_TransferSyntax getXfer() const { return xferSyn; } + inline E_TransferSyntax getXfer() const + { + return xferSyn; + } /// return byte order for this transfer syntax - inline E_ByteOrder getByteOrder() const { return byteOrder; } + inline E_ByteOrder getByteOrder() const + { + return byteOrder; + } /// return byte order for this transfer syntax - inline E_ByteOrder getPixelDataByteOrder() const { return pixelDataByteOrder; } + inline E_ByteOrder getPixelDataByteOrder() const + { + return pixelDataByteOrder; + } /// return name string for this transfer syntax - inline const char* getXferName() const { return xferName; } + inline const char* getXferName() const + { + return xferName; + } /// return keyword string for this transfer syntax const char* getXferKeyword() const; /// return UID string for this transfer syntax - inline const char* getXferID() const { return xferID; } + inline const char* getXferID() const + { + return xferID; + } /// return true if transfer syntax is little endian, false otherwise inline OFBool isLittleEndian() const @@ -224,13 +289,22 @@ public: } /// return true if transfer syntax is big endian, false otherwise - inline OFBool isBigEndian() const { return byteOrder == EBO_BigEndian; } + inline OFBool isBigEndian() const + { + return byteOrder == EBO_BigEndian; + } /// return true if transfer syntax is implicit VR, false otherwise - inline OFBool isImplicitVR() const { return vrType == EVT_Implicit; } + inline OFBool isImplicitVR() const + { + return vrType == EVT_Implicit; + } /// return true if transfer syntax is explicit VR, false otherwise - inline OFBool isExplicitVR() const { return vrType == EVT_Explicit; } + inline OFBool isExplicitVR() const + { + return vrType == EVT_Explicit; + } /// return true if transfer syntax is encapsulated, false otherwise inline OFBool isEncapsulated() const @@ -249,14 +323,20 @@ public: * When called for a non-JPEG transfer syntax, returns 0. * @return 8-bit JPEG process ID */ - inline Uint32 getJPEGProcess8Bit() const { return JPEGProcess8; } + inline Uint32 getJPEGProcess8Bit() const + { + return JPEGProcess8; + } /** return 12-bit JPEG process ID for this transfer syntax. * Lossy JPEG transfer syntaxes support two alternative JPEG encoding processes - 8 and 12 bits. * When called for a non-JPEG transfer syntax, returns 0. * @return 12-bit JPEG process ID */ - inline Uint32 getJPEGProcess12Bit() const { return JPEGProcess12;} + inline Uint32 getJPEGProcess12Bit() const + { + return JPEGProcess12; + } /** check whether transfer syntax uses a lossy compression * @return true if transfer syntax uses a lossy compression, false otherwise @@ -300,6 +380,15 @@ public: return referenced; } + /** check whether transfer syntax allows the encapsulated pixel stream of + * encoded pixel data to be split into one or more fragments + * @return true if transfer syntax supports fragmentable pixel data + */ + inline OFBool isFragmentable() const + { + return fragmentable; + } + /** return the number of bytes needed to describe the tag, length, VR * and any reserved fields for this transfer syntax when encoding the * specified VR. @@ -348,6 +437,9 @@ private: /// flag indicating whether this transfer syntax uses a pixel data URL reference OFBool referenced; + /// flag indicating whether this transfer syntax supports fragmentable pixel data + OFBool fragmentable; + }; /** global constant describing the byte order on the machine the application diff --git a/dcmdata/libdcxml/xml2dcm.cc b/dcmdata/libdcxml/xml2dcm.cc index 33f86329..b08c9f67 100644 --- a/dcmdata/libdcxml/xml2dcm.cc +++ b/dcmdata/libdcxml/xml2dcm.cc @@ -122,9 +122,6 @@ void DcmXMLParseHelper::initLibrary() /* check for compatible libxml version */ LIBXML_TEST_VERSION - /* temporary buffer needed for xml2dcm_errorFunction - more detailed explanation there */ - OFString tmpErrorString; - /* initialize the XML library (only required for MT-safety) */ xmlInitParser(); @@ -140,7 +137,6 @@ void DcmXMLParseHelper::initLibrary() /* enable libxml warnings and error messages */ xmlGetWarningsDefaultValue = 1; - xmlSetGenericErrorFunc(&tmpErrorString, xml2dcm_errorFunction); } @@ -689,6 +685,11 @@ OFCondition DcmXMLParseHelper::readXmlFile( { OFCondition result = EC_Normal; xfer = EXS_Unknown; + + /* temporary buffer needed for xml2dcm_errorFunction - more detailed explanation there */ + OFString tmpErrorString; + xmlSetGenericErrorFunc(&tmpErrorString, xml2dcm_errorFunction); + xmlGenericError(xmlGenericErrorContext, "--- libxml parsing ------\n"); /* build an XML tree from the file */ #if LIBXML_VERSION >= 20703 @@ -785,6 +786,12 @@ OFCondition DcmXMLParseHelper::readXmlFile( DCMDATA_ERROR("could not parse document: " << ifname); result = EC_XMLParseError; } + + /* Reset to default function because we used a local string as context for + * the error function. + */ + xmlSetGenericErrorFunc(NULL, NULL); + /* free allocated memory */ xmlFreeDoc(doc); return result; diff --git a/dcmdata/libsrc/dccodec.cc b/dcmdata/libsrc/dccodec.cc index 52d6a2a7..b0ac91bb 100644 --- a/dcmdata/libsrc/dccodec.cc +++ b/dcmdata/libsrc/dccodec.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1997-2020, OFFIS e.V. + * Copyright (C) 1997-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -30,6 +30,7 @@ #include "dcmtk/dcmdata/dcpixseq.h" /* for DcmPixelSequence */ #include "dcmtk/dcmdata/dcpxitem.h" /* for DcmPixelItem */ #include "dcmtk/dcmdata/dcswap.h" /* for swapIfNecessary */ +#include "dcmtk/dcmdata/dcvrcs.h" /* for DcmCodeString */ #include "dcmtk/dcmdata/dcvrui.h" /* for DcmUniqueIdentifier */ // static member variables @@ -200,27 +201,37 @@ OFCondition DcmCodec::updateImageType(DcmItem *dataset) { if (dataset == NULL) return EC_IllegalCall; - DcmStack stack; - OFString imageType("DERIVED"); - OFString a; - - /* find existing Image Type element */ - OFCondition status = dataset->search(DCM_ImageType, stack, ESM_fromHere, OFFalse); - if (status.good()) + DcmElement *elem = NULL; + /* check for the data element (with non-empty value) */ + if (dataset->findAndGetElement(DCM_ImageType, elem).good() && !elem->isEmpty()) { - DcmElement *elem = OFstatic_cast(DcmElement *, stack.top()); - unsigned long pos = 1; - - // append old image type information beginning with second entry - while ((elem->getOFString(a, pos++)).good()) + /* case 1: there is a single value only */ + if (elem->getNumberOfValues() == 1) { - imageType += "\\"; - imageType += a; + DCMDATA_DEBUG("DcmCodec::updateImageType() setting data element value 'DERIVED\\SECONDARY'"); + /* overwrite with a valid value (VM=2-n) */ + return elem->putString("DERIVED\\SECONDARY"); + } else { + OFString elemValue; + /* case 2: value 1 is different from "DERIVED" */ + if (elem->getOFString(elemValue, 0 /*pos*/).good() && (elemValue != "DERIVED")) + { + if (elem->ident() == EVR_CS) + { + DCMDATA_DEBUG("DcmCodec::updateImageType() setting data element value 1 to 'DERIVED'"); + /* overwrite value 1 */ + return OFstatic_cast(DcmCodeString *, elem)->putOFStringAtPos("DERIVED", 0); + } else { + /* cannot overwrite value with wrong VR (should never happen) */ + DCMDATA_ERROR("DcmCodec: Internal ERROR: Cannot update element ImageType " << DCM_ImageType << " with wrong VR"); + return EC_InvalidVR; + } + } } } - // insert new Image Type, replace old value - return dataset->putAndInsertString(DCM_ImageType, imageType.c_str(), OFTrue); + /* nothing to do */ + return EC_Normal; } diff --git a/dcmdata/libsrc/dcddirif.cc b/dcmdata/libsrc/dcddirif.cc index 90508c9f..3ff1057d 100644 --- a/dcmdata/libsrc/dcddirif.cc +++ b/dcmdata/libsrc/dcddirif.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2002-2022, OFFIS e.V. + * Copyright (C) 2002-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -355,7 +355,7 @@ static OFBool compareAttributes(DcmElement *elem1, if (elem2 != NULL) { /* check whether tags are equal */ - if (elem1->getTag().getXTag() == elem2->getTag().getXTag()) + if (elem1->getTag() == elem2->getTag()) { DcmVR vr1(elem1->getVR()); DcmVR vr2(elem2->getVR()); @@ -463,7 +463,7 @@ static OFBool compareSQAttributes(DcmSequenceOfItems *seq1, if (seq2 != NULL) { /* check whether tags are equal */ - if (seq1->getTag().getXTag() == seq2->getTag().getXTag()) + if (seq1->getTag() == seq2->getTag()) { const unsigned long card1 = seq1->card(); const unsigned long card2 = seq2->card(); @@ -652,6 +652,9 @@ OFString DicomDirInterface::recordTypeToName(const E_DirRecType recordType) case ERT_Annotation: recordName = "Annotation"; break; + case ERT_Inventory: + recordName = "Inventory"; + break; default: recordName = "(unknown-directory-record-type)"; break; @@ -711,6 +714,7 @@ static E_DirRecType sopClassToRecordType(const OFString &sopClass) compare(sopClass, UID_VolumeRenderingVolumetricPresentationStateStorage) || compare(sopClass, UID_SegmentedVolumeRenderingVolumetricPresentationStateStorage) || compare(sopClass, UID_MultipleVolumeRenderingVolumetricPresentationStateStorage) || + compare(sopClass, UID_VariableModalityLUTSoftcopyPresentationStateStorage) || compare(sopClass, UID_BasicStructuredDisplayStorage)) { result = ERT_Presentation; @@ -729,7 +733,8 @@ static E_DirRecType sopClassToRecordType(const OFString &sopClass) compare(sopClass, UID_ElectrooculogramWaveformStorage) || compare(sopClass, UID_SleepElectroencephalogramWaveformStorage) || compare(sopClass, UID_MultichannelRespiratoryWaveformStorage) || - compare(sopClass, UID_BodyPositionWaveformStorage)) + compare(sopClass, UID_BodyPositionWaveformStorage) || + compare(sopClass, UID_General32BitECGWaveformStorage)) { result = ERT_Waveform; } @@ -800,7 +805,8 @@ static E_DirRecType sopClassToRecordType(const OFString &sopClass) else if (compare(sopClass, UID_ImplantAssemblyTemplateStorage)) result = ERT_ImplantAssy; else if (compare(sopClass, UID_RTBeamsDeliveryInstructionStorage) || - compare(sopClass, UID_RTBrachyApplicationSetupDeliveryInstructionStorage)) + compare(sopClass, UID_RTBrachyApplicationSetupDeliveryInstructionStorage) || + compare(sopClass, UID_RTPatientPositionAcquisitionInstructionStorage)) { result = ERT_Plan; } @@ -831,6 +837,8 @@ static E_DirRecType sopClassToRecordType(const OFString &sopClass) } else if (compare(sopClass, UID_MicroscopyBulkSimpleAnnotationsStorage)) result = ERT_Annotation; + else if (compare(sopClass, UID_InventoryStorage)) + result = ERT_Inventory; return result; } @@ -1096,10 +1104,12 @@ static OFBool isMultiframeStorageSOPClass(const OFString &sopClassUID) return compare(sopClassUID, UID_BreastProjectionXRayImageStorageForPresentation) || compare(sopClassUID, UID_BreastProjectionXRayImageStorageForProcessing) || compare(sopClassUID, UID_BreastTomosynthesisImageStorage) || + compare(sopClassUID, UID_EnhancedContinuousRTImageStorage) || compare(sopClassUID, UID_EnhancedCTImageStorage) || compare(sopClassUID, UID_EnhancedMRColorImageStorage) || compare(sopClassUID, UID_EnhancedMRImageStorage) || compare(sopClassUID, UID_EnhancedPETImageStorage) || + compare(sopClassUID, UID_EnhancedRTImageStorage) || compare(sopClassUID, UID_EnhancedUSVolumeStorage) || compare(sopClassUID, UID_EnhancedXAImageStorage) || compare(sopClassUID, UID_EnhancedXRFImageStorage) || @@ -1671,7 +1681,8 @@ OFCondition DicomDirInterface::checkSOPClassAndXfer(DcmMetaInfo *metainfo, compare(mediaSOPClassUID, UID_ElectromyogramWaveformStorage) || compare(mediaSOPClassUID, UID_ElectrooculogramWaveformStorage) || compare(mediaSOPClassUID, UID_SleepElectroencephalogramWaveformStorage) || - compare(mediaSOPClassUID, UID_BodyPositionWaveformStorage); + compare(mediaSOPClassUID, UID_BodyPositionWaveformStorage) || + compare(mediaSOPClassUID, UID_General32BitECGWaveformStorage); } /* is it one of the presentation state SOP Classes? */ if (!found) @@ -1686,7 +1697,8 @@ OFCondition DicomDirInterface::checkSOPClassAndXfer(DcmMetaInfo *metainfo, compare(mediaSOPClassUID, UID_AdvancedBlendingPresentationStateStorage) || compare(mediaSOPClassUID, UID_VolumeRenderingVolumetricPresentationStateStorage) || compare(mediaSOPClassUID, UID_SegmentedVolumeRenderingVolumetricPresentationStateStorage) || - compare(mediaSOPClassUID, UID_MultipleVolumeRenderingVolumetricPresentationStateStorage); + compare(mediaSOPClassUID, UID_MultipleVolumeRenderingVolumetricPresentationStateStorage) || + compare(mediaSOPClassUID, UID_VariableModalityLUTSoftcopyPresentationStateStorage); } /* is it one of the encapsulated document SOP Classes? */ if (!found) @@ -1746,7 +1758,8 @@ OFCondition DicomDirInterface::checkSOPClassAndXfer(DcmMetaInfo *metainfo, compare(mediaSOPClassUID, UID_ColorPaletteStorage) || compare(mediaSOPClassUID, UID_TractographyResultsStorage) || compare(mediaSOPClassUID, UID_ContentAssessmentResultsStorage) || - compare(mediaSOPClassUID, UID_MicroscopyBulkSimpleAnnotationsStorage); + compare(mediaSOPClassUID, UID_MicroscopyBulkSimpleAnnotationsStorage) || + compare(mediaSOPClassUID, UID_InventoryStorage); } /* the following SOP classes have been retired with previous editions of the DICOM standard */ if (!found && RetiredSOPClassSupport) @@ -2546,6 +2559,20 @@ OFCondition DicomDirInterface::checkMandatoryAttributes(DcmMetaInfo *metainfo, result = EC_MissingAttribute; if (!checkExistsWithValue(dataset, DCM_ImplantTemplateGroupIssuer, filename)) result = EC_MissingAttribute; + } + else if (recordType == ERT_Inventory) + { + /* check whether all type 1 elements are really present */ + if (!checkExistsWithValue(dataset, DCM_ContentDate, filename)) + result = EC_MissingAttribute; + if (!checkExistsWithValue(dataset, DCM_ContentTime, filename)) + result = EC_MissingAttribute; + if (!checkExistsWithValue(dataset, DCM_InventoryLevel, filename)) + result = EC_MissingAttribute; + if (!checkExistsWithValue(dataset, DCM_InventoryCompletionStatus, filename)) + result = EC_MissingAttribute; + if (!checkExistsWithValue(dataset, DCM_TotalNumberOfStudyRecords, filename)) + result = EC_MissingAttribute; } else { /* PatientID is type 1 in DICOMDIR and type 2 in images */ if (!InventMode) @@ -3050,6 +3077,7 @@ OFBool DicomDirInterface::recordMatchesDataset(DcmDirectoryRecord *record, case ERT_Assessment: case ERT_Radiotherapy: case ERT_Annotation: + case ERT_Inventory: /* The attribute ReferencedSOPInstanceUID is automatically * put into a Directory Record when a filename is present. */ @@ -4338,6 +4366,41 @@ DcmDirectoryRecord *DicomDirInterface::buildAnnotationRecord(DcmDirectoryRecord } +// create or update inventory record and copy required values from dataset +DcmDirectoryRecord *DicomDirInterface::buildInventoryRecord(DcmDirectoryRecord *record, + DcmFileFormat *fileformat, + const OFString &referencedFileID, + const OFFilename &sourceFilename) +{ + /* create new inventory record */ + if (record == NULL) + record = new DcmDirectoryRecord(ERT_Implant, referencedFileID.c_str(), sourceFilename, fileformat); + if (record != NULL) + { + /* check whether new record is ok */ + if (record->error().good()) + { + DcmDataset *dataset = fileformat->getDataset(); + /* copy attribute values from dataset to inventory record */ + copyElementType1(dataset, DCM_ContentDate, record, sourceFilename); + copyElementType1(dataset, DCM_ContentTime, record, sourceFilename); + copyElementType1(dataset, DCM_InventoryLevel, record, sourceFilename); + copyElementType1(dataset, DCM_InventoryCompletionStatus, record, sourceFilename); + copyElementType1(dataset, DCM_TotalNumberOfStudyRecords, record, sourceFilename); + copyElementType2(dataset, DCM_InventoryPurpose, record, sourceFilename); + copyElementType2(dataset, DCM_ScopeOfInventorySequence, record, sourceFilename); + } else { + printRecordErrorMessage(record->error(), ERT_Inventory, "create"); + /* free memory */ + delete record; + record = NULL; + } + } else + printRecordErrorMessage(EC_MemoryExhausted, ERT_Inventory, "create"); + return record; +} + + // create or update image record and copy required values from dataset DcmDirectoryRecord *DicomDirInterface::buildImageRecord(DcmDirectoryRecord *record, DcmFileFormat *fileformat, @@ -4777,6 +4840,9 @@ DcmDirectoryRecord *DicomDirInterface::addRecord(DcmDirectoryRecord *parent, case ERT_Annotation: record = buildAnnotationRecord(record, fileformat, referencedFileID, sourceFilename); break; + case ERT_Inventory: + record = buildInventoryRecord(record, fileformat, referencedFileID, sourceFilename); + break; default: /* it can only be an image */ record = buildImageRecord(record, fileformat, referencedFileID, sourceFilename); @@ -4922,11 +4988,25 @@ void DicomDirInterface::inventMissingInstanceLevelAttributes(DcmDirectoryRecord switch (record->getRecordType()) { case ERT_Image: + case ERT_SRDocument: + case ERT_Presentation: + case ERT_Waveform: case ERT_RTDose: case ERT_RTStructureSet: case ERT_RTPlan: - case ERT_StoredPrint: + case ERT_RTTreatRecord: + case ERT_KeyObjectDoc: + case ERT_Registration: + case ERT_Fiducial: + case ERT_Spectroscopy: + case ERT_EncapDoc: + case ERT_ValueMap: case ERT_Surface: + case ERT_Measurement: + case ERT_Tract: + case ERT_Assessment: + case ERT_Radiotherapy: + case ERT_Annotation: if (!record->tagExistsWithValue(DCM_InstanceNumber)) setDefaultValue(record, DCM_InstanceNumber, AutoInstanceNumber++); break; @@ -4943,23 +5023,11 @@ void DicomDirInterface::inventMissingInstanceLevelAttributes(DcmDirectoryRecord if (!record->tagExistsWithValue(DCM_RETIRED_CurveNumber)) setDefaultValue(record, DCM_RETIRED_CurveNumber, AutoCurveNumber++); break; - case ERT_SRDocument: - case ERT_Presentation: - case ERT_Waveform: - case ERT_RTTreatRecord: - case ERT_KeyObjectDoc: - case ERT_Registration: - case ERT_Fiducial: + case ERT_StoredPrint: case ERT_RawData: - case ERT_Spectroscopy: - case ERT_EncapDoc: - case ERT_ValueMap: case ERT_Stereometric: - case ERT_Measurement: case ERT_Plan: case ERT_SurfaceScan: - case ERT_Tract: - case ERT_Assessment: /* nothing to do */ break; default: @@ -5027,6 +5095,12 @@ OFCondition DicomDirInterface::addDicomFile(const OFFilename &filename, /* add an implant assy record below the root */ if (addRecord(rootRecord, ERT_ImplantAssy, &fileformat, fileID, pathname) == NULL) result = EC_CorruptedData; + } + else if (compare(sopClass, UID_InventoryStorage)) + { + /* add an inventory record below the root */ + if (addRecord(rootRecord, ERT_Inventory, &fileformat, fileID, pathname) == NULL) + result = EC_CorruptedData; } else { /* add a patient record below the root */ DcmDirectoryRecord *patientRecord = addRecord(rootRecord, ERT_Patient, &fileformat, fileID, pathname); @@ -5518,7 +5592,7 @@ OFBool DicomDirInterface::warnAboutInconsistentAttributes(DcmDirectoryRecord *re if ((delem != NULL) && (delem->getLength() > 0)) { /* record attribute has a value */ - tag = delem->getTag().getXTag(); + tag = delem->getTag(); if (dataset->tagExistsWithValue(tag)) { if (delem->getTag().getEVR() == EVR_SQ) diff --git a/dcmdata/libsrc/dcdicdir.cc b/dcmdata/libsrc/dcdicdir.cc index 819c2838..4475a6f2 100644 --- a/dcmdata/libsrc/dcdicdir.cc +++ b/dcmdata/libsrc/dcdicdir.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1994-2021, OFFIS e.V. + * Copyright (C) 1994-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -523,7 +523,7 @@ Uint32 DcmDicomDir::lengthUntilSQ(DcmDataset &dset, DcmXfer xf(oxfer); templen += xf.sizeofTagHeader(dO->getVR()); - if ( dO->getTag().getXTag() == DCM_DirectoryRecordSequence ) + if ( dO->getTag() == DCM_DirectoryRecordSequence ) break; Uint32 sublength = dO->getLength( oxfer, enctype ); diff --git a/dcmdata/libsrc/dcdict.cc b/dcmdata/libsrc/dcdict.cc index f28c362e..cc4cf907 100644 --- a/dcmdata/libsrc/dcdict.cc +++ b/dcmdata/libsrc/dcdict.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1994-2022, OFFIS e.V. + * Copyright (C) 1994-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -22,11 +22,10 @@ #include "dcmtk/config/osconfig.h" /* make sure OS specific configuration is included first */ -#include "dcmtk/ofstd/ofstd.h" #include "dcmtk/dcmdata/dcdict.h" -#include "dcmtk/ofstd/ofdefine.h" #include "dcmtk/dcmdata/dcdicent.h" #include "dcmtk/dcmdata/dctypes.h" +#include "dcmtk/ofstd/ofdefine.h" #include "dcmtk/ofstd/ofstd.h" #include "dcmtk/ofstd/offile.h" @@ -361,7 +360,7 @@ parseWholeTagField(char* s, DcmTagKey& key, if (pi > 0) { - // copy private creator name + // copy private creator identifier size_t buflen = strlen(pc) + 1; privCreator = new char[buflen]; // deleted by caller if (privCreator) OFStandard::strlcpy(privCreator, pc, buflen); diff --git a/dcmdata/libsrc/dcdictbi.cc b/dcmdata/libsrc/dcdictbi.cc index c0c9d554..0466d17c 100644 --- a/dcmdata/libsrc/dcdictbi.cc +++ b/dcmdata/libsrc/dcdictbi.cc @@ -4,7 +4,7 @@ ** ** User: joergr ** Host: thinkpad2 -** Date: 2022-10-17 21:04:19 +** Date: 2023-07-14 12:18:43 ** Prog: /home/joergr/Source/dcmtk-full/public/dcmdata/libsrc/mkdictbi ** ** From: ../data/dicom.dic @@ -861,7 +861,7 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = { DcmDictRange_Unspecified, DcmDictRange_Unspecified, NULL } , { 0x0008, 0x0403, 0x0008, 0x0403, - EVR_CS, "InventoryContentLevel", 1, 1, "DICOM", + EVR_CS, "InventoryLevel", 1, 1, "DICOM", DcmDictRange_Unspecified, DcmDictRange_Unspecified, NULL } , { 0x0008, 0x0404, 0x0008, 0x0404, @@ -917,7 +917,7 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = { DcmDictRange_Unspecified, DcmDictRange_Unspecified, NULL } , { 0x0008, 0x0411, 0x0008, 0x0411, - EVR_SQ, "UIDListMatchingSequence", 1, 1, "DICOM", + EVR_SQ, "ListOfUIDMatchingSequence", 1, 1, "DICOM", DcmDictRange_Unspecified, DcmDictRange_Unspecified, NULL } , { 0x0008, 0x0412, 0x0008, 0x0412, @@ -1405,7 +1405,7 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = { DcmDictRange_Unspecified, DcmDictRange_Unspecified, NULL } , { 0x0008, 0x9007, 0x0008, 0x9007, - EVR_CS, "FrameType", 4, 4, "DICOM", + EVR_CS, "FrameType", 4, 5, "DICOM", DcmDictRange_Unspecified, DcmDictRange_Unspecified, NULL } , { 0x0008, 0x9092, 0x0008, 0x9092, @@ -5274,6 +5274,14 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = { EVR_DT, "CalibrationDateTime", 1, 1, "DICOM", DcmDictRange_Unspecified, DcmDictRange_Unspecified, NULL } + , { 0x0018, 0x1204, 0x0018, 0x1204, + EVR_DA, "DateOfManufacture", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x0018, 0x1205, 0x0018, 0x1205, + EVR_DA, "DateOfInstallation", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } , { 0x0018, 0x1210, 0x0018, 0x1210, EVR_SH, "ConvolutionKernel", 1, -1, "DICOM", DcmDictRange_Unspecified, DcmDictRange_Unspecified, @@ -7742,6 +7750,90 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = { EVR_xs, "ZeroVelocityPixelValue", 1, 1, "DICOM", DcmDictRange_Unspecified, DcmDictRange_Unspecified, NULL } + , { 0x0018, 0x9821, 0x0018, 0x9821, + EVR_SQ, "PhotoacousticExcitationCharacteristicsSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x0018, 0x9822, 0x0018, 0x9822, + EVR_FD, "ExcitationSpectralWidth", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x0018, 0x9823, 0x0018, 0x9823, + EVR_FD, "ExcitationEnergy", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x0018, 0x9824, 0x0018, 0x9824, + EVR_FD, "ExcitationPulseDuration", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x0018, 0x9825, 0x0018, 0x9825, + EVR_SQ, "ExcitationWavelengthSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x0018, 0x9826, 0x0018, 0x9826, + EVR_FD, "ExcitationWavelength", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x0018, 0x9828, 0x0018, 0x9828, + EVR_CS, "IlluminationTranslationFlag", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x0018, 0x9829, 0x0018, 0x9829, + EVR_CS, "AcousticCouplingMediumFlag", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x0018, 0x982a, 0x0018, 0x982a, + EVR_SQ, "AcousticCouplingMediumCodeSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x0018, 0x982b, 0x0018, 0x982b, + EVR_FD, "AcousticCouplingMediumTemperature", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x0018, 0x982c, 0x0018, 0x982c, + EVR_SQ, "TransducerResponseSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x0018, 0x982d, 0x0018, 0x982d, + EVR_FD, "CenterFrequency", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x0018, 0x982e, 0x0018, 0x982e, + EVR_FD, "FractionalBandwidth", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x0018, 0x982f, 0x0018, 0x982f, + EVR_FD, "LowerCutoffFrequency", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x0018, 0x9830, 0x0018, 0x9830, + EVR_FD, "UpperCutoffFrequency", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x0018, 0x9831, 0x0018, 0x9831, + EVR_SQ, "TransducerTechnologySequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x0018, 0x9832, 0x0018, 0x9832, + EVR_SQ, "SoundSpeedCorrectionMechanismCodeSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x0018, 0x9833, 0x0018, 0x9833, + EVR_FD, "ObjectSoundSpeed", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x0018, 0x9834, 0x0018, 0x9834, + EVR_FD, "AcousticCouplingMediumSoundSpeed", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x0018, 0x9835, 0x0018, 0x9835, + EVR_SQ, "PhotoacousticImageFrameTypeSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x0018, 0x9836, 0x0018, 0x9836, + EVR_SQ, "ImageDataTypeCodeSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } , { 0x0018, 0x9900, 0x0018, 0x9900, EVR_LO, "ReferenceLocationLabel", 1, 1, "DICOM", DcmDictRange_Unspecified, DcmDictRange_Unspecified, @@ -16506,6 +16598,10 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = { EVR_SQ, "ModalityLUTSequence", 1, 1, "DICOM", DcmDictRange_Unspecified, DcmDictRange_Unspecified, NULL } + , { 0x0028, 0x3001, 0x0028, 0x3001, + EVR_SQ, "VariableModalityLUTSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } , { 0x0028, 0x3002, 0x0028, 0x3002, EVR_xs, "LUTDescriptor", 3, 3, "DICOM", DcmDictRange_Unspecified, DcmDictRange_Unspecified, @@ -26548,6 +26644,222 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = { EVR_SH, "FluenceModeID", 1, 1, "DICOM", DcmDictRange_Unspecified, DcmDictRange_Unspecified, NULL } + , { 0x3002, 0x0100, 0x3002, 0x0100, + EVR_IS, "SelectedFrameNumber", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x0101, 0x3002, 0x0101, + EVR_SQ, "SelectedFrameFunctionalGroupsSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x0102, 0x3002, 0x0102, + EVR_SQ, "RTImageFrameGeneralContentSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x0103, 0x3002, 0x0103, + EVR_SQ, "RTImageFrameContextSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x0104, 0x3002, 0x0104, + EVR_SQ, "RTImageScopeSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x0105, 0x3002, 0x0105, + EVR_CS, "BeamModifierCoordinatesPresenceFlag", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x0106, 0x3002, 0x0106, + EVR_FD, "StartCumulativeMeterset", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x0107, 0x3002, 0x0107, + EVR_FD, "StopCumulativeMeterset", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x0108, 0x3002, 0x0108, + EVR_SQ, "RTAcquisitionPatientPositionSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x0109, 0x3002, 0x0109, + EVR_SQ, "RTImageFrameImagingDevicePositionSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x010a, 0x3002, 0x010a, + EVR_SQ, "RTImageFramekVRadiationAcquisitionSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x010b, 0x3002, 0x010b, + EVR_SQ, "RTImageFrameMVRadiationAcquisitionSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x010c, 0x3002, 0x010c, + EVR_SQ, "RTImageFrameRadiationAcquisitionSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x010d, 0x3002, 0x010d, + EVR_SQ, "ImagingSourcePositionSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x010e, 0x3002, 0x010e, + EVR_SQ, "ImageReceptorPositionSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x010f, 0x3002, 0x010f, + EVR_FD, "DevicePositionToEquipmentMappingMatrix", 16, 16, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x0110, 0x3002, 0x0110, + EVR_SQ, "DevicePositionParameterSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x0111, 0x3002, 0x0111, + EVR_CS, "ImagingSourceLocationSpecificationType", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x0112, 0x3002, 0x0112, + EVR_SQ, "ImagingDeviceLocationMatrixSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x0113, 0x3002, 0x0113, + EVR_SQ, "ImagingDeviceLocationParameterSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x0114, 0x3002, 0x0114, + EVR_SQ, "ImagingApertureSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x0115, 0x3002, 0x0115, + EVR_CS, "ImagingApertureSpecificationType", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x0116, 0x3002, 0x0116, + EVR_US, "NumberOfAcquisitionDevices", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x0117, 0x3002, 0x0117, + EVR_SQ, "AcquisitionDeviceSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x0118, 0x3002, 0x0118, + EVR_SQ, "AcquisitionTaskSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x0119, 0x3002, 0x0119, + EVR_SQ, "AcquisitionTaskWorkitemCodeSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x011a, 0x3002, 0x011a, + EVR_SQ, "AcquisitionSubtaskSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x011b, 0x3002, 0x011b, + EVR_SQ, "SubtaskWorkitemCodeSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x011c, 0x3002, 0x011c, + EVR_US, "AcquisitionTaskIndex", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x011d, 0x3002, 0x011d, + EVR_US, "AcquisitionSubtaskIndex", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x011e, 0x3002, 0x011e, + EVR_SQ, "ReferencedBaselineParametersRTRadiationInstanceSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x011f, 0x3002, 0x011f, + EVR_SQ, "PositionAcquisitionTemplateIdentificationSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x0120, 0x3002, 0x0120, + EVR_ST, "PositionAcquisitionTemplateID", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x0121, 0x3002, 0x0121, + EVR_LO, "PositionAcquisitionTemplateName", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x0122, 0x3002, 0x0122, + EVR_SQ, "PositionAcquisitionTemplateCodeSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x0123, 0x3002, 0x0123, + EVR_LT, "PositionAcquisitionTemplateDescription", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x0124, 0x3002, 0x0124, + EVR_SQ, "AcquisitionTaskApplicabilitySequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x0125, 0x3002, 0x0125, + EVR_SQ, "ProjectionImagingAcquisitionParameterSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x0126, 0x3002, 0x0126, + EVR_SQ, "CTImagingAcquisitionParameterSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x0127, 0x3002, 0x0127, + EVR_SQ, "KVImagingGenerationParametersSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x0128, 0x3002, 0x0128, + EVR_SQ, "MVImagingGenerationParametersSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x0129, 0x3002, 0x0129, + EVR_CS, "AcquisitionSignalType", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x012a, 0x3002, 0x012a, + EVR_CS, "AcquisitionMethod", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x012b, 0x3002, 0x012b, + EVR_SQ, "ScanStartPositionSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x012c, 0x3002, 0x012c, + EVR_SQ, "ScanStopPositionSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x012d, 0x3002, 0x012d, + EVR_FD, "ImagingSourceToBeamModifierDefinitionPlaneDistance", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x012e, 0x3002, 0x012e, + EVR_CS, "ScanArcType", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x012f, 0x3002, 0x012f, + EVR_CS, "DetectorPositioningType", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x0130, 0x3002, 0x0130, + EVR_SQ, "AdditionalRTAccessoryDeviceSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x0131, 0x3002, 0x0131, + EVR_SQ, "DeviceSpecificAcquisitionParameterSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x0132, 0x3002, 0x0132, + EVR_SQ, "ReferencedPositionReferenceInstanceSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x0133, 0x3002, 0x0133, + EVR_SQ, "EnergyDerivationCodeSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x0134, 0x3002, 0x0134, + EVR_FD, "MaximumCumulativeMetersetExposure", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3002, 0x0135, 0x3002, 0x0135, + EVR_SQ, "AcquisitionInitiationSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } , { 0x3004, 0x0001, 0x3004, 0x0001, EVR_CS, "DVHType", 1, 1, "DICOM", DcmDictRange_Unspecified, DcmDictRange_Unspecified, @@ -26585,11 +26897,11 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = { DcmDictRange_Unspecified, DcmDictRange_Unspecified, NULL } , { 0x3004, 0x0010, 0x3004, 0x0010, - EVR_SQ, "RTDoseROISequence", 1, 1, "DICOM", + EVR_SQ, "RETIRED_RTDoseROISequence", 1, 1, "DICOM/retired", DcmDictRange_Unspecified, DcmDictRange_Unspecified, NULL } , { 0x3004, 0x0012, 0x3004, 0x0012, - EVR_DS, "DoseValue", 1, 1, "DICOM", + EVR_DS, "RETIRED_DoseValue", 1, 1, "DICOM/retired", DcmDictRange_Unspecified, DcmDictRange_Unspecified, NULL } , { 0x3004, 0x0014, 0x3004, 0x0014, @@ -26909,7 +27221,7 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = { DcmDictRange_Unspecified, DcmDictRange_Unspecified, NULL } , { 0x3008, 0x002b, 0x3008, 0x002b, - EVR_SH, "TreatmentTerminationCode", 1, 1, "DICOM", + EVR_SH, "RETIRED_TreatmentTerminationCode", 1, 1, "DICOM/retired", DcmDictRange_Unspecified, DcmDictRange_Unspecified, NULL } , { 0x3008, 0x002c, 0x3008, 0x002c, @@ -27080,6 +27392,22 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = { EVR_SQ, "BeamLimitingDeviceLeafPairsSequence", 1, 1, "DICOM", DcmDictRange_Unspecified, DcmDictRange_Unspecified, NULL } + , { 0x3008, 0x00a1, 0x3008, 0x00a1, + EVR_SQ, "EnhancedRTBeamLimitingDeviceSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3008, 0x00a2, 0x3008, 0x00a2, + EVR_SQ, "EnhancedRTBeamLimitingOpeningSequence", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3008, 0x00a3, 0x3008, 0x00a3, + EVR_CS, "EnhancedRTBeamLimitingDeviceDefinitionFlag", 1, 1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } + , { 0x3008, 0x00a4, 0x3008, 0x00a4, + EVR_FD, "ParallelRTBeamDelimiterOpeningExtents", 2, -1, "DICOM", + DcmDictRange_Unspecified, DcmDictRange_Unspecified, + NULL } , { 0x3008, 0x00b0, 0x3008, 0x00b0, EVR_SQ, "RecordedWedgeSequence", 1, 1, "DICOM", DcmDictRange_Unspecified, DcmDictRange_Unspecified, @@ -30445,7 +30773,7 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = { DcmDictRange_Unspecified, DcmDictRange_Unspecified, NULL } , { 0x3010, 0x0090, 0x3010, 0x0090, - EVR_CS, "RoboticBaseLocationIndicator", 1, 1, "DICOM", + EVR_CS, "RETIRED_RoboticBaseLocationIndicator", 1, 1, "DICOM/retired", DcmDictRange_Unspecified, DcmDictRange_Unspecified, NULL } , { 0x3010, 0x0091, 0x3010, 0x0091, diff --git a/dcmdata/libsrc/dcdirrec.cc b/dcmdata/libsrc/dcdirrec.cc index e4ea26de..c5d53e32 100644 --- a/dcmdata/libsrc/dcdirrec.cc +++ b/dcmdata/libsrc/dcdirrec.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1994-2021, OFFIS e.V. + * Copyright (C) 1994-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -97,7 +97,8 @@ static const char *DRTypeNames[] = "TRACT", "ASSESSMENT", "RADIOTHERAPY", - "ANNOTATION" + "ANNOTATION", + "INVENTORY" }; static const short DIM_OF_DRTypeNames = OFstatic_cast(short, (sizeof(DRTypeNames) / sizeof(DRTypeNames[0]))); @@ -331,6 +332,7 @@ OFCondition DcmDirectoryRecord::checkHierarchy(const E_DirRecType upperRecord, case ERT_Implant: case ERT_ImplantGroup: case ERT_ImplantAssy: + case ERT_Inventory: case ERT_Private: l_error = EC_Normal; break; @@ -530,6 +532,7 @@ OFCondition DcmDirectoryRecord::checkHierarchy(const E_DirRecType upperRecord, case ERT_Assessment: case ERT_Radiotherapy: case ERT_Annotation: + case ERT_Inventory: case ERT_Private: switch (lowerRecord) { diff --git a/dcmdata/libsrc/dcelem.cc b/dcmdata/libsrc/dcelem.cc index 7c59077f..1524904b 100644 --- a/dcmdata/libsrc/dcelem.cc +++ b/dcmdata/libsrc/dcelem.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1994-2022, OFFIS e.V. + * Copyright (C) 1994-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -224,8 +224,8 @@ int DcmElement::compare(const DcmElement& rhs) const DcmElement* myThis = OFconst_cast(DcmElement*, this); DcmElement* myRhs = OFconst_cast(DcmElement*, &rhs); - DcmTagKey thisKey = (*myThis).getTag().getXTag(); - DcmTagKey rhsKey = (*myRhs).getTag().getXTag(); + DcmTagKey thisKey = (*myThis).getTag(); + DcmTagKey rhsKey = (*myRhs).getTag(); if ( thisKey > rhsKey ) { @@ -1380,6 +1380,10 @@ OFCondition DcmElement::write(DcmOutputStream &outStream, /* write tag and length information to it, do something */ if (getTransferState() == ERW_init) { + // Force a compression filter (if any) to process the input buffer, by calling outStream.write(). + // This ensures that we cannot get stuck if there are just a few bytes available in the buffer + outStream.write(NULL, 0); + /* first compare with DCM_TagInfoLength (12). If there is not enough space * in the buffer, check if the buffer is still sufficient for the requirements * of this element, which may need only 8 instead of 12 bytes. @@ -2008,7 +2012,8 @@ OFCondition DcmElement::createValueFromTempFile(DcmInputStreamFactory *factory, OFCondition DcmElement::getUncompressedFrameSize(DcmItem *dataset, - Uint32 &frameSize) const + Uint32 &frameSize, + OFBool pixelDataIsUncompressed) const { OFCondition result = EC_IllegalParameter; if (dataset != NULL) @@ -2017,7 +2022,14 @@ OFCondition DcmElement::getUncompressedFrameSize(DcmItem *dataset, Uint16 cols = 0; Uint16 samplesPerPixel = 0; Uint16 bitsAllocated = 0; - /* retrieve values from dataset (and check them for validity and plausibility) */ + Sint32 numberOfFrames = 1; + OFString photometricInterpretation; + + /* retrieve number of frames from dataset (may be absent) */ + (void) dataset->findAndGetSint32(DCM_NumberOfFrames, numberOfFrames); + if (numberOfFrames < 1) numberOfFrames = 1; + + /* retrieve further values from dataset (and check them for validity and plausibility) */ GET_AND_CHECK_UINT16_VALUE(DCM_Columns, cols) else if (cols == 0) DCMDATA_WARN("DcmElement: Dubious value (" << cols << ") for element Columns " << DCM_Columns); @@ -2033,7 +2045,6 @@ OFCondition DcmElement::getUncompressedFrameSize(DcmItem *dataset, else /* result.good() */ { /* also need to check value of PhotometricInterpretation */ - OFString photometricInterpretation; if (dataset->findAndGetOFStringArray(DCM_PhotometricInterpretation, photometricInterpretation).good()) { if (photometricInterpretation.empty()) @@ -2077,6 +2088,40 @@ OFCondition DcmElement::getUncompressedFrameSize(DcmItem *dataset, /* if all checks were passed... */ if (result.good()) { + if (pixelDataIsUncompressed && (photometricInterpretation == "YBR_FULL_422")) + { + /* YBR_FULL_422 can exist in uncompressed format, but in many cases + * images claiming to be YBR_FULL_422 are in fact formerly compressed + * images in YBR_FULL color model where the decoder has failed to update + * the photometric interpretation. We can keep these apart by checking + * the size of the pixel data and the number of frames. + */ + Uint32 pixelLen = 0; + DcmElement *pixData = NULL; + result = dataset->findAndGetElement(DCM_PixelData, pixData); + if (result.good() && pixData && ((pixelLen = pixData->getLength()) > 0)) + { + const Uint32 v1 = rows * cols * 3; + const Uint32 v2 = (bitsAllocated / 8) * v1; + const Uint32 v3 = ((bitsAllocated % 8) * v1 + 7) / 8; + + if (pixelLen >= (v2 + v3) * numberOfFrames) + { + /* the size of the pixel data indicates that no subsampling is present. We assume YBR_FULL. */ + DCMDATA_WARN("DcmElement: PhotometricInterpretation probably incorrect, assuming YBR_FULL instead of YBR_FULL_422"); + } + else + { + /* the size of the pixel data indicates subsampling is present. We assume YBR_FULL_422, + * which means that the frame size can be computed by setting samplesPerPixel to 2. + */ + samplesPerPixel = 2; + } + } + else + DCMDATA_WARN("DcmElement: failed to compute size of PixelData element"); + } + /* compute frame size (TODO: check for 32-bit integer overflow?) */ if ((bitsAllocated % 8) == 0) { @@ -2213,6 +2258,10 @@ OFCondition DcmElement::checkVM(const unsigned long vmNum, { if (vmNum != 2) result = EC_ValueMultiplicityViolated; } + else if (vmStr == "2-4") + { + if ((vmNum < 2) || (vmNum > 4)) result = EC_ValueMultiplicityViolated; + } else if (vmStr == "2-n") { if (vmNum < 2) result = EC_ValueMultiplicityViolated; @@ -2237,6 +2286,14 @@ OFCondition DcmElement::checkVM(const unsigned long vmNum, { if (vmNum != 4) result = EC_ValueMultiplicityViolated; } + else if (vmStr == "4-5") + { + if ((vmNum < 4) || (vmNum > 5)) result = EC_ValueMultiplicityViolated; + } + else if (vmStr == "4-4n") + { + if ((vmNum % 4) != 0) result = EC_ValueMultiplicityViolated; + } else if (vmStr == "5") { if (vmNum != 5) result = EC_ValueMultiplicityViolated; @@ -2249,6 +2306,10 @@ OFCondition DcmElement::checkVM(const unsigned long vmNum, { if (vmNum != 6) result = EC_ValueMultiplicityViolated; } + else if (vmStr == "6-n") + { + if (vmNum < 6) result = EC_ValueMultiplicityViolated; + } else if (vmStr == "7") { if (vmNum != 7) result = EC_ValueMultiplicityViolated; @@ -2265,6 +2326,10 @@ OFCondition DcmElement::checkVM(const unsigned long vmNum, { if (vmNum != 9) result = EC_ValueMultiplicityViolated; } + else if (vmStr == "11") + { + if (vmNum != 11) result = EC_ValueMultiplicityViolated; + } else if (vmStr == "16") { if (vmNum != 16) result = EC_ValueMultiplicityViolated; diff --git a/dcmdata/libsrc/dcencdoc.cc b/dcmdata/libsrc/dcencdoc.cc index 77d60817..2073cc90 100644 --- a/dcmdata/libsrc/dcencdoc.cc +++ b/dcmdata/libsrc/dcencdoc.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2018-2021, OFFIS e.V. + * Copyright (C) 2018-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -503,7 +503,7 @@ void DcmEncapsulatedDocument::addCDACommandlineOptions(OFCommandLine &cmd) cmd.setOptionColumns(LONGCOL, SHORTCOL); cmd.setParamColumn(LONGCOL + SHORTCOL + 4); cmd.addParam("cdafile-in", "CDA input filename to be converted"); - cmd.addParam("dcmfile-out", "DICOM output filename"); + cmd.addParam("dcmfile-out", "DICOM output filename (\"-\" for stdout)"); addGeneralOptions(cmd); addDocumentOptions(cmd); cmd.addSubGroup("override CDA data:"); @@ -520,7 +520,7 @@ void DcmEncapsulatedDocument::addPDFCommandlineOptions(OFCommandLine &cmd) cmd.setOptionColumns(LONGCOL, SHORTCOL); cmd.setParamColumn(LONGCOL + SHORTCOL + 4); cmd.addParam("pdffile-in", "PDF input filename to be converted"); - cmd.addParam("dcmfile-out", "DICOM output filename"); + cmd.addParam("dcmfile-out", "DICOM output filename (\"-\" for stdout)"); addGeneralOptions(cmd); addDocumentOptions(cmd); addOutputOptions(cmd); @@ -532,7 +532,7 @@ void DcmEncapsulatedDocument::addSTLCommandlineOptions(OFCommandLine &cmd) cmd.setOptionColumns(LONGCOL, SHORTCOL); cmd.setParamColumn(LONGCOL + SHORTCOL + 4); cmd.addParam("stlfile-in", "STL input filename to be converted"); - cmd.addParam("dcmfile-out", "DICOM output filename"); + cmd.addParam("dcmfile-out", "DICOM output filename (\"-\" for stdout)"); addGeneralOptions(cmd); addDocumentOptions(cmd); cmd.addSubGroup("enhanced general equipment:"); diff --git a/dcmdata/libsrc/dcfilefo.cc b/dcmdata/libsrc/dcfilefo.cc index 52ed3812..4f72dee8 100644 --- a/dcmdata/libsrc/dcfilefo.cc +++ b/dcmdata/libsrc/dcfilefo.cc @@ -298,11 +298,10 @@ OFCondition DcmFileFormat::checkMetaHeaderValue(DcmMetaInfo *metainfo, if (obj != NULL) tag = obj->getTag(); - DcmTagKey xtag = tag.getXTag(); DcmElement *elem = OFstatic_cast(DcmElement *, obj); - /* go ahead and scrutinize one particular data element (depending on xtag) */ - if (xtag == DCM_FileMetaInformationGroupLength) // (0002,0000) + /* go ahead and scrutinize one particular data element (depending on tag) */ + if (tag == DCM_FileMetaInformationGroupLength) // (0002,0000) { if (elem == NULL) { @@ -314,7 +313,7 @@ OFCondition DcmFileFormat::checkMetaHeaderValue(DcmMetaInfo *metainfo, OFstatic_cast(DcmUnsignedLong *, elem)->putUint32Array(&temp, 1); // the calculation of actual group length value is contained in validateMetaInfo() } - else if (xtag == DCM_FileMetaInformationVersion) // (0002,0001) + else if (tag == DCM_FileMetaInformationVersion) // (0002,0001) { if (elem == NULL) { @@ -352,7 +351,7 @@ OFCondition DcmFileFormat::checkMetaHeaderValue(DcmMetaInfo *metainfo, DCMDATA_ERROR("DcmFileFormat: Cannot determine Version of MetaHeader"); } } - else if (xtag == DCM_MediaStorageSOPClassUID) // (0002,0002) + else if (tag == DCM_MediaStorageSOPClassUID) // (0002,0002) { if (elem == NULL) { @@ -394,7 +393,7 @@ OFCondition DcmFileFormat::checkMetaHeaderValue(DcmMetaInfo *metainfo, } } } - else if (xtag == DCM_MediaStorageSOPInstanceUID) // (0002,0003) + else if (tag == DCM_MediaStorageSOPInstanceUID) // (0002,0003) { if (elem == NULL) { @@ -438,7 +437,7 @@ OFCondition DcmFileFormat::checkMetaHeaderValue(DcmMetaInfo *metainfo, } } } - else if (xtag == DCM_TransferSyntaxUID) // (0002,0010) + else if (tag == DCM_TransferSyntaxUID) // (0002,0010) { if (elem == NULL) { @@ -460,7 +459,7 @@ OFCondition DcmFileFormat::checkMetaHeaderValue(DcmMetaInfo *metainfo, << dcXfer.getXferName() << "] on writing following Dataset"); } } - else if (xtag == DCM_ImplementationClassUID) // (0002,0012) + else if (tag == DCM_ImplementationClassUID) // (0002,0012) { if (elem == NULL) { @@ -473,7 +472,7 @@ OFCondition DcmFileFormat::checkMetaHeaderValue(DcmMetaInfo *metainfo, OFstatic_cast(DcmUniqueIdentifier *, elem)->putString(uid); } } - else if (xtag == DCM_ImplementationVersionName) // (0002,0013) + else if (tag == DCM_ImplementationVersionName) // (0002,0013) { if (elem == NULL) { @@ -486,9 +485,9 @@ OFCondition DcmFileFormat::checkMetaHeaderValue(DcmMetaInfo *metainfo, OFstatic_cast(DcmShortString *, elem)->putString(uid); } } - else if ((xtag == DCM_SourceApplicationEntityTitle) || // (0002,0016) - (xtag == DCM_SendingApplicationEntityTitle) || // (0002,0017) - (xtag == DCM_ReceivingApplicationEntityTitle)) // (0002,0018) + else if ((tag == DCM_SourceApplicationEntityTitle) || // (0002,0016) + (tag == DCM_SendingApplicationEntityTitle) || // (0002,0017) + (tag == DCM_ReceivingApplicationEntityTitle)) // (0002,0018) { if (elem == NULL) { @@ -497,9 +496,9 @@ OFCondition DcmFileFormat::checkMetaHeaderValue(DcmMetaInfo *metainfo, } DCMDATA_WARN("DcmFileFormat: Don't know how to handle " << tag.getTagName()); } - else if ((xtag == DCM_SourcePresentationAddress) || // (0002,0026) - (xtag == DCM_SendingPresentationAddress) || // (0002,0027) - (xtag == DCM_ReceivingPresentationAddress)) // (0002,0028) + else if ((tag == DCM_SourcePresentationAddress) || // (0002,0026) + (tag == DCM_SendingPresentationAddress) || // (0002,0027) + (tag == DCM_ReceivingPresentationAddress)) // (0002,0028) { if (elem == NULL) { @@ -508,7 +507,7 @@ OFCondition DcmFileFormat::checkMetaHeaderValue(DcmMetaInfo *metainfo, } DCMDATA_WARN("DcmFileFormat: Don't know how to handle " << tag.getTagName()); } - else if (xtag == DCM_PrivateInformationCreatorUID) // (0002,0100) + else if (tag == DCM_PrivateInformationCreatorUID) // (0002,0100) { if (elem == NULL) { @@ -517,7 +516,7 @@ OFCondition DcmFileFormat::checkMetaHeaderValue(DcmMetaInfo *metainfo, } DCMDATA_WARN("DcmFileFormat: Don't know how to handle PrivateInformationCreatorUID"); } - else if (xtag == DCM_PrivateInformation) // (0002,0102) + else if (tag == DCM_PrivateInformation) // (0002,0102) { if (elem == NULL) { @@ -637,7 +636,7 @@ E_TransferSyntax DcmFileFormat::lookForXfer(DcmMetaInfo *metainfo) if (metainfo->search(DCM_TransferSyntaxUID, stack).good()) { DcmUniqueIdentifier *xferUI = OFstatic_cast(DcmUniqueIdentifier *, stack.top()); - if (xferUI->getTag().getXTag() == DCM_TransferSyntaxUID) + if (xferUI->getTag() == DCM_TransferSyntaxUID) { char *xferid = NULL; xferUI->getString(xferid); diff --git a/dcmdata/libsrc/dcitem.cc b/dcmdata/libsrc/dcitem.cc index 93a608a4..3960fceb 100644 --- a/dcmdata/libsrc/dcitem.cc +++ b/dcmdata/libsrc/dcitem.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1994-2022, OFFIS e.V. + * Copyright (C) 1994-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -1209,7 +1209,7 @@ OFCondition DcmItem::readTagAndLength(DcmInputStream &inStream, { DCMDATA_WARN("DcmItem: Explicit item length (" << valueLengthItem << " bytes) too large for the elements contained in the item"); /* if the next tag is the sequence delimiter item, we can adapt to the situation */ - if (newTag.getXTag() == DCM_SequenceDelimitationItem) + if (newTag == DCM_SequenceDelimitationItem) { DCMDATA_WARN("DcmItem: Sequence delimitation occurred before all bytes announced by explicit item length could be read"); l_error = EC_PrematureSequDelimitationItem; @@ -1430,11 +1430,11 @@ OFCondition DcmItem::readUntilTag(DcmInputStream & inStream, checkAndUpdateVR(*this, newTag); /* check if we want to stop parsing at this point, in the main dataset only */ - if( (stopParsingAtElement != DCM_UndefinedTagKey) && (newTag.getXTag()>=stopParsingAtElement) && ident() == EVR_dataset) + if ((stopParsingAtElement != DCM_UndefinedTagKey) && (newTag >= stopParsingAtElement) && (ident() == EVR_dataset)) { lastElementComplete = OFTrue; readStopElem = OFTrue; - DCMDATA_WARN("DcmItem: Element " << newTag.getTagName() << " " << newTag + DCMDATA_INFO("DcmItem: Element " << newTag.getTagName() << " " << newTag << " encountered, skipping rest of dataset"); } else @@ -1481,7 +1481,7 @@ OFCondition DcmItem::readUntilTag(DcmInputStream & inStream, (dcmStopParsingAfterElement.get() == elementList->get()->getTag()) && ident() == EVR_dataset) { - DCMDATA_WARN("DcmItem: Element " << newTag.getTagName() << " " << newTag + DCMDATA_INFO("DcmItem: Element " << newTag.getTagName() << " " << newTag << " encountered, skipping rest of data set"); readStopElem = OFTrue; } @@ -1548,6 +1548,9 @@ OFCondition DcmItem::write(DcmOutputStream &outStream, { if (getTransferState() == ERW_init) { + // Force a compression filter (if any) to process the input buffer, by calling outStream.write(). + // This ensures that we cannot get stuck if there are just a few bytes available in the buffer + outStream.write(NULL, 0); if (outStream.avail() >= 8) { if (enctype == EET_ExplicitLength) @@ -1565,8 +1568,9 @@ OFCondition DcmItem::write(DcmOutputStream &outStream, outStream.write(&valueLength, 4); // 4 bytes length elementList->seek(ELP_first); setTransferState(ERW_inWork); - } else + } else { errorFlag = EC_StreamNotifyClient; + } } if (getTransferState() == ERW_inWork) { @@ -1587,6 +1591,9 @@ OFCondition DcmItem::write(DcmOutputStream &outStream, setTransferState(ERW_ready); if (getLengthField() == DCM_UndefinedLength) { + // Force a compression filter (if any) to process the input buffer, by calling outStream.write(). + // This ensures that we cannot get stuck if there are just a few bytes available in the buffer + outStream.write(NULL, 0); if (outStream.avail() >= 8) { // write Item delimitation @@ -1628,6 +1635,9 @@ OFCondition DcmItem::writeSignatureFormat(DcmOutputStream &outStream, { if (getTransferState() == ERW_init) { + // Force a compression filter (if any) to process the input buffer, by calling outStream.write(). + // This ensures that we cannot get stuck if there are just a few bytes available in the buffer + outStream.write(NULL, 0); if (outStream.avail() >= 4) { if (enctype == EET_ExplicitLength) @@ -1803,7 +1813,7 @@ OFCondition DcmItem::insert(DcmElement *elem, } /* else if the new element's tag is greater than the current element's tag */ /* (i.e. we have found the position where the new element shall be inserted) */ - else if (elem->getTag() > dE->getTag()) + else if (elem->getTag() > dE->getTag().getTagKey() /* only compare the attribute tag */) { /* insert the new element after the current element */ elementList->insert(elem, ELP_next); @@ -1831,7 +1841,7 @@ OFCondition DcmItem::insert(DcmElement *elem, break; } /* else if the current element and the new element show the same tag */ - else if (elem->getTag() == dE->getTag()) + else if (elem->getTag() == dE->getTag().getTagKey() /* only compare the attribute tag */) { /* if new and current element are not identical */ if (elem != dE) @@ -3765,6 +3775,10 @@ OFCondition DcmItem::putAndInsertUint32Array(const DcmTag& tag, case EVR_UL: elem = new DcmUnsignedLong(tag); break; + case EVR_UNKNOWN: + /* Unknown VR, e.g. tag not found in data dictionary */ + status = EC_UnknownVR; + break; default: status = EC_IllegalCall; break; @@ -3822,6 +3836,43 @@ OFCondition DcmItem::putAndInsertSint32(const DcmTag& tag, } +OFCondition DcmItem::putAndInsertSint32Array(const DcmTag& tag, + const Sint32 *value, + const unsigned long count, + const OFBool replaceOld) +{ + OFCondition status = EC_Normal; + /* create new element */ + DcmElement *elem = NULL; + switch(tag.getEVR()) + { + case EVR_SL: + elem = new DcmSignedLong(tag); + break; + case EVR_UNKNOWN: + /* Unknown VR, e.g. tag not found in data dictionary */ + status = EC_UnknownVR; + break; + default: + status = EC_IllegalCall; + break; + } + if (elem != NULL) + { + /* put value */ + status = elem->putSint32Array(value, count); + /* insert into dataset/item */ + if (status.good()) + status = insert(elem, replaceOld); + /* could not be inserted, therefore, delete it immediately */ + if (status.bad()) + delete elem; + } else if (status.good()) + status = EC_MemoryExhausted; + return status; +} + + OFCondition DcmItem::putAndInsertFloat32(const DcmTag& tag, const Float32 value, const unsigned long pos, @@ -4582,7 +4633,7 @@ OFCondition DcmItem::newDicomElement(DcmElement *&newElement, case EVR_UL : { // generate tag with VR from dictionary! - DcmTag ulupTag(tag.getXTag()); + DcmTag ulupTag(tag.getTagKey()); if (ulupTag.getEVR() == EVR_up) newElement = new DcmUnsignedLongOffset(ulupTag, length); else @@ -4619,11 +4670,11 @@ OFCondition DcmItem::newDicomElement(DcmElement *&newElement, newElement = new DcmSequenceOfItems(tag, length, readAsUN); break; case EVR_na : - if (tag.getXTag() == DCM_Item) + if (tag == DCM_Item) l_error = EC_InvalidTag; - else if (tag.getXTag() == DCM_SequenceDelimitationItem) + else if (tag == DCM_SequenceDelimitationItem) l_error = EC_SequEnd; - else if (tag.getXTag() == DCM_ItemDelimitationItem) + else if (tag == DCM_ItemDelimitationItem) l_error = EC_ItemEnd; else l_error = EC_InvalidTag; @@ -4705,7 +4756,7 @@ OFCondition DcmItem::newDicomElement(DcmElement *&newElement, else if (tag.isPrivate()) { // look up VR in private data dictionary - DcmTag newTag(tag.getXTag(), tag.getPrivateCreator()); + DcmTag newTag(tag.getTagKey(), tag.getPrivateCreator()); // special handling for private pixel data (compressed or uncompressed) if (newTag.getEVR() == EVR_px) { diff --git a/dcmdata/libsrc/dcjson.cc b/dcmdata/libsrc/dcjson.cc index a29b5278..dbbbe930 100644 --- a/dcmdata/libsrc/dcjson.cc +++ b/dcmdata/libsrc/dcjson.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2016-2022, OFFIS e.V. + * Copyright (C) 2016-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -76,11 +76,13 @@ void DcmJsonFormat::escapeControlCharacters(STD_NAMESPACE ostream &out, const OF void DcmJsonFormat::normalizeDecimalString(OFString &value) { // remove all plus characters that may occur in the string. - // These are permitted in DICOM but not in Json. + // These are permitted in DICOM but not in JSON. size_t pos; while (OFString_npos != (pos = value.find('+'))) value.erase(pos,1); + // check if the first character is a minus sign. + // if so, remove it and set "minus" to true OFBool minus = OFFalse; if (value.length() > 0 && value[0] == '-') @@ -89,20 +91,41 @@ void DcmJsonFormat::normalizeDecimalString(OFString &value) minus = OFTrue; } + // remove leading zeroes from the significand pos = value.find_first_not_of("0"); if (pos == OFString_npos) value = "0"; else { + // make sure that the significand does not start + // with a period, in this case, prepend a zero if (value[pos] == '.') value = '0' + value.substr(pos); else value = value.substr(pos); } + // add back any minus sign if (minus) value = '-' + value; + + // make sure that the significand does not end + // with a period + if (OFString_npos != (pos = value.find('.'))) + { + if (pos == value.length() -1) + { + // number ends with a period. Add a zero + value.append("0"); + } + else if ((value[pos+1] < '0') || (value[pos+1] > '9')) + { + // no digit after period. Insert a zero + value.insert(pos+1, "0"); + } + } + } // Formats the number to JSON standard as IntegerString diff --git a/dcmdata/libsrc/dcmetinf.cc b/dcmdata/libsrc/dcmetinf.cc index 0545866a..2ab3c2ae 100644 --- a/dcmdata/libsrc/dcmetinf.cc +++ b/dcmdata/libsrc/dcmetinf.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1994-2021, OFFIS e.V. + * Copyright (C) 1994-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -296,11 +296,11 @@ OFBool DcmMetaInfo::checkAndReadPreamble(DcmInputStream &inStream, // check determined transfer syntax if ((tmpXferSyn.isExplicitVR() && xferSyn.isImplicitVR()) || (tmpXferSyn.isImplicitVR() && xferSyn.isExplicitVR()) || - xferSyn.getXfer() == EXS_Unknown) + xferSyn == EXS_Unknown) { // use determined transfer syntax newxfer = tmpXferSyn.getXfer(); - if (xferSyn.getXfer() != EXS_Unknown) + if (xferSyn != EXS_Unknown) DCMDATA_WARN("DcmMetaInfo: TransferSyntax of MetaInfo is other than expected"); } else newxfer = xferSyn.getXfer(); @@ -373,7 +373,7 @@ OFCondition DcmMetaInfo::readGroupLength(DcmInputStream &inStream, { l_error = DcmItem::readSubElement(inStream, newTag, newValueLength, newxfer, glenc, maxReadLength); bytesRead += newValueLength; - if (l_error.good() && newTag.getXTag() == xtag && elementList->get() != NULL && newValueLength > 0) + if (l_error.good() && newTag == xtag && elementList->get() != NULL && newValueLength > 0) { l_error = (OFstatic_cast(DcmUnsignedLong *, elementList->get()))->getUint32(headerLen); DCMDATA_TRACE("DcmMetaInfo::readGroupLength() Group Length of File Meta Header = " << headerLen + bytesRead); @@ -581,6 +581,9 @@ OFCondition DcmMetaInfo::write( /* set the transfer state of certain elements to indicate that they have already been written. */ if (getTransferState() == ERW_init) { + // Force a compression filter (if any) to process the input buffer, by calling outStream.write(). + // This ensures that we cannot get stuck if there are just a few bytes available in the buffer + outStream.write(NULL, 0); if (preambleUsed || !elementList->empty()) { if (fPreambleTransferState == ERW_init) diff --git a/dcmdata/libsrc/dcostrmb.cc b/dcmdata/libsrc/dcostrmb.cc index 3d13ad09..75e13525 100644 --- a/dcmdata/libsrc/dcostrmb.cc +++ b/dcmdata/libsrc/dcostrmb.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2002-2017, OFFIS e.V. + * Copyright (C) 2002-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -62,7 +62,7 @@ offile_off_t DcmBufferConsumer::avail() const offile_off_t DcmBufferConsumer::write(const void *buf, offile_off_t buflen) { offile_off_t result = 0; - if (status_.good() && buf && buflen) + if (buflen && buf && status_.good()) { result = bufSize_ - filled_; if (result > buflen) result = buflen; diff --git a/dcmdata/libsrc/dcostrmf.cc b/dcmdata/libsrc/dcostrmf.cc index 5c71bbdd..4bcd6978 100644 --- a/dcmdata/libsrc/dcostrmf.cc +++ b/dcmdata/libsrc/dcostrmf.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2002-2021, OFFIS e.V. + * Copyright (C) 2002-2022, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -37,7 +37,8 @@ END_EXTERN_C DcmFileConsumer::DcmFileConsumer(const OFFilename &filename) : DcmConsumer() -, file_() +, file_container_() +, file_(file_container_) , status_(EC_Normal) { if (!file_.fopen(filename, "wb")) @@ -49,6 +50,15 @@ DcmFileConsumer::DcmFileConsumer(const OFFilename &filename) DcmFileConsumer::DcmFileConsumer(FILE *file) : DcmConsumer() +, file_container_(file) +, file_(file_container_) +, status_(EC_Normal) +{ +} + +DcmFileConsumer::DcmFileConsumer(OFFile &file) +: DcmConsumer() +, file_container_() , file_(file) , status_(EC_Normal) { @@ -84,7 +94,7 @@ offile_off_t DcmFileConsumer::avail() const offile_off_t DcmFileConsumer::write(const void *buf, offile_off_t buflen) { offile_off_t result = 0; - if (status_.good() && file_.open() && buf && buflen) + if (buflen && buf && status_.good() && file_.open()) { #ifdef WRITE_VERY_LARGE_CHUNKS /* This is the old behaviour prior to DCMTK 3.5.5 */ @@ -138,6 +148,12 @@ DcmOutputFileStream::DcmOutputFileStream(FILE *file) { } +DcmOutputFileStream::DcmOutputFileStream(OFFile& file) +: DcmOutputStream(&consumer_) // safe because DcmOutputStream only stores pointer +, consumer_(file) +{ +} + DcmOutputFileStream::~DcmOutputFileStream() { // last attempt to flush stream before file is closed diff --git a/dcmdata/libsrc/dcostrms.cc b/dcmdata/libsrc/dcostrms.cc index cee83b39..4234c136 100644 --- a/dcmdata/libsrc/dcostrms.cc +++ b/dcmdata/libsrc/dcostrms.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2002-2021, OFFIS e.V. + * Copyright (C) 2002-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -82,7 +82,9 @@ offile_off_t DcmStdoutConsumer::avail() const offile_off_t DcmStdoutConsumer::write(const void *buf, offile_off_t buflen) { - return OFstatic_cast(offile_off_t, fwrite(buf, 1, OFstatic_cast(size_t, buflen), stdout)); + if (buflen && buf) + return OFstatic_cast(offile_off_t, fwrite(buf, 1, OFstatic_cast(size_t, buflen), stdout)); + else return 0; } void DcmStdoutConsumer::flush() diff --git a/dcmdata/libsrc/dcpath.cc b/dcmdata/libsrc/dcpath.cc index 213a04d5..c5a81180 100644 --- a/dcmdata/libsrc/dcpath.cc +++ b/dcmdata/libsrc/dcpath.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2008-2021, OFFIS e.V. + * Copyright (C) 2008-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -650,7 +650,7 @@ OFCondition DcmPathProcessor::findOrCreateItemPath(DcmItem* item, OFString& path // check private reservation if desired if (m_checkPrivateReservations) { - status = checkPrivateTagReservation(item, tag.getXTag()); + status = checkPrivateTagReservation(item, tag.getTagKey()); if (status.bad()) return status; } @@ -942,11 +942,11 @@ DcmPathProcessor::checkPrivateTagReservation(DcmItem* item, const DcmTagKey& tag // check whether private creator is correct if (actualPrivateCreator != privateCreator) { - OFString msg = "Private creator string ("; + OFString msg = "Private creator identifier ("; msg += actualPrivateCreator; msg += ") other than expected ( "; msg += privateCreator; - msg += privateCreator; + msg += ")"; return makeOFCondition(OFM_dcmdata, 25, OF_error, msg.c_str()); } } diff --git a/dcmdata/libsrc/dcpcache.cc b/dcmdata/libsrc/dcpcache.cc index 918bf56b..2ce02eab 100644 --- a/dcmdata/libsrc/dcpcache.cc +++ b/dcmdata/libsrc/dcpcache.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2002-2010, OFFIS e.V. + * Copyright (C) 2002-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -11,19 +11,18 @@ * D-26121 Oldenburg, Germany * * - * Module: ofstd + * Module: dcmdata * * Author: Marco Eichelberg * - * Purpose: general purpose 32-bit CRC in C++ - * Code is based on the CRC32 implementation (C)1986 Gary S. Brown + * Purpose: class DcmPrivateTagCache * */ #include "dcmtk/config/osconfig.h" /* make sure OS specific configuration is included first */ #include "dcmtk/dcmdata/dcpcache.h" -#include "dcmtk/dcmdata/dcelem.h" /* for DcmElement, DcmObject */ +#include "dcmtk/dcmdata/dcelem.h" /* for DcmElement, DcmObject */ DcmPrivateTagCacheEntry::DcmPrivateTagCacheEntry(const DcmTagKey& tk, const char *pc) : tagKey(tk) diff --git a/dcmdata/libsrc/dcpixel.cc b/dcmdata/libsrc/dcpixel.cc index 7d1e6155..b5c682fb 100644 --- a/dcmdata/libsrc/dcpixel.cc +++ b/dcmdata/libsrc/dcpixel.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1997-2020, OFFIS e.V. + * Copyright (C) 1997-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -1189,7 +1189,7 @@ OFCondition DcmPixelData::getUncompressedFrame( if (numberOfFrames < 1) numberOfFrames = 1; Uint32 frameSize; - OFCondition result = getUncompressedFrameSize(dataset, frameSize); + OFCondition result = getUncompressedFrameSize(dataset, frameSize, existUnencapsulated); if (result.bad()) return result; // determine the minimum buffer size, which may be frame size plus one pad byte if frame size is odd. @@ -1345,6 +1345,10 @@ OFCondition DcmPixelData::writeJson(STD_NAMESPACE ostream &out, return EC_Normal; } + /* write JSON Opener and Closer, because otherwise the output is not valid JSON */ + writeJsonOpener(out, format); + writeJsonCloser(out, format); + // pixel data is encapsulated, return error return EC_CannotWriteJsonInlineBinary; } diff --git a/dcmdata/libsrc/dcpixseq.cc b/dcmdata/libsrc/dcpixseq.cc index b439569b..1af63add 100644 --- a/dcmdata/libsrc/dcpixseq.cc +++ b/dcmdata/libsrc/dcpixseq.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1994-2011, OFFIS e.V. + * Copyright (C) 1994-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -206,11 +206,11 @@ OFCondition DcmPixelSequence::makeSubObject(DcmObject *&subObject, switch (newTag.getEVR()) { case EVR_na: - if (newTag.getXTag() == DCM_Item) + if (newTag == DCM_Item) newObject = new DcmPixelItem(newTag, newLength); - else if (newTag.getXTag() == DCM_SequenceDelimitationItem) + else if (newTag == DCM_SequenceDelimitationItem) l_error = EC_SequEnd; - else if (newTag.getXTag() == DCM_ItemDelimitationItem) + else if (newTag == DCM_ItemDelimitationItem) l_error = EC_ItemEnd; else l_error = EC_InvalidTag; diff --git a/dcmdata/libsrc/dcpxitem.cc b/dcmdata/libsrc/dcpxitem.cc index 8b4d8998..d15eb17e 100644 --- a/dcmdata/libsrc/dcpxitem.cc +++ b/dcmdata/libsrc/dcpxitem.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1994-2022, OFFIS e.V. + * Copyright (C) 1994-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -369,6 +369,10 @@ OFCondition DcmPixelItem::writeSignatureFormat( /* write tag and length information to it, do something */ if (getTransferState() == ERW_init) { + // Force a compression filter (if any) to process the input buffer, by calling outStream.write(). + // This ensures that we cannot get stuck if there are just a few bytes available in the buffer + outStream.write(NULL, 0); + /* first compare with DCM_TagInfoLength (12). If there is not enough space * in the buffer, check if the buffer is still sufficient for the requirements * of this element, which may need only 8 instead of 12 bytes. diff --git a/dcmdata/libsrc/dcsequen.cc b/dcmdata/libsrc/dcsequen.cc index 18db9f79..adeb6453 100644 --- a/dcmdata/libsrc/dcsequen.cc +++ b/dcmdata/libsrc/dcsequen.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1994-2021, OFFIS e.V. + * Copyright (C) 1994-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -549,16 +549,16 @@ OFCondition DcmSequenceOfItems::makeSubObject(DcmObject *&subObject, switch (newTag.getEVR()) { case EVR_na: - if (newTag.getXTag() == DCM_Item) + if (newTag == DCM_Item) { - if (getTag().getXTag() == DCM_DirectoryRecordSequence) + if (getTag() == DCM_DirectoryRecordSequence) subItem = new DcmDirectoryRecord(newTag, newLength); else subItem = new DcmItem(newTag, newLength); } - else if (newTag.getXTag() == DCM_SequenceDelimitationItem) + else if (newTag == DCM_SequenceDelimitationItem) l_error = EC_SequEnd; - else if (newTag.getXTag() == DCM_ItemDelimitationItem) + else if (newTag == DCM_ItemDelimitationItem) l_error = EC_ItemEnd; else l_error = EC_InvalidTag; @@ -796,6 +796,10 @@ OFCondition DcmSequenceOfItems::write(DcmOutputStream &outStream, { if (getTransferState() == ERW_init) { + // Force a compression filter (if any) to process the input buffer, by calling outStream.write(). + // This ensures that we cannot get stuck if there are just a few bytes available in the buffer + outStream.write(NULL, 0); + /* first compare with DCM_TagInfoLength (12). If there is not enough space * in the buffer, check if the buffer is still sufficient for the requirements * of this element, which may need only 8 instead of 12 bytes. @@ -838,6 +842,9 @@ OFCondition DcmSequenceOfItems::write(DcmOutputStream &outStream, setTransferState(ERW_ready); if (getLengthField() == DCM_UndefinedLength) { + // Force a compression filter (if any) to process the input buffer, by calling outStream.write(). + // This ensures that we cannot get stuck if there are just a few bytes available in the buffer + outStream.write(NULL, 0); if (outStream.avail() >= 8) { // write sequence delimitation item @@ -920,6 +927,10 @@ OFCondition DcmSequenceOfItems::writeSignatureFormat(DcmOutputStream &outStream, { if (getTransferState() == ERW_init) { + // Force a compression filter (if any) to process the input buffer, by calling outStream.write(). + // This ensures that we cannot get stuck if there are just a few bytes available in the buffer + outStream.write(NULL, 0); + /* first compare with DCM_TagInfoLength (12). If there is not enough space * in the buffer, check if the buffer is still sufficient for the requirements * of this element, which may need only 8 instead of 12 bytes. @@ -957,6 +968,11 @@ OFCondition DcmSequenceOfItems::writeSignatureFormat(DcmOutputStream &outStream, if (errorFlag.good()) { setTransferState(ERW_ready); + + // Force a compression filter (if any) to process the input buffer, by calling outStream.write(). + // This ensures that we cannot get stuck if there are just a few bytes available in the buffer + outStream.write(NULL, 0); + /* we always write a sequence delimitation item tag, but no length */ if (outStream.avail() >= 4) { diff --git a/dcmdata/libsrc/dctag.cc b/dcmdata/libsrc/dctag.cc index 00010030..9166d51d 100644 --- a/dcmdata/libsrc/dctag.cc +++ b/dcmdata/libsrc/dctag.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1994-2021, OFFIS e.V. + * Copyright (C) 1994-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -34,6 +34,7 @@ DcmTag::DcmTag() { } + DcmTag::DcmTag(const DcmTagKey& akey, const char *privCreator) : DcmTagKey(akey), vr(EVR_UNKNOWN), @@ -46,6 +47,7 @@ DcmTag::DcmTag(const DcmTagKey& akey, const char *privCreator) lookupVRinDictionary(); } + DcmTag::DcmTag(Uint16 g, Uint16 e, const char *privCreator) : DcmTagKey(g, e), vr(EVR_UNKNOWN), @@ -58,6 +60,7 @@ DcmTag::DcmTag(Uint16 g, Uint16 e, const char *privCreator) lookupVRinDictionary(); } + DcmTag::DcmTag(const DcmTagKey& akey, const DcmVR& avr) : DcmTagKey(akey), vr(avr), @@ -67,6 +70,7 @@ DcmTag::DcmTag(const DcmTagKey& akey, const DcmVR& avr) { } + DcmTag::DcmTag(Uint16 g, Uint16 e, const DcmVR& avr) : DcmTagKey(g, e), vr(avr), @@ -76,6 +80,7 @@ DcmTag::DcmTag(Uint16 g, Uint16 e, const DcmVR& avr) { } + DcmTag::DcmTag(const DcmTag& tag) : DcmTagKey(tag), vr(tag.vr), @@ -88,6 +93,18 @@ DcmTag::DcmTag(const DcmTag& tag) } +DcmTag::DcmTag(const DcmTag& tag, const DcmVR& avr) + : DcmTagKey(tag), + vr(avr), + tagName(NULL), + privateCreator(NULL), + errorFlag(tag.errorFlag) +{ + updateTagName(tag.tagName); + updatePrivateCreator(tag.privateCreator); +} + + // ******************************** @@ -114,8 +131,43 @@ DcmTag& DcmTag::operator=(const DcmTag& tag) return *this; } + // ******************************** + +OFBool DcmTag::operator==(const DcmTag& tag) const +{ + OFBool result = DcmTagKey::operator==(tag); + if (result) + { + // check whether private creator identifiers are identical + if ((privateCreator != NULL) && (tag.getPrivateCreator() != NULL)) + result = (strcmp(privateCreator, tag.getPrivateCreator()) == 0); + else if (privateCreator != tag.getPrivateCreator()) + result = OFFalse; + } + return result; +} + + +OFBool DcmTag::operator!=(const DcmTag& tag) const +{ + OFBool result = DcmTagKey::operator!=(tag); + if (!result) + { + // check whether private creator identifiers are different + if ((privateCreator != NULL) && (tag.getPrivateCreator() != NULL)) + result = (strcmp(privateCreator, tag.getPrivateCreator()) != 0); + else if (privateCreator != tag.getPrivateCreator()) + result = OFTrue; + } + return result; +} + + +// ******************************** + + void DcmTag::lookupVRinDictionary() { const DcmDataDictionary& globalDataDict = dcmDataDict.rdlock(); @@ -128,6 +180,7 @@ void DcmTag::lookupVRinDictionary() dcmDataDict.rdunlock(); } + // ******************************** @@ -165,6 +218,7 @@ const char *DcmTag::getTagName() return DcmTag_ERROR_TagName; } + OFBool DcmTag::isSignable() const { OFBool result = isSignableTag(); @@ -173,6 +227,7 @@ OFBool DcmTag::isSignable() const return result; } + OFBool DcmTag::isUnknownVR() const { OFBool result = OFFalse; @@ -230,15 +285,16 @@ const char* DcmTag::getPrivateCreator() const return privateCreator; } + void DcmTag::setPrivateCreator(const char *privCreator) { - // a new private creator code probably changes the name - // of the tag. Enforce new dictionary lookup the next time - // getTagName() is called. + // a new private creator identifier probably changes the name of the tag. + // Enforce new dictionary lookup the next time getTagName() is called. updateTagName(NULL); updatePrivateCreator(privCreator); } + void DcmTag::updateTagName(const char *c) { delete[] tagName; @@ -252,6 +308,7 @@ void DcmTag::updateTagName(const char *c) tagName = NULL; } + void DcmTag::updatePrivateCreator(const char *c) { delete[] privateCreator; diff --git a/dcmdata/libsrc/dcuid.cc b/dcmdata/libsrc/dcuid.cc index b63501e3..a95eb619 100644 --- a/dcmdata/libsrc/dcuid.cc +++ b/dcmdata/libsrc/dcuid.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1994-2022, OFFIS e.V. + * Copyright (C) 1994-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -126,19 +126,26 @@ static const UIDNameMap uidNameMap[] = { { UID_JPIPReferencedTransferSyntax, "JPIPReferenced", "JPIPReferenced" }, { UID_JPIPReferencedDeflateTransferSyntax, "JPIPReferencedDeflate", "JPIPReferencedDeflate" }, { UID_MPEG2MainProfileAtMainLevelTransferSyntax, "MPEG2MPML", "MPEG2MainProfile@MainLevel" }, + { UID_FragmentableMPEG2MainProfileMainLevelTransferSyntax, "MPEG2MPMLF", "FragmentableMPEG2MainProfile/MainLevel" }, { UID_MPEG2MainProfileAtHighLevelTransferSyntax, "MPEG2MPHL", "MPEG2MainProfile@HighLevel" }, + { UID_FragmentableMPEG2MainProfileHighLevelTransferSyntax, "MPEG2MPHLF", "FragmentableMPEG2MainProfile/HighLevel" }, { UID_MPEG4HighProfileLevel4_1TransferSyntax, "MPEG4HP41", "MPEG4HighProfile/Level4.1" }, + { UID_FragmentableMPEG4HighProfileLevel4_1TransferSyntax, "MPEG4HP41F", "FragmentableMPEG4HighProfile/Level4.1" }, { UID_MPEG4BDcompatibleHighProfileLevel4_1TransferSyntax, "MPEG4HP41BD", "MPEG4BDcompatibleHighProfile/Level4.1" }, + { UID_FragmentableMPEG4BDcompatibleHighProfileLevel4_1TransferSyntax, "MPEG4HP41BDF", "FragmentableMPEG4BDcompatibleHighProfile/Level4.1" }, { UID_MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax, "MPEG4HP422D", "MPEG4HighProfile/Level4.2For2DVideo" }, + { UID_FragmentableMPEG4HighProfileLevel4_2_For2DVideoTransferSyntax, "MPEG4HP422DF", "FragmentableMPEG4HighProfile/Level4.2For2DVideo" }, { UID_MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax, "MPEG4HP423D", "MPEG4HighProfile/Level4.2For3DVideo" }, + { UID_FragmentableMPEG4HighProfileLevel4_2_For3DVideoTransferSyntax, "MPEG4HP423DF", "FragmentableMPEG4HighProfile/Level4.2For3DVideo" }, { UID_MPEG4StereoHighProfileLevel4_2TransferSyntax, "MPEG4HP42STEREO", "MPEG4StereoHighProfile/Level4.2" }, + { UID_FragmentableMPEG4StereoHighProfileLevel4_2TransferSyntax, "MPEG4HP42STEREOF", "FragmentableMPEG4StereoHighProfile/Level4.2" }, { UID_HEVCMainProfileLevel5_1TransferSyntax, "HEVCMP51", "HEVCMainProfile/Level5.1" }, { UID_HEVCMain10ProfileLevel5_1TransferSyntax, "HEVCM10P51", "HEVCMain10Profile/Level5.1" }, { UID_SMPTEST2110_20_UncompressedProgressiveActiveVideoTransferSyntax, "SMPTEST211020UncompressedProgressiveActiveVideo", "SMPTEST2110-20:UncompressedProgressiveActiveVideo" }, { UID_SMPTEST2110_20_UncompressedInterlacedActiveVideoTransferSyntax, "SMPTEST211020UncompressedInterlacedActiveVideo", "SMPTEST2110-20:UncompressedInterlacedActiveVideo" }, { UID_SMPTEST2110_30_PCMDigitalAudioTransferSyntax, "SMPTEST211030PCMDigitalAudio", "SMPTEST2110-30:PCMDigitalAudio" }, - { UID_RFC2557MIMEEncapsulationTransferSyntax, "RFC2557MIMEEncapsulation", "RFC2557MIMEEncapsulation" }, - { UID_XMLEncodingTransferSyntax, "XMLEncoding", "XMLEncoding" }, + { UID_RETIRED_RFC2557MIMEEncapsulationTransferSyntax, "RFC2557MIMEEncapsulation", "RETIRED_RFC2557MIMEEncapsulation" }, + { UID_RETIRED_XMLEncodingTransferSyntax, "XMLEncoding", "RETIRED_XMLEncoding" }, { UID_PrivateGE_LEI_WithBigEndianPixelDataTransferSyntax, NULL /* no official keyword */, "PrivateGELittleEndianImplicitWithBigEndianPixelData" }, // Storage (DICOM) @@ -160,7 +167,6 @@ static const UIDNameMap uidNameMap[] = { { UID_CArmPhotonElectronRadiationStorage, "CArmPhotonElectronRadiationStorage", "CArmPhotonElectronRadiationStorage" }, { UID_ChestCADSRStorage, "ChestCADSRStorage", "ChestCADSRStorage" }, { UID_ColonCADSRStorage, "ColonCADSRStorage", "ColonCADSRStorage" }, - { UID_ColorPaletteStorage, "ColorPaletteStorage", "ColorPaletteStorage" }, { UID_ColorSoftcopyPresentationStateStorage, "ColorSoftcopyPresentationStateStorage", "ColorSoftcopyPresentationStateStorage" }, { UID_CompositingPlanarMPRVolumetricPresentationStateStorage, "CompositingPlanarMPRVolumetricPresentationStateStorage", "CompositingPlanarMPRVolumetricPresentationStateStorage" }, { UID_Comprehensive3DSRStorage, "Comprehensive3DSRStorage", "Comprehensive3DSRStorage" }, @@ -186,28 +192,27 @@ static const UIDNameMap uidNameMap[] = { { UID_EncapsulatedOBJStorage, "EncapsulatedOBJStorage", "EncapsulatedOBJStorage" }, { UID_EncapsulatedPDFStorage, "EncapsulatedPDFStorage", "EncapsulatedPDFStorage" }, { UID_EncapsulatedSTLStorage, "EncapsulatedSTLStorage", "EncapsulatedSTLStorage" }, + { UID_EnhancedContinuousRTImageStorage, "EnhancedContinuousRTImageStorage", "EnhancedContinuousRTImageStorage" }, { UID_EnhancedCTImageStorage, "EnhancedCTImageStorage", "EnhancedCTImageStorage" }, { UID_EnhancedMRColorImageStorage, "EnhancedMRColorImageStorage", "EnhancedMRColorImageStorage" }, { UID_EnhancedMRImageStorage, "EnhancedMRImageStorage", "EnhancedMRImageStorage" }, { UID_EnhancedPETImageStorage, "EnhancedPETImageStorage", "EnhancedPETImageStorage" }, + { UID_EnhancedRTImageStorage, "EnhancedRTImageStorage", "EnhancedRTImageStorage" }, { UID_EnhancedSRStorage, "EnhancedSRStorage", "EnhancedSRStorage" }, { UID_EnhancedUSVolumeStorage, "EnhancedUSVolumeStorage", "EnhancedUSVolumeStorage" }, { UID_EnhancedXAImageStorage, "EnhancedXAImageStorage", "EnhancedXAImageStorage" }, { UID_EnhancedXRayRadiationDoseSRStorage, "EnhancedXRayRadiationDoseSRStorage", "EnhancedXRayRadiationDoseSRStorage" }, { UID_EnhancedXRFImageStorage, "EnhancedXRFImageStorage", "EnhancedXRFImageStorage" }, { UID_ExtensibleSRStorage, "ExtensibleSRStorage", "ExtensibleSRStorage" }, + { UID_General32BitECGWaveformStorage, "General32bitECGWaveformStorage", "General32BitECGWaveformStorage" }, { UID_GeneralAudioWaveformStorage, "GeneralAudioWaveformStorage", "GeneralAudioWaveformStorage" }, { UID_GeneralECGWaveformStorage, "GeneralECGWaveformStorage", "GeneralECGWaveformStorage" }, - { UID_GenericImplantTemplateStorage, "GenericImplantTemplateStorage", "GenericImplantTemplateStorage" }, { UID_GrayscalePlanarMPRVolumetricPresentationStateStorage, "GrayscalePlanarMPRVolumetricPresentationStateStorage", "GrayscalePlanarMPRVolumetricPresentationStateStorage" }, { UID_GrayscaleSoftcopyPresentationStateStorage, "GrayscaleSoftcopyPresentationStateStorage", "GrayscaleSoftcopyPresentationStateStorage" }, - { UID_HangingProtocolStorage, "HangingProtocolStorage", "HangingProtocolStorage" }, { UID_HemodynamicWaveformStorage, "HemodynamicWaveformStorage", "HemodynamicWaveformStorage" }, - { UID_ImplantAssemblyTemplateStorage, "ImplantAssemblyTemplateStorage", "ImplantAssemblyTemplateStorage" }, { UID_ImplantationPlanSRStorage, "ImplantationPlanSRStorage", "ImplantationPlanSRStorage" }, // the following line is needed for reasons of backward compatibility (name of SOP Class changed, see the previous line) { UID_ImplantationPlanSRStorage, NULL /* see above */, "ImplantationPlanSRDocumentStorage" }, - { UID_ImplantTemplateGroupStorage, "ImplantTemplateGroupStorage", "ImplantTemplateGroupStorage" }, { UID_IntraocularLensCalculationsStorage, "IntraocularLensCalculationsStorage", "IntraocularLensCalculationsStorage" }, { UID_IntravascularOpticalCoherenceTomographyImageStorageForPresentation, "IntravascularOpticalCoherenceTomographyImageStorageForPresentation", "IntravascularOpticalCoherenceTomographyImageStorageForPresentation" }, { UID_IntravascularOpticalCoherenceTomographyImageStorageForProcessing, "IntravascularOpticalCoherenceTomographyImageStorageForProcessing", "IntravascularOpticalCoherenceTomographyImageStorageForProcessing" }, @@ -241,6 +246,7 @@ static const UIDNameMap uidNameMap[] = { { UID_ParametricMapStorage, "ParametricMapStorage", "ParametricMapStorage" }, { UID_PatientRadiationDoseSRStorage, "PatientRadiationDoseSRStorage", "PatientRadiationDoseSRStorage" }, { UID_PerformedImagingAgentAdministrationSRStorage, "PerformedImagingAgentAdministrationSRStorage", "PerformedImagingAgentAdministrationSRStorage" }, + { UID_PhotoacousticImageStorage, "PhotoacousticImageStorage", "PhotoacousticImageStorage" }, { UID_PlannedImagingAgentAdministrationSRStorage, "PlannedImagingAgentAdministrationSRStorage", "PlannedImagingAgentAdministrationSRStorage" }, { UID_PositronEmissionTomographyImageStorage, "PositronEmissionTomographyImageStorage", "PositronEmissionTomographyImageStorage" }, { UID_ProcedureLogStorage, "ProcedureLogStorage", "ProcedureLogStorage" }, @@ -261,6 +267,7 @@ static const UIDNameMap uidNameMap[] = { { UID_RTImageStorage, "RTImageStorage", "RTImageStorage" }, { UID_RTIonBeamsTreatmentRecordStorage, "RTIonBeamsTreatmentRecordStorage", "RTIonBeamsTreatmentRecordStorage" }, { UID_RTIonPlanStorage, "RTIonPlanStorage", "RTIonPlanStorage" }, + { UID_RTPatientPositionAcquisitionInstructionStorage, "RTPatientPositionAcquisitionInstructionStorage", "RTPatientPositionAcquisitionInstructionStorage" }, { UID_RTPhysicianIntentStorage, "RTPhysicianIntentStorage", "RTPhysicianIntentStorage" }, { UID_RTPlanStorage, "RTPlanStorage", "RTPlanStorage" }, { UID_RTRadiationRecordSetStorage, "RTRadiationRecordSetStorage", "RTRadiationRecordSetStorage" }, @@ -290,6 +297,7 @@ static const UIDNameMap uidNameMap[] = { { UID_TwelveLeadECGWaveformStorage, "TwelveLeadECGWaveformStorage", "TwelveLeadECGWaveformStorage" }, { UID_UltrasoundImageStorage, "UltrasoundImageStorage", "UltrasoundImageStorage" }, { UID_UltrasoundMultiframeImageStorage, "UltrasoundMultiFrameImageStorage", "UltrasoundMultiframeImageStorage" }, + { UID_VariableModalityLUTSoftcopyPresentationStateStorage, "VariableModalityLUTSoftcopyPresentationStateStorage", "VariableModalityLUTSoftcopyPresentationStateStorage" }, { UID_VideoEndoscopicImageStorage, "VideoEndoscopicImageStorage", "VideoEndoscopicImageStorage" }, { UID_VideoMicroscopicImageStorage, "VideoMicroscopicImageStorage", "VideoMicroscopicImageStorage" }, { UID_VideoPhotographicImageStorage, "VideoPhotographicImageStorage", "VideoPhotographicImageStorage" }, @@ -385,7 +393,8 @@ static const UIDNameMap uidNameMap[] = { { UID_StorageCommitmentPushModelSOPClass, "StorageCommitmentPushModel", "StorageCommitmentPushModelSOPClass" }, { UID_StorageCommitmentPushModelSOPInstance, "StorageCommitmentPushModelInstance", "StorageCommitmentPushModelSOPInstance" }, - // Hanging Protocols + // Hanging Protocol Storage and Query/Retrieve + { UID_HangingProtocolStorage, "HangingProtocolStorage", "HangingProtocolStorage" }, { UID_FINDHangingProtocolInformationModel, "HangingProtocolInformationModelFind", "FINDHangingProtocolInformationModel" }, { UID_MOVEHangingProtocolInformationModel, "HangingProtocolInformationModelMove", "MOVEHangingProtocolInformationModel" }, { UID_GETHangingProtocolInformationModel, "HangingProtocolInformationModelGet", "GETHangingProtocolInformationModel" }, @@ -395,18 +404,22 @@ static const UIDNameMap uidNameMap[] = { { UID_CardiacRelevantPatientInformationQuery, "CardiacRelevantPatientInformationQuery", "CardiacRelevantPatientInformationQuery" }, { UID_GeneralRelevantPatientInformationQuery, "GeneralRelevantPatientInformationQuery", "GeneralRelevantPatientInformationQuery" }, - // Color Palette Query/Retrieve + // Color Palette Storage and Query/Retrieve + { UID_ColorPaletteStorage, "ColorPaletteStorage", "ColorPaletteStorage" }, { UID_FINDColorPaletteInformationModel, "ColorPaletteQueryRetrieveInformationModelFind", "FINDColorPaletteInformationModel" }, { UID_MOVEColorPaletteInformationModel, "ColorPaletteQueryRetrieveInformationModelMove", "MOVEColorPaletteInformationModel" }, { UID_GETColorPaletteInformationModel, "ColorPaletteQueryRetrieveInformationModelGet", "GETColorPaletteInformationModel" }, - // Implant Template Query/Retrieve + // Implant Template Storage and Query/Retrieve + { UID_GenericImplantTemplateStorage, "GenericImplantTemplateStorage", "GenericImplantTemplateStorage" }, { UID_FINDGenericImplantTemplateInformationModel, "GenericImplantTemplateInformationModelFind", "FINDGenericImplantTemplateInformationModel" }, { UID_MOVEGenericImplantTemplateInformationModel, "GenericImplantTemplateInformationModelMove", "MOVEGenericImplantTemplateInformationModel" }, { UID_GETGenericImplantTemplateInformationModel, "GenericImplantTemplateInformationModelGet", "GETGenericImplantTemplateInformationModel" }, + { UID_ImplantAssemblyTemplateStorage, "ImplantAssemblyTemplateStorage", "ImplantAssemblyTemplateStorage" }, { UID_FINDImplantAssemblyTemplateInformationModel, "ImplantAssemblyTemplateInformationModelFind", "FINDImplantAssemblyTemplateInformationModel" }, { UID_MOVEImplantAssemblyTemplateInformationModel, "ImplantAssemblyTemplateInformationModelMove", "MOVEImplantAssemblyTemplateInformationModel" }, { UID_GETImplantAssemblyTemplateInformationModel, "ImplantAssemblyTemplateInformationModelGet", "GETImplantAssemblyTemplateInformationModel" }, + { UID_ImplantTemplateGroupStorage, "ImplantTemplateGroupStorage", "ImplantTemplateGroupStorage" }, { UID_FINDImplantTemplateGroupInformationModel, "ImplantTemplateGroupInformationModelFind", "FINDImplantTemplateGroupInformationModel" }, { UID_MOVEImplantTemplateGroupInformationModel, "ImplantTemplateGroupInformationModelMove", "MOVEImplantTemplateGroupInformationModel" }, { UID_GETImplantTemplateGroupInformationModel, "ImplantTemplateGroupInformationModelGet", "GETImplantTemplateGroupInformationModel" }, @@ -421,6 +434,15 @@ static const UIDNameMap uidNameMap[] = { { UID_MOVEProtocolApprovalInformationModel, "ProtocolApprovalInformationModelMove", "MOVEProtocolApprovalInformationModel" }, { UID_GETProtocolApprovalInformationModel, "ProtocolApprovalInformationModelGet", "GETProtocolApprovalInformationModel" }, + // Inventory Storage, Query/Retrieve, and related Services + { UID_InventoryStorage, "InventoryStorage", "InventoryStorage" }, + { UID_FINDInventory, "InventoryFind", "FINDInventory" }, + { UID_MOVEInventory, "InventoryMove", "MOVEInventory" }, + { UID_GETInventory, "InventoryGet", "GETInventory" }, + { UID_InventoryCreation, "InventoryCreation", "InventoryCreation" }, + { UID_RepositoryQuery, "RepositoryQuery", "RepositoryQuery" }, + { UID_StorageManagementSOPInstance, "StorageManagementInstance", "StorageManagementSOPInstance" }, + // Print { UID_BasicAnnotationBoxSOPClass, "BasicAnnotationBox", "BasicAnnotationBoxSOPClass" }, { UID_BasicColorImageBoxSOPClass, "BasicColorImageBox", "BasicColorImageBoxSOPClass" }, @@ -659,16 +681,19 @@ const char* dcmAllStorageSOPClassUIDs[] = { UID_EncapsulatedOBJStorage, UID_EncapsulatedPDFStorage, UID_EncapsulatedSTLStorage, + UID_EnhancedContinuousRTImageStorage, UID_EnhancedCTImageStorage, UID_EnhancedMRColorImageStorage, UID_EnhancedMRImageStorage, UID_EnhancedPETImageStorage, + UID_EnhancedRTImageStorage, UID_EnhancedSRStorage, UID_EnhancedUSVolumeStorage, UID_EnhancedXAImageStorage, UID_EnhancedXRayRadiationDoseSRStorage, UID_EnhancedXRFImageStorage, UID_ExtensibleSRStorage, + UID_General32BitECGWaveformStorage, UID_GeneralAudioWaveformStorage, UID_GeneralECGWaveformStorage, UID_GrayscalePlanarMPRVolumetricPresentationStateStorage, @@ -708,6 +733,7 @@ const char* dcmAllStorageSOPClassUIDs[] = { UID_PatientRadiationDoseSRStorage, UID_PerformedImagingAgentAdministrationSRStorage, UID_PlannedImagingAgentAdministrationSRStorage, + UID_PhotoacousticImageStorage, UID_PositronEmissionTomographyImageStorage, UID_ProcedureLogStorage, UID_PseudoColorSoftcopyPresentationStateStorage, @@ -726,6 +752,7 @@ const char* dcmAllStorageSOPClassUIDs[] = { UID_RTImageStorage, UID_RTIonBeamsTreatmentRecordStorage, UID_RTIonPlanStorage, + UID_RTPatientPositionAcquisitionInstructionStorage, UID_RTPhysicianIntentStorage, UID_RTPlanStorage, UID_RTRadiationRecordSetStorage, @@ -755,6 +782,7 @@ const char* dcmAllStorageSOPClassUIDs[] = { UID_TwelveLeadECGWaveformStorage, UID_UltrasoundImageStorage, UID_UltrasoundMultiframeImageStorage, + UID_VariableModalityLUTSoftcopyPresentationStateStorage, UID_VideoEndoscopicImageStorage, UID_VideoMicroscopicImageStorage, UID_VideoPhotographicImageStorage, @@ -827,6 +855,7 @@ const char* dcmNonPatientStorageSOPClassUIDs[] = { UID_HangingProtocolStorage, UID_ImplantAssemblyTemplateStorage, UID_ImplantTemplateGroupStorage, + UID_InventoryStorage, UID_ProtocolApprovalStorage, UID_XADefinedProcedureProtocolStorage, // end marker (important!) @@ -966,8 +995,11 @@ const char* dcmLongSCUStorageSOPClassUIDs[] = { // UID_EncapsulatedMTLStorage, // UID_EncapsulatedOBJStorage, // UID_EncapsulatedSTLStorage, +// UID_EnhancedContinuousRTImageStorage, +// UID_EnhancedRTImageStorage, // UID_EnhancedXRayRadiationDoseSRStorage, // UID_ExtensibleSRStorage, +// UID_General32BitECGWaveformStorage, // UID_GrayscalePlanarMPRVolumetricPresentationStateStorage, // UID_MicroscopyBulkSimpleAnnotationsStorage, // UID_MultichannelRespiratoryWaveformStorage, @@ -977,12 +1009,14 @@ const char* dcmLongSCUStorageSOPClassUIDs[] = { // UID_ParametricMapStorage, // UID_PatientRadiationDoseSRStorage, // UID_PerformedImagingAgentAdministrationSRStorage, +// UID_PhotoacousticImageStorage, // UID_PlannedImagingAgentAdministrationSRStorage, // UID_RadiopharmaceuticalRadiationDoseSRStorage, // UID_RoboticArmRadiationStorage, // UID_RoboticRadiationRecordStorage, // UID_RoutineScalpElectroencephalogramWaveformStorage, // UID_RTBrachyApplicationSetupDeliveryInstructionStorage, +// UID_RTPatientPositionAcquisitionInstructionStorage, // UID_RTPhysicianIntentStorage, // UID_RTRadiationRecordSetStorage, // UID_RTRadiationSalvageRecordStorage, @@ -996,6 +1030,7 @@ const char* dcmLongSCUStorageSOPClassUIDs[] = { // UID_TomotherapeuticRadiationRecordStorage, // UID_TomotherapeuticRadiationStorage, // UID_TractographyResultsStorage, +// UID_VariableModalityLUTSoftcopyPresentationStateStorage, // UID_VolumeRenderingVolumetricPresentationStateStorage, // UID_WideFieldOphthalmicPhotographyStereographicProjectionImageStorage, // UID_WideFieldOphthalmicPhotography3DCoordinatesImageStorage, @@ -1007,6 +1042,7 @@ const char* dcmLongSCUStorageSOPClassUIDs[] = { // UID_HangingProtocolStorage, // UID_ImplantAssemblyTemplateStorage, // UID_ImplantTemplateGroupStorage, +// UID_InventoryStorage, // UID_ProtocolApprovalStorage, // UID_XADefinedProcedureProtocolStorage, // retired @@ -1161,10 +1197,12 @@ const char* dcmImageSOPClassUIDs[] = { UID_DigitalMammographyXRayImageStorageForProcessing, UID_DigitalXRayImageStorageForPresentation, UID_DigitalXRayImageStorageForProcessing, + UID_EnhancedContinuousRTImageStorage, UID_EnhancedCTImageStorage, UID_EnhancedMRColorImageStorage, UID_EnhancedMRImageStorage, UID_EnhancedPETImageStorage, + UID_EnhancedRTImageStorage, UID_EnhancedUSVolumeStorage, UID_EnhancedXAImageStorage, UID_EnhancedXRFImageStorage, @@ -1186,9 +1224,11 @@ const char* dcmImageSOPClassUIDs[] = { UID_OphthalmicThicknessMapStorage, UID_OphthalmicTomographyImageStorage, UID_ParametricMapStorage, + UID_PhotoacousticImageStorage, UID_PositronEmissionTomographyImageStorage, UID_RTImageStorage, UID_SecondaryCaptureImageStorage, + UID_SegmentationStorage, UID_UltrasoundImageStorage, UID_UltrasoundMultiframeImageStorage, UID_VideoEndoscopicImageStorage, @@ -1286,16 +1326,19 @@ static const DcmModalityTable modalities[] = { { UID_EncapsulatedOBJStorage, "OBJ", 4096 }, { UID_EncapsulatedPDFStorage, "PDF", 1024 * 1024 }, { UID_EncapsulatedSTLStorage, "STL", 4096 }, + { UID_EnhancedContinuousRTImageStorage, "RIc", 4096 }, { UID_EnhancedCTImageStorage, "CTe", 256 * 512 * 512 }, { UID_EnhancedMRColorImageStorage, "MRc", 256 * 512 * 512 * 3 }, { UID_EnhancedMRImageStorage, "MRe", 256 * 512 * 512 }, { UID_EnhancedPETImageStorage, "PIe", 512 * 512 * 2 }, + { UID_EnhancedRTImageStorage, "RIe", 4096 }, { UID_EnhancedSRStorage, "SRe", 4096 }, { UID_EnhancedUSVolumeStorage, "USe", 512 * 512 }, { UID_EnhancedXAImageStorage, "XAe", 256 * 512 * 512 }, { UID_EnhancedXRayRadiationDoseSRStorage, "SRde", 4096 }, { UID_EnhancedXRFImageStorage, "RFe", 256 * 512 * 512 }, { UID_ExtensibleSRStorage, "SRx", 4096 }, + { UID_General32BitECGWaveformStorage, "ECGh", 4096 }, { UID_GeneralAudioWaveformStorage, "AUG", 4096 }, { UID_GeneralECGWaveformStorage, "ECG", 4096 }, { UID_GenericImplantTemplateStorage, "IT", 4096 }, @@ -1309,6 +1352,7 @@ static const DcmModalityTable modalities[] = { { UID_IntraocularLensCalculationsStorage, "OPc", 4096 }, { UID_IntravascularOpticalCoherenceTomographyImageStorageForPresentation, "OCt", 512 * 512 }, { UID_IntravascularOpticalCoherenceTomographyImageStorageForProcessing, "OCp", 512 * 512 }, + { UID_InventoryStorage, "INV", 4096 }, { UID_KeratometryMeasurementsStorage, "OPk", 4096 }, { UID_KeyObjectSelectionDocumentStorage, "KO", 4096 }, { UID_LegacyConvertedEnhancedCTImageStorage, "CTl", 512 * 512 * 2 }, @@ -1338,13 +1382,14 @@ static const DcmModalityTable modalities[] = { { UID_ParametricMapStorage, "PM", 256 * 256 * 4 }, { UID_PatientRadiationDoseSRStorage, "SRq", 4096 }, { UID_PerformedImagingAgentAdministrationSRStorage, "SRi", 4096 }, + { UID_PhotoacousticImageStorage, "PA", 256 * 512 * 512 }, { UID_PlannedImagingAgentAdministrationSRStorage, "SRj", 4096 }, { UID_PositronEmissionTomographyImageStorage, "PI", 512 * 512 * 2 }, { UID_ProcedureLogStorage, "SRp", 4096 }, - { UID_ProtocolApprovalStorage, "PA", 4096 }, + { UID_ProtocolApprovalStorage, "PAp", 4096 }, /* was PA */ { UID_PseudoColorSoftcopyPresentationStateStorage, "PSp", 4096 }, { UID_RadiopharmaceuticalRadiationDoseSRStorage, "SRr", 4096 }, - { UID_RawDataStorage, "RAW", 512 * 512 * 256 }, + { UID_RawDataStorage, "RAW", 256 * 512 * 512 }, { UID_RealWorldValueMappingStorage, "RWM", 4096 }, { UID_RespiratoryWaveformStorage, "WVr", 4096 }, { UID_RoboticArmRadiationStorage, "Rra", 4096 }, /* was RRr */ @@ -1358,6 +1403,7 @@ static const DcmModalityTable modalities[] = { { UID_RTImageStorage, "RI", 4096 }, { UID_RTIonBeamsTreatmentRecordStorage, "RTi", 4096 }, { UID_RTIonPlanStorage, "RPi", 4096 }, + { UID_RTPatientPositionAcquisitionInstructionStorage, "RPp", 4096 }, { UID_RTPlanStorage, "RP" , 4096 }, { UID_RTPhysicianIntentStorage, "RIp", 4096 }, { UID_RTRadiationRecordSetStorage, "RSr", 4096 }, @@ -1369,7 +1415,7 @@ static const DcmModalityTable modalities[] = { { UID_RTTreatmentPreparationStorage, "RTp", 4096 }, { UID_RTTreatmentSummaryRecordStorage, "RTs", 4096 }, { UID_SecondaryCaptureImageStorage, "SC", 512 * 512 * 2 }, - { UID_SegmentationStorage, "SG", 4096 }, + { UID_SegmentationStorage, "SG", 512 * 512 }, { UID_SegmentedVolumeRenderingVolumetricPresentationStateStorage, "VPs", 4096 }, { UID_SimplifiedAdultEchoSRStorage, "SRu", 4096 }, { UID_SleepElectroencephalogramWaveformStorage, "WVs", 4096 }, @@ -1387,6 +1433,7 @@ static const DcmModalityTable modalities[] = { { UID_TwelveLeadECGWaveformStorage, "TLE", 4096 }, { UID_UltrasoundImageStorage, "US", 512 * 512 }, { UID_UltrasoundMultiframeImageStorage, "USm", 512 * 512 }, + { UID_VariableModalityLUTSoftcopyPresentationStateStorage, "PSv", 4096 }, { UID_VideoEndoscopicImageStorage, "VVe", 768 * 576 * 3 }, { UID_VideoMicroscopicImageStorage, "VVm", 768 * 576 * 3 }, { UID_VideoPhotographicImageStorage, "VVp", 768 * 576 * 3 }, @@ -1481,7 +1528,7 @@ unsigned long dcmGuessModalityBytes(const char *sopClassUID) /* -** dcmFindNameOfUID(const char* uid) +** dcmFindNameOfUID(const char* uid, const char* defaultValue) ** Return the name of a UID. ** Performs a table lookup and returns a pointer to a read-only string. ** Returns defaultValue if the UID is not known. @@ -1520,22 +1567,22 @@ dcmFindUIDFromName(const char* name) /* -** dcmFindKeywordOfUID(const char* uid) +** dcmFindKeywordOfUID(const char* uid, const char* defaultValue) ** Return the keyword of a UID. ** Performs a table lookup and returns a pointer to a read-only string. -** Returns NULL if the UID is not known. +** Returns defaultValue if the UID is not known. */ const char* -dcmFindKeywordOfUID(const char* uid) +dcmFindKeywordOfUID(const char* uid, const char* defaultValue) { - if (uid == NULL) return NULL; + if (uid == NULL) return defaultValue; for (int i = 0; i < uidNameMap_size; i++) { if (uidNameMap[i].uid != NULL && strcmp(uid, uidNameMap[i].uid) == 0) { return uidNameMap[i].keyword; } } - return NULL; + return defaultValue; } // diff --git a/dcmdata/libsrc/dcxfer.cc b/dcmdata/libsrc/dcxfer.cc index f3bc300d..5fdc9d72 100644 --- a/dcmdata/libsrc/dcxfer.cc +++ b/dcmdata/libsrc/dcxfer.cc @@ -38,6 +38,7 @@ typedef struct OFBool retired; E_StreamCompression streamCompression; OFBool referenced; + OFBool fragmentable; } S_XferNames; @@ -58,6 +59,7 @@ const S_XferNames XferNames[] = OFFalse, OFFalse, ESC_none, + OFFalse, OFFalse }, // entry #1 @@ -72,6 +74,7 @@ const S_XferNames XferNames[] = OFFalse, OFFalse, ESC_none, + OFFalse, OFFalse }, // entry #2 @@ -86,6 +89,7 @@ const S_XferNames XferNames[] = OFFalse, OFFalse, ESC_none, + OFFalse, OFFalse }, // entry #3 @@ -100,6 +104,7 @@ const S_XferNames XferNames[] = OFFalse, OFTrue, // retired with Supplement 98 ESC_none, + OFFalse, OFFalse }, // entry #4 @@ -114,7 +119,8 @@ const S_XferNames XferNames[] = OFTrue, OFFalse, ESC_none, - OFFalse + OFFalse, + OFTrue }, // entry #5 { UID_JPEGProcess2_4TransferSyntax, @@ -128,7 +134,8 @@ const S_XferNames XferNames[] = OFTrue, OFFalse, ESC_none, - OFFalse + OFFalse, + OFTrue }, // entry #6 { UID_JPEGProcess3_5TransferSyntax, @@ -142,7 +149,8 @@ const S_XferNames XferNames[] = OFTrue, OFTrue, ESC_none, - OFFalse + OFFalse, + OFTrue }, // entry #7 { UID_JPEGProcess6_8TransferSyntax, @@ -156,7 +164,8 @@ const S_XferNames XferNames[] = OFTrue, OFTrue, ESC_none, - OFFalse + OFFalse, + OFTrue }, // entry #8 { UID_JPEGProcess7_9TransferSyntax, @@ -170,7 +179,8 @@ const S_XferNames XferNames[] = OFTrue, OFTrue, ESC_none, - OFFalse + OFFalse, + OFTrue }, // entry #9 { UID_JPEGProcess10_12TransferSyntax, @@ -184,7 +194,8 @@ const S_XferNames XferNames[] = OFTrue, OFTrue, ESC_none, - OFFalse + OFFalse, + OFTrue }, // entry #10 { UID_JPEGProcess11_13TransferSyntax, @@ -198,7 +209,8 @@ const S_XferNames XferNames[] = OFTrue, OFTrue, ESC_none, - OFFalse + OFFalse, + OFTrue }, // entry #11 { UID_JPEGProcess14TransferSyntax, @@ -212,7 +224,8 @@ const S_XferNames XferNames[] = OFFalse, OFFalse, ESC_none, - OFFalse + OFFalse, + OFTrue }, // entry #12 { UID_JPEGProcess15TransferSyntax, @@ -226,7 +239,8 @@ const S_XferNames XferNames[] = OFTrue, OFTrue, ESC_none, - OFFalse + OFFalse, + OFTrue }, // entry #13 { UID_JPEGProcess16_18TransferSyntax, @@ -240,7 +254,8 @@ const S_XferNames XferNames[] = OFTrue, OFTrue, ESC_none, - OFFalse + OFFalse, + OFTrue }, // entry #14 { UID_JPEGProcess17_19TransferSyntax, @@ -254,7 +269,8 @@ const S_XferNames XferNames[] = OFTrue, OFTrue, ESC_none, - OFFalse + OFFalse, + OFTrue }, // entry #15 { UID_JPEGProcess20_22TransferSyntax, @@ -268,7 +284,8 @@ const S_XferNames XferNames[] = OFTrue, OFTrue, ESC_none, - OFFalse + OFFalse, + OFTrue }, // entry #16 { UID_JPEGProcess21_23TransferSyntax, @@ -282,7 +299,8 @@ const S_XferNames XferNames[] = OFTrue, OFTrue, ESC_none, - OFFalse + OFFalse, + OFTrue }, // entry #17 { UID_JPEGProcess24_26TransferSyntax, @@ -296,7 +314,8 @@ const S_XferNames XferNames[] = OFTrue, OFTrue, ESC_none, - OFFalse + OFFalse, + OFTrue }, // entry #18 { UID_JPEGProcess25_27TransferSyntax, @@ -310,7 +329,8 @@ const S_XferNames XferNames[] = OFTrue, OFTrue, ESC_none, - OFFalse + OFFalse, + OFTrue }, // entry #19 { UID_JPEGProcess28TransferSyntax, @@ -324,7 +344,8 @@ const S_XferNames XferNames[] = OFTrue, OFTrue, ESC_none, - OFFalse + OFFalse, + OFTrue }, // entry #20 { UID_JPEGProcess29TransferSyntax, @@ -338,7 +359,8 @@ const S_XferNames XferNames[] = OFTrue, OFTrue, ESC_none, - OFFalse + OFFalse, + OFTrue }, // entry #21 { UID_JPEGProcess14SV1TransferSyntax, @@ -352,7 +374,8 @@ const S_XferNames XferNames[] = OFFalse, OFFalse, ESC_none, - OFFalse + OFFalse, + OFTrue }, // entry #22 { UID_RLELosslessTransferSyntax, @@ -366,6 +389,7 @@ const S_XferNames XferNames[] = OFFalse, OFFalse, ESC_none, + OFFalse, OFFalse }, // entry #23 @@ -384,6 +408,7 @@ const S_XferNames XferNames[] = #else ESC_unsupported, #endif + OFFalse, OFFalse }, // entry #24 @@ -398,7 +423,8 @@ const S_XferNames XferNames[] = OFFalse, OFFalse, ESC_none, - OFFalse + OFFalse, + OFTrue }, // entry #25 { UID_JPEGLSLossyTransferSyntax, @@ -412,7 +438,8 @@ const S_XferNames XferNames[] = OFTrue, OFFalse, ESC_none, - OFFalse + OFFalse, + OFTrue }, // entry #26 { UID_JPEG2000LosslessOnlyTransferSyntax, @@ -426,7 +453,8 @@ const S_XferNames XferNames[] = OFFalse, OFFalse, ESC_none, - OFFalse + OFFalse, + OFTrue }, // entry #27 { UID_JPEG2000TransferSyntax, @@ -440,7 +468,8 @@ const S_XferNames XferNames[] = OFTrue, OFFalse, ESC_none, - OFFalse + OFFalse, + OFTrue }, // entry #28 { UID_JPEG2000Part2MulticomponentImageCompressionLosslessOnlyTransferSyntax, @@ -454,7 +483,8 @@ const S_XferNames XferNames[] = OFFalse, OFFalse, ESC_none, - OFFalse + OFFalse, + OFTrue }, // entry #29 { UID_JPEG2000Part2MulticomponentImageCompressionTransferSyntax, @@ -468,7 +498,8 @@ const S_XferNames XferNames[] = OFTrue, OFFalse, ESC_none, - OFFalse + OFFalse, + OFTrue }, // entry #30 { UID_JPIPReferencedTransferSyntax, @@ -482,7 +513,8 @@ const S_XferNames XferNames[] = OFTrue, // really lossy? OFFalse, ESC_none, - OFTrue + OFTrue, + OFFalse }, // entry #31 { UID_JPIPReferencedDeflateTransferSyntax, @@ -500,7 +532,8 @@ const S_XferNames XferNames[] = #else ESC_unsupported, #endif - OFTrue + OFTrue, + OFFalse }, // entry #32 { UID_MPEG2MainProfileAtMainLevelTransferSyntax, @@ -514,9 +547,25 @@ const S_XferNames XferNames[] = OFTrue, OFFalse, ESC_none, + OFFalse, OFFalse }, // entry #33 + { UID_FragmentableMPEG2MainProfileMainLevelTransferSyntax, + "Fragmentable MPEG2 Main Profile / Main Level", + EXS_FragmentableMPEG2MainProfileMainLevel, + EBO_LittleEndian, + EBO_LittleEndian, + EVT_Explicit, + EJE_Encapsulated, + 0L, 0L, + OFTrue, + OFFalse, + ESC_none, + OFFalse, + OFTrue + }, + // entry #34 { UID_MPEG2MainProfileAtHighLevelTransferSyntax, "MPEG2 Main Profile @ High Level", // changed with DICOM 2016e to: MPEG2 Main Profile / High Level EXS_MPEG2MainProfileAtHighLevel, @@ -528,9 +577,25 @@ const S_XferNames XferNames[] = OFTrue, OFFalse, ESC_none, + OFFalse, OFFalse }, - // entry #34 + // entry #35 + { UID_FragmentableMPEG2MainProfileHighLevelTransferSyntax, + "Fragmentable MPEG2 Main Profile / High Level", + EXS_FragmentableMPEG2MainProfileHighLevel, + EBO_LittleEndian, + EBO_LittleEndian, + EVT_Explicit, + EJE_Encapsulated, + 0L, 0L, + OFTrue, + OFFalse, + ESC_none, + OFFalse, + OFTrue + }, + // entry #36 { UID_MPEG4HighProfileLevel4_1TransferSyntax, "MPEG-4 AVC/H.264 High Profile / Level 4.1", EXS_MPEG4HighProfileLevel4_1, @@ -542,9 +607,25 @@ const S_XferNames XferNames[] = OFTrue, OFFalse, ESC_none, + OFFalse, OFFalse }, - // entry #35 + // entry #37 + { UID_FragmentableMPEG4HighProfileLevel4_1TransferSyntax, + "Fragmentable MPEG-4 AVC/H.264 High Profile / Level 4.1", + EXS_FragmentableMPEG4HighProfileLevel4_1, + EBO_LittleEndian, + EBO_LittleEndian, + EVT_Explicit, + EJE_Encapsulated, + 0L, 0L, + OFTrue, + OFFalse, + ESC_none, + OFFalse, + OFTrue + }, + // entry #38 { UID_MPEG4BDcompatibleHighProfileLevel4_1TransferSyntax, "MPEG-4 AVC/H.264 BD-compatible High Profile / Level 4.1", EXS_MPEG4BDcompatibleHighProfileLevel4_1, @@ -556,9 +637,25 @@ const S_XferNames XferNames[] = OFTrue, OFFalse, ESC_none, + OFFalse, OFFalse }, - // entry #36 + // entry #39 + { UID_FragmentableMPEG4BDcompatibleHighProfileLevel4_1TransferSyntax, + "Fragmentable MPEG-4 AVC/H.264 BD-compatible High Profile / Level 4.1", + EXS_FragmentableMPEG4BDcompatibleHighProfileLevel4_1, + EBO_LittleEndian, + EBO_LittleEndian, + EVT_Explicit, + EJE_Encapsulated, + 0L, 0L, + OFTrue, + OFFalse, + ESC_none, + OFFalse, + OFTrue + }, + // entry #40 { UID_MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax, "MPEG-4 AVC/H.264 High Profile / Level 4.2 For 2D Video", EXS_MPEG4HighProfileLevel4_2_For2DVideo, @@ -570,9 +667,25 @@ const S_XferNames XferNames[] = OFTrue, OFFalse, ESC_none, + OFFalse, OFFalse }, - // entry #37 + // entry #41 + { UID_FragmentableMPEG4HighProfileLevel4_2_For2DVideoTransferSyntax, + "Fragmentable MPEG-4 AVC/H.264 High Profile / Level 4.2 For 2D Video", + EXS_FragmentableMPEG4HighProfileLevel4_2_For2DVideo, + EBO_LittleEndian, + EBO_LittleEndian, + EVT_Explicit, + EJE_Encapsulated, + 0L, 0L, + OFTrue, + OFFalse, + ESC_none, + OFFalse, + OFTrue + }, + // entry #42 { UID_MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax, "MPEG-4 AVC/H.264 High Profile / Level 4.2 For 3D Video", EXS_MPEG4HighProfileLevel4_2_For3DVideo, @@ -584,9 +697,25 @@ const S_XferNames XferNames[] = OFTrue, OFFalse, ESC_none, + OFFalse, OFFalse }, - // entry #38 + // entry #43 + { UID_FragmentableMPEG4HighProfileLevel4_2_For3DVideoTransferSyntax, + "Fragmentable MPEG-4 AVC/H.264 High Profile / Level 4.2 For 3D Video", + EXS_FragmentableMPEG4HighProfileLevel4_2_For3DVideo, + EBO_LittleEndian, + EBO_LittleEndian, + EVT_Explicit, + EJE_Encapsulated, + 0L, 0L, + OFTrue, + OFFalse, + ESC_none, + OFFalse, + OFTrue + }, + // entry #44 { UID_MPEG4StereoHighProfileLevel4_2TransferSyntax, "MPEG-4 AVC/H.264 Stereo High Profile / Level 4.2", EXS_MPEG4StereoHighProfileLevel4_2, @@ -598,9 +727,25 @@ const S_XferNames XferNames[] = OFTrue, OFFalse, ESC_none, + OFFalse, OFFalse }, - // entry #39 + // entry #45 + { UID_FragmentableMPEG4StereoHighProfileLevel4_2TransferSyntax, + "Fragmentable MPEG-4 AVC/H.264 Stereo High Profile / Level 4.2", + EXS_FragmentableMPEG4StereoHighProfileLevel4_2, + EBO_LittleEndian, + EBO_LittleEndian, + EVT_Explicit, + EJE_Encapsulated, + 0L, 0L, + OFTrue, + OFFalse, + ESC_none, + OFFalse, + OFTrue + }, + // entry #46 { UID_HEVCMainProfileLevel5_1TransferSyntax, "HEVC/H.265 Main Profile / Level 5.1", EXS_HEVCMainProfileLevel5_1, @@ -612,9 +757,10 @@ const S_XferNames XferNames[] = OFTrue, OFFalse, ESC_none, - OFFalse + OFFalse, + OFTrue }, - // entry #40 + // entry #47 { UID_HEVCMain10ProfileLevel5_1TransferSyntax, "HEVC/H.265 Main 10 Profile / Level 5.1", EXS_HEVCMain10ProfileLevel5_1, @@ -626,9 +772,10 @@ const S_XferNames XferNames[] = OFTrue, OFFalse, ESC_none, - OFFalse + OFFalse, + OFTrue }, - // entry #41 + // entry #48 { UID_PrivateGE_LEI_WithBigEndianPixelDataTransferSyntax, "Private GE Little Endian Implicit with big endian pixel data", EXS_PrivateGE_LEI_WithBigEndianPixelData, @@ -640,6 +787,7 @@ const S_XferNames XferNames[] = OFFalse, OFFalse, ESC_none, + OFFalse, OFFalse } }; @@ -663,7 +811,8 @@ DcmXfer::DcmXfer(E_TransferSyntax xfer) lossy(OFFalse), retired(OFFalse), streamCompression(ESC_none), - referenced(OFFalse) + referenced(OFFalse), + fragmentable(OFFalse) { int i = 0; while ((i < DIM_OF_XferNames) && XferNames[i].xfer != xfer) @@ -683,6 +832,7 @@ DcmXfer::DcmXfer(E_TransferSyntax xfer) retired = XferNames[i].retired; streamCompression = XferNames[i].streamCompression; referenced = XferNames[i].referenced; + fragmentable = XferNames[i].fragmentable; } } @@ -703,7 +853,8 @@ DcmXfer::DcmXfer(const char* xferName_xferID) lossy(OFFalse), retired(OFFalse), streamCompression(ESC_none), - referenced(OFFalse) + referenced(OFFalse), + fragmentable(OFFalse) { const char* xname = xferName_xferID; if (xname != NULL) @@ -726,6 +877,7 @@ DcmXfer::DcmXfer(const char* xferName_xferID) retired = XferNames[i].retired; streamCompression = XferNames[i].streamCompression; referenced = XferNames[i].referenced; + fragmentable = XferNames[i].fragmentable; } else { @@ -747,6 +899,7 @@ DcmXfer::DcmXfer(const char* xferName_xferID) retired = XferNames[i].retired; streamCompression = XferNames[i].streamCompression; referenced = XferNames[i].referenced; + fragmentable = XferNames[i].fragmentable; } } } @@ -769,7 +922,8 @@ DcmXfer::DcmXfer(const DcmXfer &newXfer) lossy(newXfer.lossy), retired(newXfer.retired), streamCompression(newXfer.streamCompression), - referenced(newXfer.referenced) + referenced(newXfer.referenced), + fragmentable(newXfer.fragmentable) { } @@ -807,6 +961,7 @@ DcmXfer &DcmXfer::operator=(const E_TransferSyntax xfer) retired = XferNames[i].retired; streamCompression = XferNames[i].streamCompression; referenced = XferNames[i].referenced; + fragmentable = XferNames[i].fragmentable; } else { xferSyn = EXS_Unknown; xferID = ""; @@ -821,6 +976,7 @@ DcmXfer &DcmXfer::operator=(const E_TransferSyntax xfer) retired = OFFalse; streamCompression = ESC_none; referenced = OFFalse; + fragmentable = OFFalse; } return *this; } @@ -846,6 +1002,7 @@ DcmXfer &DcmXfer::operator=(const DcmXfer &newXfer) retired = newXfer.retired; streamCompression = newXfer.streamCompression; referenced = newXfer.referenced; + fragmentable = newXfer.fragmentable; } return *this; } diff --git a/dcmdata/tests/CMakeLists.txt b/dcmdata/tests/CMakeLists.txt index 8c085968..10075d29 100644 --- a/dcmdata/tests/CMakeLists.txt +++ b/dcmdata/tests/CMakeLists.txt @@ -17,6 +17,7 @@ DCMTK_ADD_EXECUTABLE(dcmdata_tests tsequen.cc tspchrs.cc tstrval.cc + ttag.cc tvrcomp.cc tvrdatim.cc tvrds.cc diff --git a/dcmdata/tests/Makefile.in b/dcmdata/tests/Makefile.in index 02afcebd..8c72e4ed 100644 --- a/dcmdata/tests/Makefile.in +++ b/dcmdata/tests/Makefile.in @@ -18,7 +18,7 @@ oflogdir = $(top_srcdir)/../oflog LOCALINCLUDES = -I$(top_srcdir)/include -I$(ofstddir)/include -I$(oflogdir)/include LIBDIRS = -L$(top_srcdir)/libsrc -L$(top_srcdir)/libi2d -L$(ofstddir)/libsrc \ - -L$(oflogdir)/libsrc -L$(top_srcdir)/libdcxml -L$(oficonvdir)/libsrc + -L$(oflogdir)/libsrc -L$(top_srcdir)/libdcxml -L$(oficonvdir)/libsrc LOCALLIBS = -ldcmdata -loflog -lofstd -loficonv $(ZLIBLIBS) $(XMLLIBS) $(CHARCONVLIBS) $(MATHLIBS) I2DLIBS = -li2d LIBDCMXML = -ldcmxml @@ -26,7 +26,7 @@ LIBDCMXML = -ldcmxml objs = tests.o tpread.o ti2dbmp.o tchval.o tpath.o tvrdatim.o telemlen.o tparser.o \ tdict.o tvrds.o tvrfd.o tvrui.o tvrol.o tvrov.o tvrsv.o tvruv.o tstrval.o \ tspchrs.o tvrpn.o tparent.o tfilter.o tvrcomp.o tmatch.o tnewdcme.o \ - tgenuid.o tsequen.o titem.o + tgenuid.o tsequen.o titem.o ttag.o progs = tests diff --git a/dcmdata/tests/tests.cc b/dcmdata/tests/tests.cc index 08fb38a4..9864ca10 100644 --- a/dcmdata/tests/tests.cc +++ b/dcmdata/tests/tests.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2011-2020 OFFIS e.V. + * Copyright (C) 2011-2023 OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -44,6 +44,8 @@ OFTEST_REGISTER(dcmdata_other64bitVeryLong); OFTEST_REGISTER(dcmdata_signed64bitVeryLong); OFTEST_REGISTER(dcmdata_unsigned64bitVeryLong); OFTEST_REGISTER(dcmdata_VRCompare); +OFTEST_REGISTER(dcmdata_compareTag); +OFTEST_REGISTER(dcmdata_compareTagKey); OFTEST_REGISTER(dcmdata_elementLength_EVR_AE); OFTEST_REGISTER(dcmdata_elementLength_EVR_AS); OFTEST_REGISTER(dcmdata_elementLength_EVR_AT); diff --git a/dcmdata/tests/tnewdcme.cc b/dcmdata/tests/tnewdcme.cc index d995d2a7..6964c8f5 100644 --- a/dcmdata/tests/tnewdcme.cc +++ b/dcmdata/tests/tnewdcme.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2017-2018, Open Connections GmbH + * Copyright (C) 2017-2023, Open Connections GmbH * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation are maintained by @@ -60,7 +60,7 @@ OFTEST(dcmdata_newDicomElementPrivate) // Check whether creation as well as tag and value assignment are correct OFCHECK(elem); OFCHECK(elem->putOFStringArray(PRIVATE_STRING_VALUE).good()); - OFCHECK(elem->getTag().getXTag() == DcmTagKey(PRIVATE_ELEMENT_STRINGELEM)); + OFCHECK(elem->getTag() == DcmTagKey(PRIVATE_ELEMENT_STRINGELEM)); OFCHECK(elem->getVR() == EVR_LO); OFCHECK(elem->putOFStringArray(PRIVATE_STRING_VALUE).good()); char *charVal = NULL; @@ -72,7 +72,7 @@ OFTEST(dcmdata_newDicomElementPrivate) DcmElement* elem2 = NULL; // Check whether creation as well as tag and value assignment are correct OFCHECK(DcmItem::newDicomElement(elem2, DcmTagKey(PRIVATE_ELEMENT_STRINGELEM), PRIVATE_CREATOR_NAME).good()); - OFCHECK(elem2->getTag().getXTag() == DcmTagKey(PRIVATE_ELEMENT_STRINGELEM)); + OFCHECK(elem2->getTag() == DcmTagKey(PRIVATE_ELEMENT_STRINGELEM)); OFCHECK(elem->getVR() == EVR_LO); OFCHECK(elem2->putOFStringArray(PRIVATE_STRING_VALUE).good()); OFCHECK(elem2->getString(charVal).good()); @@ -88,7 +88,7 @@ OFTEST(dcmdata_newDicomElementPrivate) DcmElement *elem_un = NULL; elem_un = DcmItem::newDicomElement(DcmTagKey(PRIVATE_ELEMENT_NOTINDICT), PRIVATE_CREATOR_NAME); OFCHECK(elem_un); - OFCHECK(elem_un->getTag().getXTag() == DcmTagKey(PRIVATE_ELEMENT_NOTINDICT)); + OFCHECK(elem_un->getTag() == DcmTagKey(PRIVATE_ELEMENT_NOTINDICT)); OFCHECK(elem_un->getVR() == EVR_UNKNOWN); delete elem_un; diff --git a/dcmdata/tests/ttag.cc b/dcmdata/tests/ttag.cc new file mode 100644 index 00000000..8426bc35 --- /dev/null +++ b/dcmdata/tests/ttag.cc @@ -0,0 +1,68 @@ +/* + * + * Copyright (C) 2023, OFFIS e.V. + * All rights reserved. See COPYRIGHT file for details. + * + * This software and supporting documentation were developed by + * + * OFFIS e.V. + * R&D Division Health + * Escherweg 2 + * D-26121 Oldenburg, Germany + * + * + * Module: dcmdata + * + * Author: Joerg Riesmeier + * + * Purpose: test program for class DcmTag and DcmTagKey + * + */ + + +#include "dcmtk/config/osconfig.h" /* make sure OS specific configuration is included first */ + +#include "dcmtk/ofstd/oftest.h" +#include "dcmtk/dcmdata/dctag.h" + + +OFTEST(dcmdata_compareTag) +{ + const DcmTag tag1(0x0011, 0x1000, "Private Creator"); + const DcmTag tag2(0x0011, 0x1000, "Other Private Creator"); + const DcmTag tag3(0x0011, 0x1000); + const DcmTag tag4(0x0011, 0x1000); + const DcmTag tag5(0x0011, 0x1001, "Private Creator"); + /* compare the tags */ + OFCHECK(tag1 == tag1); + OFCHECK(tag1 != tag2); + OFCHECK(!(tag1 == tag2)); + OFCHECK(tag1 != tag3); + OFCHECK(!(tag1 == tag3)); + OFCHECK(tag2 != tag3); + OFCHECK(!(tag2 == tag3)); + OFCHECK(tag3 == tag4); + OFCHECK(tag1 != tag5); + OFCHECK(!(tag1 == tag5)); +} + + +OFTEST(dcmdata_compareTagKey) +{ + const DcmTag tag1(0x0011, 0x1000, "Private Creator"); + const DcmTag tag2(0x0011, 0x1000, "Other Private Creator"); + const DcmTagKey tag3(0x0011, 0x1000); + const DcmTagKey tag4(0x0011, 0x1000); + const DcmTagKey tag5(0x0011, 0x1001); + /* compare the tags */ + OFCHECK(tag1 == tag2.getTagKey()); + OFCHECK(tag1 == tag3); + OFCHECK(tag2 == tag3); + OFCHECK(tag3 == tag4); + OFCHECK(tag1 != tag5); + OFCHECK(!(tag1 == tag5)); + OFCHECK(tag2 != tag5); + OFCHECK(!(tag2 == tag5)); + OFCHECK(tag4 != tag5); + OFCHECK(!(tag4 == tag5)); +} diff --git a/dcmect/tests/t_huge_concat.cc b/dcmect/tests/t_huge_concat.cc index f77342eb..253b0d03 100644 --- a/dcmect/tests/t_huge_concat.cc +++ b/dcmect/tests/t_huge_concat.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2019-2022, OFFIS e.V. + * Copyright (C) 2019-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -460,13 +460,11 @@ static void checkConcatenationInstance(size_t numInstance, EctEnhancedCT* srcIns FunctionalGroups::const_iterator srcShared = srcInstance->getFunctionalGroups().getShared()->begin(); FunctionalGroups::const_iterator cShared = concat->getFunctionalGroups().getShared()->begin(); - size_t numShared = 0; do { OFCHECK(srcShared->second->compare(*cShared->second) == 0); srcShared++; cShared++; - numShared++; } while ((srcShared != srcInstance->getFunctionalGroups().getShared()->end()) && (cShared != concat->getFunctionalGroups().getShared()->end())); OFCHECK((srcShared == srcInstance->getFunctionalGroups().getShared()->end()) diff --git a/dcmect/tests/t_roundtrip.cc b/dcmect/tests/t_roundtrip.cc index 59751494..a55745c4 100644 --- a/dcmect/tests/t_roundtrip.cc +++ b/dcmect/tests/t_roundtrip.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2019-2022, OFFIS e.V. + * Copyright (C) 2019-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -500,13 +500,11 @@ static void checkConcatenationInstance(size_t numInstance, EctEnhancedCT* srcIns FunctionalGroups::const_iterator srcShared = srcInstance->getFunctionalGroups().getShared()->begin(); FunctionalGroups::const_iterator cShared = concat->getFunctionalGroups().getShared()->begin(); - size_t numShared = 0; do { OFCHECK(srcShared->second->compare(*cShared->second) == 0); srcShared++; cShared++; - numShared++; } while ((srcShared != srcInstance->getFunctionalGroups().getShared()->end()) && (cShared != concat->getFunctionalGroups().getShared()->end())); OFCHECK((srcShared == srcInstance->getFunctionalGroups().getShared()->end()) diff --git a/dcmimage/apps/dcm2pnm.cc b/dcmimage/apps/dcm2pnm.cc index 49abd0bc..e7b210e2 100644 --- a/dcmimage/apps/dcm2pnm.cc +++ b/dcmimage/apps/dcm2pnm.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1996-2021, OFFIS e.V. + * Copyright (C) 1996-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -202,8 +202,9 @@ int main(int argc, char *argv[]) prepareCmdLineArgs(argc, argv, OFFIS_CONSOLE_APPLICATION); cmd.setOptionColumns(LONGCOL, SHORTCOL); + cmd.setParamColumn(LONGCOL + SHORTCOL + 4); - cmd.addParam("dcmfile-in", "DICOM input filename to be converted"); + cmd.addParam("dcmfile-in", "DICOM input filename to be converted\n(\"-\" for stdin)"); cmd.addParam("bitmap-out", OFFIS_OUTFILE_DESCRIPTION, OFCmdParam::PM_Optional); cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2); diff --git a/dcmimage/apps/dcmicmp.cc b/dcmimage/apps/dcmicmp.cc index cb7db193..662053ee 100644 --- a/dcmimage/apps/dcmicmp.cc +++ b/dcmimage/apps/dcmicmp.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2018, OFFIS e.V. + * Copyright (C) 2018-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -91,9 +91,10 @@ int main(int argc, char *argv[]) prepareCmdLineArgs(argc, argv, OFFIS_CONSOLE_APPLICATION); cmd.setOptionColumns(LONGCOL, SHORTCOL); + cmd.setParamColumn(LONGCOL + SHORTCOL + 4); cmd.addParam("dcmfile-in-1", "Reference DICOM image file for comparison"); - cmd.addParam("dcmfile-in-2", "Test DICOM image file for comparison"); + cmd.addParam("dcmfile-in-2", "Test DICOM image file for comparison\n(\"-\" for stdin)"); cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2); cmd.addOption("--help", "-h", "print this help text and exit", OFCommandLine::AF_Exclusive); diff --git a/dcmimage/apps/dcmquant.cc b/dcmimage/apps/dcmquant.cc index 7e5c02d1..f519a52a 100644 --- a/dcmimage/apps/dcmquant.cc +++ b/dcmimage/apps/dcmquant.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2001-2021, OFFIS e.V. + * Copyright (C) 2001-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -107,9 +107,10 @@ int main(int argc, char *argv[]) prepareCmdLineArgs(argc, argv, OFFIS_CONSOLE_APPLICATION); cmd.setOptionColumns(LONGCOL, SHORTCOL); + cmd.setParamColumn(LONGCOL + SHORTCOL + 4); - cmd.addParam("dcmfile-in", "DICOM input filename to be converted"); - cmd.addParam("dcmfile-out", "DICOM output filename to be written"); + cmd.addParam("dcmfile-in", "DICOM input filename to be converted\n(\"-\" for stdin)"); + cmd.addParam("dcmfile-out", "DICOM output filename to be written\n(\"-\" for stdout)"); cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2); cmd.addOption("--help", "-h", "print this help text and exit", OFCommandLine::AF_Exclusive); diff --git a/dcmimage/apps/dcmscale.cc b/dcmimage/apps/dcmscale.cc index 98aae18e..8d03a233 100644 --- a/dcmimage/apps/dcmscale.cc +++ b/dcmimage/apps/dcmscale.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2002-2021, OFFIS e.V. + * Copyright (C) 2002-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -104,9 +104,10 @@ int main(int argc, char *argv[]) prepareCmdLineArgs(argc, argv, OFFIS_CONSOLE_APPLICATION); cmd.setOptionColumns(LONGCOL, SHORTCOL); + cmd.setParamColumn(LONGCOL + SHORTCOL + 4); - cmd.addParam("dcmfile-in", "DICOM input filename to be scaled"); - cmd.addParam("dcmfile-out", "DICOM output filename to be written"); + cmd.addParam("dcmfile-in", "DICOM input filename to be scaled\n(\"-\" for stdin)"); + cmd.addParam("dcmfile-out", "DICOM output filename to be written\n(\"-\" for stdout)"); cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2); cmd.addOption("--help", "-h", "print this help text and exit", OFCommandLine::AF_Exclusive); diff --git a/dcmimage/docs/dcm2pnm.man b/dcmimage/docs/dcm2pnm.man index 468c59fa..d8edba0e 100644 --- a/dcmimage/docs/dcm2pnm.man +++ b/dcmimage/docs/dcm2pnm.man @@ -24,7 +24,7 @@ number of JPEG compression schemes. \section dcm2pnm_parameters PARAMETERS \verbatim -dcmfile-in DICOM input filename to be converted +dcmfile-in DICOM input filename to be converted ("-" for stdin) bitmap-out output filename to be written (default: stdout) \endverbatim @@ -397,10 +397,10 @@ image format: The following preferred interpolation algorithms can be selected using the \e --interpolate option: -\li 1 = free scaling algorithm with interpolation from pbmplus toolkit -\li 2 = free scaling algorithm with interpolation from c't magazine -\li 3 = magnification algorithm with bilinear interpolation from Eduard Stanescu -\li 4 = magnification algorithm with bicubic interpolation from Eduard Stanescu +- 1 = free scaling algorithm with interpolation from pbmplus toolkit +- 2 = free scaling algorithm with interpolation from c't magazine +- 3 = magnification algorithm with bilinear interpolation from Eduard Stanescu +- 4 = magnification algorithm with bicubic interpolation from Eduard Stanescu The \e --write-tiff option is only available when DCMTK has been configured and compiled with support for the external \b libtiff TIFF library. The @@ -496,6 +496,6 @@ It is an error if no data dictionary can be loaded. \section dcm2pnm_copyright COPYRIGHT -Copyright (C) 1998-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 1998-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmimage/docs/dcmicmp.man b/dcmimage/docs/dcmicmp.man index 133b74ab..ac702456 100644 --- a/dcmimage/docs/dcmicmp.man +++ b/dcmimage/docs/dcmicmp.man @@ -50,7 +50,7 @@ All metrics are computed as defined in R.C. Gonzalez and R.E. Woods, \verbatim dcmfile-in-1 Reference DICOM image file for comparison -dcmfile-in-2 Test DICOM image file for comparison +dcmfile-in-2 Test DICOM image file for comparison ("-" for stdin) \endverbatim \section dcmicmp_options OPTIONS @@ -372,6 +372,6 @@ It is an error if no data dictionary can be loaded. \section dcmicmp_copyright COPYRIGHT -Copyright (C) 2018-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 2018-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmimage/docs/dcmquant.man b/dcmimage/docs/dcmquant.man index 47a808f7..bed1204e 100644 --- a/dcmimage/docs/dcmquant.man +++ b/dcmimage/docs/dcmquant.man @@ -22,9 +22,9 @@ DICOM palette color image. \section dcmquant_parameters PARAMETERS \verbatim -dcmfile-in DICOM input filename to be converted +dcmfile-in DICOM input filename to be converted ("-" for stdin) -dcmfile-out DICOM output filename to be written +dcmfile-out DICOM output filename to be written ("-" for stdout) \endverbatim \section dcmquant_options OPTIONS @@ -284,6 +284,6 @@ It is an error if no data dictionary can be loaded. \section dcmquant_copyright COPYRIGHT -Copyright (C) 2001-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 2001-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmimage/docs/dcmscale.man b/dcmimage/docs/dcmscale.man index 38a06b88..ef4975b8 100644 --- a/dcmimage/docs/dcmscale.man +++ b/dcmimage/docs/dcmscale.man @@ -21,9 +21,9 @@ supports uncompressed and RLE compressed DICOM images. \section dcmscale_parameters PARAMETERS \verbatim -dcmfile-in DICOM input filename to be scaled +dcmfile-in DICOM input filename to be scaled ("-" for stdin) -dcmfile-out DICOM output filename to be written +dcmfile-out DICOM output filename to be written ("-" for stdout) \endverbatim \section dcmscale_options OPTIONS @@ -202,10 +202,10 @@ data set trailing padding (not with --write-dataset): The following preferred interpolation algorithms can be selected using the \e --interpolate option: -\li 1 = free scaling algorithm with interpolation from pbmplus toolkit -\li 2 = free scaling algorithm with interpolation from c't magazine -\li 3 = magnification algorithm with bilinear interpolation from Eduard Stanescu -\li 4 = magnification algorithm with bicubic interpolation from Eduard Stanescu +- 1 = free scaling algorithm with interpolation from pbmplus toolkit +- 2 = free scaling algorithm with interpolation from c't magazine +- 3 = magnification algorithm with bilinear interpolation from Eduard Stanescu +- 4 = magnification algorithm with bicubic interpolation from Eduard Stanescu \section dcmscale_logging LOGGING @@ -266,6 +266,6 @@ It is an error if no data dictionary can be loaded. \section dcmscale_copyright COPYRIGHT -Copyright (C) 2002-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 2002-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmimage/libsrc/dcmicmph.cc b/dcmimage/libsrc/dcmicmph.cc index 83ea1ab5..de6d0347 100644 --- a/dcmimage/libsrc/dcmicmph.cc +++ b/dcmimage/libsrc/dcmicmph.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2021, OFFIS e.V. + * Copyright (C) 2021-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -677,10 +677,10 @@ OFCondition DicomImageComparison::computeMonochromeImageComparionMetricsRaw() DCMIMAGE_DEBUG("square_error_sum: " << square_error_sum); // as a helper variable, divide the sum of squared errors by the total number of samples - double meanSquareError = square_error_sum / (numValues * fcount); + double meanSquareError = square_error_sum / numValues; // the mean absolute error is the sum of (unsigned) error values divided by the total number of samples - meanAbsoluteError = simple_error_sum / (numValues * fcount); + meanAbsoluteError = simple_error_sum / numValues; // RMSE is the square root of the mean square error rootMeanSquareError = sqrt(meanSquareError); diff --git a/dcmiod/libsrc/iodutil.cc b/dcmiod/libsrc/iodutil.cc index 49830a61..23a5d0ef 100644 --- a/dcmiod/libsrc/iodutil.cc +++ b/dcmiod/libsrc/iodutil.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2015-2022, Open Connections GmbH + * Copyright (C) 2015-2023, Open Connections GmbH * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation are maintained by @@ -422,7 +422,7 @@ OFCondition DcmIODUtil::setFloat64ValuesOnElement(DcmElement& delem, OFCondition result; if (values.size() > OFnumeric_limits::max()) { - DCMIOD_ERROR("Too many values provided (" << values.size() << " for element: " << delem.getTag().getXTag()); + DCMIOD_ERROR("Too many values provided (" << values.size() << " for element: " << delem.getTag()); return IOD_EC_InvalidElementValue; } const unsigned long vmCount = OFstatic_cast(unsigned long, values.size()); @@ -432,8 +432,8 @@ OFCondition DcmIODUtil::setFloat64ValuesOnElement(DcmElement& delem, result = delem.putFloat64((*it), count); if (result.bad()) { - DCMIOD_WARN(delem.getTag().getXTag() << ": Setting value " - << " #" << count << " to \" " << *it << "\" not possible"); + DCMIOD_WARN(delem.getTag() << ": Setting value " + << " #" << count << " to \" " << *it << "\" not possible"); } else if (check) { @@ -457,7 +457,7 @@ OFCondition DcmIODUtil::setFloat32ValuesOnElement(DcmElement& delem, OFCondition result; if (values.size() > OFnumeric_limits::max()) { - DCMIOD_ERROR("Too many values provided (" << values.size() << " for element: " << delem.getTag().getXTag()); + DCMIOD_ERROR("Too many values provided (" << values.size() << " for element: " << delem.getTag()); return IOD_EC_InvalidElementValue; } const unsigned long vmCount = OFstatic_cast(unsigned long, values.size()); @@ -467,8 +467,8 @@ OFCondition DcmIODUtil::setFloat32ValuesOnElement(DcmElement& delem, result = delem.putFloat32((*it), count); if (result.bad()) { - DCMIOD_WARN(delem.getTag().getXTag() << ": Setting value " - << " #" << count << " to \" " << *it << "\" not possible"); + DCMIOD_WARN(delem.getTag() << ": Setting value " + << " #" << count << " to \" " << *it << "\" not possible"); } else if (check) { @@ -487,7 +487,7 @@ OFCondition DcmIODUtil::setUint16ValuesOnElement(DcmElement& delem, OFCondition result; if (values.size() > OFnumeric_limits::max()) { - DCMIOD_ERROR("Too many values provided (" << values.size() << " for element: " << delem.getTag().getXTag()); + DCMIOD_ERROR("Too many values provided (" << values.size() << " for element: " << delem.getTag()); return IOD_EC_InvalidElementValue; } const unsigned long vmCount = OFstatic_cast(unsigned long, values.size()); @@ -497,8 +497,8 @@ OFCondition DcmIODUtil::setUint16ValuesOnElement(DcmElement& delem, result = delem.putUint16((*it), count); if (result.bad()) { - DCMIOD_WARN(delem.getTag().getXTag() << ": Setting value " - << " #" << count << " to \" " << *it << "\" not possible"); + DCMIOD_WARN(delem.getTag() << ": Setting value " + << " #" << count << " to \" " << *it << "\" not possible"); } else if (check) { @@ -520,8 +520,8 @@ OFCondition DcmIODUtil::getUint16ValuesFromElement(DcmElement& delem, OFVectorgetTagName(); // getTagName is not const... if (checkKey != DCM_UndefinedTagKey) { - if (seq.getTag().getXTag() != checkKey) + if (seq.getTag() != checkKey) { DCMIOD_ERROR("Expected sequence " << checkKey << " but got " << &seq.getTag() << "(" << tagName << ")"); return EC_ItemNotFound; diff --git a/dcmjpeg/apps/dcmcjpeg.cc b/dcmjpeg/apps/dcmcjpeg.cc index 766b215b..7c7cba15 100644 --- a/dcmjpeg/apps/dcmcjpeg.cc +++ b/dcmjpeg/apps/dcmcjpeg.cc @@ -101,8 +101,8 @@ int main(int argc, char *argv[]) cmd.setOptionColumns(LONGCOL, SHORTCOL); cmd.setParamColumn(LONGCOL + SHORTCOL + 4); - cmd.addParam("dcmfile-in", "DICOM input filename to be converted"); - cmd.addParam("dcmfile-out", "DICOM output filename"); + cmd.addParam("dcmfile-in", "DICOM input filename to be converted\n(\"-\" for stdin)"); + cmd.addParam("dcmfile-out", "DICOM output filename\n(\"-\" for stdout)"); cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2); cmd.addOption("--help", "-h", "print this help text and exit", OFCommandLine::AF_Exclusive); diff --git a/dcmjpeg/apps/dcmdjpeg.cc b/dcmjpeg/apps/dcmdjpeg.cc index dd062917..0c963638 100644 --- a/dcmjpeg/apps/dcmdjpeg.cc +++ b/dcmjpeg/apps/dcmdjpeg.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2001-2021, OFFIS e.V. + * Copyright (C) 2001-2022, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -74,8 +74,8 @@ int main(int argc, char *argv[]) cmd.setOptionColumns(LONGCOL, SHORTCOL); cmd.setParamColumn(LONGCOL + SHORTCOL + 4); - cmd.addParam("dcmfile-in", "DICOM input filename to be converted"); - cmd.addParam("dcmfile-out", "DICOM output filename"); + cmd.addParam("dcmfile-in", "DICOM input filename to be converted\n(\"-\" for stdin)"); + cmd.addParam("dcmfile-out", "DICOM output filename\n(\"-\" for stdout)"); cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2); cmd.addOption("--help", "-h", "print this help text and exit", OFCommandLine::AF_Exclusive); diff --git a/dcmjpeg/docs/dcmcjpeg.man b/dcmjpeg/docs/dcmcjpeg.man index 57d70c22..289fb456 100644 --- a/dcmjpeg/docs/dcmcjpeg.man +++ b/dcmjpeg/docs/dcmcjpeg.man @@ -21,9 +21,9 @@ syntax) and writes the converted image to an output file (\e dcmfile-out). \section dcmcjpeg_parameters PARAMETERS \verbatim -dcmfile-in DICOM input filename to be converted +dcmfile-in DICOM input filename to be converted ("-" for stdin) -dcmfile-out DICOM output filename +dcmfile-out DICOM output filename ("-" for stdout) \endverbatim \section dcmcjpeg_options OPTIONS @@ -570,12 +570,14 @@ compressed image still complies with all restrictions of the object's IOD. A few examples: -\li MR images are required to have BitsAllocated=16. -\li NM Images can only be encoded with MONOCHROME2 or PALETTE COLOR photometric - interpretation but not with RGB or YBR_FULL (which effectively prevents - compression). -\li Hardcopy Color images must have RGB color model which is a problem if lossy - compression is to be performed. +- MR images are required to have BitsAllocated=16. + +- NM Images can only be encoded with MONOCHROME2 or PALETTE COLOR photometric + interpretation but not with RGB or YBR_FULL (which effectively prevents + compression). + +- Hardcopy Color images must have RGB color model which is a problem if lossy + compression is to be performed. The user is responsible for making sure that the compressed images he creates are compliant with the DICOM standard. If in question, the \b dcmcjpeg utility @@ -587,14 +589,18 @@ added (\e --true-lossless). Compared to the old (\e --pseudo-lossless) encoder, that creates slightly lossy images caused from internal color space conversions, windowing etc., there are a some issues to consider: -\li Only source images with Bits Allocated 8 or 16 are supported -\li Options for color space conversions, windowing or pixel scaling are - ignored or overridden -\li Photometric Interpretations YBR_FULL_422, YBR_PARTIAL_422, YBR_PARTIAL_420, - YBR_ICT, YBR_RCT are not supported -\li The encoder changes automatically Planar Configuration from 1 to 0 if - necessary -\li The compression ratio can be lower than in \e --pseudo-lossless mode +- Only source images with Bits Allocated 8 or 16 are supported + +- Options for color space conversions, windowing or pixel scaling are + ignored or overridden + +- Photometric Interpretations YBR_FULL_422, YBR_PARTIAL_422, YBR_PARTIAL_420, + YBR_ICT, YBR_RCT are not supported + +- The encoder changes automatically Planar Configuration from 1 to 0 if + necessary + +- The compression ratio can be lower than in \e --pseudo-lossless mode However, when using the new encoder (default), you can be sure, that compression does not affect image quality. @@ -701,6 +707,6 @@ It is an error if no data dictionary can be loaded. \section dcmcjpeg_copyright COPYRIGHT -Copyright (C) 2001-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 2001-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmjpeg/docs/dcmdjpeg.man b/dcmjpeg/docs/dcmdjpeg.man index 04f28136..7828d47a 100644 --- a/dcmjpeg/docs/dcmdjpeg.man +++ b/dcmjpeg/docs/dcmdjpeg.man @@ -21,9 +21,9 @@ and writes the converted image to an output file (\e dcmfile-out). \section dcmdjpeg_parameters PARAMETERS \verbatim -dcmfile-in DICOM input filename to be converted +dcmfile-in DICOM input filename to be converted ("-" for stdin) -dcmfile-out DICOM output filename +dcmfile-out DICOM output filename ("-" for stdout) \endverbatim \section dcmdjpeg_options OPTIONS @@ -347,6 +347,6 @@ It is an error if no data dictionary can be loaded. \section dcmdjpeg_copyright COPYRIGHT -Copyright (C) 2001-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 2001-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmjpeg/docs/dcmj2pnm.man b/dcmjpeg/docs/dcmj2pnm.man index bc5a7f6e..5bbf8c4e 100644 --- a/dcmjpeg/docs/dcmj2pnm.man +++ b/dcmjpeg/docs/dcmj2pnm.man @@ -23,7 +23,7 @@ supports uncompressed as well as JPEG and RLE compressed DICOM images. \section dcmj2pnm_parameters PARAMETERS \verbatim -dcmfile-in DICOM input filename to be converted +dcmfile-in DICOM input filename to be converted ("-" for stdin) bitmap-out output filename to be written (default: stdout) \endverbatim @@ -468,10 +468,10 @@ image format: The following preferred interpolation algorithms can be selected using the \e --interpolate option: -\li 1 = free scaling algorithm with interpolation from pbmplus toolkit -\li 2 = free scaling algorithm with interpolation from c't magazine -\li 3 = magnification algorithm with bilinear interpolation from Eduard Stanescu -\li 4 = magnification algorithm with bicubic interpolation from Eduard Stanescu +- 1 = free scaling algorithm with interpolation from pbmplus toolkit +- 2 = free scaling algorithm with interpolation from c't magazine +- 3 = magnification algorithm with bilinear interpolation from Eduard Stanescu +- 4 = magnification algorithm with bicubic interpolation from Eduard Stanescu The \e --write-tiff option is only available when DCMTK has been configured and compiled with support for the external \b libtiff TIFF library. The @@ -573,6 +573,6 @@ It is an error if no data dictionary can be loaded. \section dcmj2pnm_copyright COPYRIGHT -Copyright (C) 2001-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 2001-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmjpeg/docs/dcmmkdir.man b/dcmjpeg/docs/dcmmkdir.man index 8f97ad31..f373bc8c 100644 --- a/dcmjpeg/docs/dcmmkdir.man +++ b/dcmjpeg/docs/dcmmkdir.man @@ -20,45 +20,74 @@ Profiles. Currently the following profiles are supported (others might be added later): -\li General Purpose CD-R Interchange (STD-GEN-CD) -\li General Purpose Interchange on DVD-RAM Media (STD-GEN-DVD-RAM) -\li General Purpose DVD Interchange with JPEG (STD-GEN-DVD-JPEG) -\li General Purpose DVD Interchange with JPEG 2000 (STD-GEN-DVD-J2K) -\li General Purpose BD Interchange with JPEG (STD-GEN-BD-JPEG) -\li General Purpose BD Interchange with JPEG 2000 (STD-GEN-BD-J2K) -\li General Purpose BD Interchange with MPEG2 MP\@ML (STD-GEN-BD-MPEG2-MPML) -\li General Purpose BD Interchange with MPEG2 MP\@HL (STD-GEN-BD-MPEG2-MPHL) -\li General Purpose BD Interchange with MPEG-4 AVC/H.264 HiP\@Level4.1 - (STD-GEN-BD-MPEG4-HPLV41) -\li General Purpose BD Interchange with MPEG-4 AVC/H.264 BD-Compatible - HiP\@Level4.1 (STD-GEN-BD-MPEG4-HPLV41BD) -\li General Purpose BD Interchange with MPEG-4 AVC/H.264 HiP\@Level4.2 for 2D - video (STD-GEN-BD-MPEG4-HPLV42-2D) -\li General Purpose BD Interchange with MPEG-4 AVC/H.264 HiP\@Level4.2 for 3D - video (STD-GEN-BD-MPEG4-HPLV42-3D) -\li General Purpose BD Interchange with MPEG-4 AVC/H.264 Stereo HiP\@Level4.2 - (STD-GEN-BD-MPEG4-SHPLV42) -\li General Purpose USB and Flash Memory Interchange with JPEG - (STD-GEN-USB/MMC/CF/SD-JPEG) -\li General Purpose USB and Flash Memory Interchange with JPEG 2000 - (STD-GEN-USB/MMC/CF/SD-J2K) -\li General Purpose MIME Interchange (STD-GEN-MIME) -\li DVD Interchange with MPEG2 MP\@ML (STD-DVD-MPEG2-MPML) -\li Basic Cardiac X-Ray Angiographic Studies on CD-R Media (STD-XABC-CD) -\li 1024 X-Ray Angiographic Studies on CD-R Media (STD-XA1K-CD) -\li 1024 X-Ray Angiographic Studies on DVD Media (STD-XA1K-DVD) -\li Dental Radiograph Interchange (STD-DEN-CD) -\li CT/MR Studies on various Media (STD-CTMR-xxxx) -\li Ultrasound Single Frame for Image Display (STD-US-ID-SF-xxxx) -\li Ultrasound Single Frame with Spatial Calibration (STD-US-SC-SF-xxxx) -\li Ultrasound Single Frame with Combined Calibration (STD-US-CC-SF-xxxx) -\li Ultrasound Single & Multi-Frame for Image Display (STD-US-ID-MF-xxxx) -\li Ultrasound Single & Multi-Frame with Spatial Calibration - (STD-US-SC-MF-xxxx) -\li Ultrasound Single & Multi-Frame with Combined Calibration - (STD-US-CC-MF-xxxx) -\li 12-lead ECG Interchange on Diskette (STD-WVFM-ECG-FD) -\li Hemodynamic Waveform Interchange on Diskette (STD-WVFM-HD-FD) +- General Purpose CD-R Interchange (STD-GEN-CD) + +- General Purpose Interchange on DVD-RAM Media (STD-GEN-DVD-RAM) + +- General Purpose DVD Interchange with JPEG (STD-GEN-DVD-JPEG) + +- General Purpose DVD Interchange with JPEG 2000 (STD-GEN-DVD-J2K) + +- General Purpose BD Interchange with JPEG (STD-GEN-BD-JPEG) + +- General Purpose BD Interchange with JPEG 2000 (STD-GEN-BD-J2K) + +- General Purpose BD Interchange with MPEG2 MP\@ML (STD-GEN-BD-MPEG2-MPML) + +- General Purpose BD Interchange with MPEG2 MP\@HL (STD-GEN-BD-MPEG2-MPHL) + +- General Purpose BD Interchange with MPEG-4 AVC/H.264 HiP\@Level4.1 + (STD-GEN-BD-MPEG4-HPLV41) + +- General Purpose BD Interchange with MPEG-4 AVC/H.264 BD-Compatible + HiP\@Level4.1 (STD-GEN-BD-MPEG4-HPLV41BD) + +- General Purpose BD Interchange with MPEG-4 AVC/H.264 HiP\@Level4.2 for 2D + video (STD-GEN-BD-MPEG4-HPLV42-2D) + +- General Purpose BD Interchange with MPEG-4 AVC/H.264 HiP\@Level4.2 for 3D + video (STD-GEN-BD-MPEG4-HPLV42-3D) + +- General Purpose BD Interchange with MPEG-4 AVC/H.264 Stereo HiP\@Level4.2 + (STD-GEN-BD-MPEG4-SHPLV42) + +- General Purpose USB and Flash Memory Interchange with JPEG + (STD-GEN-USB/MMC/CF/SD-JPEG) + +- General Purpose USB and Flash Memory Interchange with JPEG 2000 + (STD-GEN-USB/MMC/CF/SD-J2K) + +- General Purpose MIME Interchange (STD-GEN-MIME) + +- DVD Interchange with MPEG2 MP\@ML (STD-DVD-MPEG2-MPML) + +- Basic Cardiac X-Ray Angiographic Studies on CD-R Media (STD-XABC-CD) + +- 1024 X-Ray Angiographic Studies on CD-R Media (STD-XA1K-CD) + +- 1024 X-Ray Angiographic Studies on DVD Media (STD-XA1K-DVD) + +- Dental Radiograph Interchange (STD-DEN-CD) + +- CT/MR Studies on various Media (STD-CTMR-xxxx) + +- Ultrasound Single Frame for Image Display (STD-US-ID-SF-xxxx) + +- Ultrasound Single Frame with Spatial Calibration (STD-US-SC-SF-xxxx) + +- Ultrasound Single Frame with Combined Calibration (STD-US-CC-SF-xxxx) + +- Ultrasound Single & Multi-Frame for Image Display (STD-US-ID-MF-xxxx) + +- Ultrasound Single & Multi-Frame with Spatial Calibration + (STD-US-SC-MF-xxxx) + +- Ultrasound Single & Multi-Frame with Combined Calibration + (STD-US-CC-MF-xxxx) + +- 12-lead ECG Interchange on Diskette (STD-WVFM-ECG-FD) + +- Hemodynamic Waveform Interchange on Diskette (STD-WVFM-HD-FD) This tool extends \b dcmgpdir which can only create General Purpose \e DICOMDIR files. The default behavior of \b dcmmkdir (with \e --general-purpose) is @@ -477,6 +506,6 @@ It is an error if no data dictionary can be loaded. \section dcmmkdir_copyright COPYRIGHT -Copyright (C) 2001-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 2001-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmjpeg/libsrc/djcodecd.cc b/dcmjpeg/libsrc/djcodecd.cc index a6861f3b..364b7553 100644 --- a/dcmjpeg/libsrc/djcodecd.cc +++ b/dcmjpeg/libsrc/djcodecd.cc @@ -638,7 +638,7 @@ OFCondition DJCodecDecoder::determineDecompressedColorModel( Uint32 startFragment = 1; Uint32 bufSize = 0; // determine size of uncompressed frame - if ((fromPixSeq->getUncompressedFrameSize(dataset, bufSize).good()) && (bufSize > 0)) + if ((fromPixSeq->getUncompressedFrameSize(dataset, bufSize, OFFalse).good()) && (bufSize > 0)) { // allocate temporary buffer for a single frame Uint8 *buffer = new Uint8[bufSize]; diff --git a/dcmjpls/apps/dcmcjpls.cc b/dcmjpls/apps/dcmcjpls.cc index 85f18eac..6921f71d 100644 --- a/dcmjpls/apps/dcmcjpls.cc +++ b/dcmjpls/apps/dcmcjpls.cc @@ -100,8 +100,8 @@ LICENSE_FILE_DECLARATIONS cmd.setOptionColumns(LONGCOL, SHORTCOL); cmd.setParamColumn(LONGCOL + SHORTCOL + 4); - cmd.addParam("dcmfile-in", "DICOM input filename to be converted"); - cmd.addParam("dcmfile-out", "DICOM output filename"); + cmd.addParam("dcmfile-in", "DICOM input filename to be converted\n(\"-\" for stdin)"); + cmd.addParam("dcmfile-out", "DICOM output filename\n(\"-\" for stdout)"); cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2); cmd.addOption("--help", "-h", "print this help text and exit", OFCommandLine::AF_Exclusive); diff --git a/dcmjpls/apps/dcmdjpls.cc b/dcmjpls/apps/dcmdjpls.cc index 4e916926..73b935b2 100644 --- a/dcmjpls/apps/dcmdjpls.cc +++ b/dcmjpls/apps/dcmdjpls.cc @@ -82,8 +82,8 @@ LICENSE_FILE_DECLARATIONS cmd.setOptionColumns(LONGCOL, SHORTCOL); cmd.setParamColumn(LONGCOL + SHORTCOL + 4); - cmd.addParam("dcmfile-in", "DICOM input filename to be converted"); - cmd.addParam("dcmfile-out", "DICOM output filename"); + cmd.addParam("dcmfile-in", "DICOM input filename to be converted\n(\"-\" for stdin)"); + cmd.addParam("dcmfile-out", "DICOM output filename\n(\"-\" for stdout)"); cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2); cmd.addOption("--help", "-h", "print this help text and exit", OFCommandLine::AF_Exclusive); diff --git a/dcmjpls/docs/dcmcjpls.man b/dcmjpls/docs/dcmcjpls.man index 614c4649..9e577b13 100644 --- a/dcmjpls/docs/dcmcjpls.man +++ b/dcmjpls/docs/dcmcjpls.man @@ -22,9 +22,9 @@ transfer syntax) and writes the converted image to an output file \section dcmcjpls_parameters PARAMETERS \verbatim -dcmfile-in DICOM input filename to be converted +dcmfile-in DICOM input filename to be converted ("-" for stdin) -dcmfile-out DICOM output filename +dcmfile-out DICOM output filename ("-" for stdout) \endverbatim \section dcmcjpls_options OPTIONS @@ -387,6 +387,6 @@ It is an error if no data dictionary can be loaded. \section dcmcjpls_copyright COPYRIGHT -Copyright (C) 2009-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 2009-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmjpls/docs/dcmdjpls.man b/dcmjpls/docs/dcmdjpls.man index f8e6510b..bd88e379 100644 --- a/dcmjpls/docs/dcmdjpls.man +++ b/dcmjpls/docs/dcmdjpls.man @@ -21,9 +21,9 @@ syntax) and writes the converted image to an output file (\e dcmfile-out). \section dcmdjpls_parameters PARAMETERS \verbatim -dcmfile-in DICOM input filename to be converted +dcmfile-in DICOM input filename to be converted ("-" for stdin) -dcmfile-out DICOM output filename +dcmfile-out DICOM output filename ("-" for stdout) \endverbatim \section dcmdjpls_options OPTIONS @@ -280,6 +280,6 @@ It is an error if no data dictionary can be loaded. \section dcmdjpls_copyright COPYRIGHT -Copyright (C) 2009-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 2009-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmjpls/docs/dcml2pnm.man b/dcmjpls/docs/dcml2pnm.man index 99c69c3d..17e567bf 100644 --- a/dcmjpls/docs/dcml2pnm.man +++ b/dcmjpls/docs/dcml2pnm.man @@ -23,7 +23,7 @@ and RLE compressed DICOM images. \section dcml2pnm_parameters PARAMETERS \verbatim -dcmfile-in DICOM input filename to be converted +dcmfile-in DICOM input filename to be converted ("-" for stdin) bitmap-out output filename to be written (default: stdout) \endverbatim @@ -396,10 +396,10 @@ image format: The following preferred interpolation algorithms can be selected using the \e --interpolate option: -\li 1 = free scaling algorithm with interpolation from pbmplus toolkit -\li 2 = free scaling algorithm with interpolation from c't magazine -\li 3 = magnification algorithm with bilinear interpolation from Eduard Stanescu -\li 4 = magnification algorithm with bicubic interpolation from Eduard Stanescu +- 1 = free scaling algorithm with interpolation from pbmplus toolkit +- 2 = free scaling algorithm with interpolation from c't magazine +- 3 = magnification algorithm with bilinear interpolation from Eduard Stanescu +- 4 = magnification algorithm with bicubic interpolation from Eduard Stanescu The \e --write-tiff option is only available when DCMTK has been configured and compiled with support for the external \b libtiff TIFF library. The @@ -497,6 +497,6 @@ It is an error if no data dictionary can be loaded. \section dcml2pnm_copyright COPYRIGHT -Copyright (C) 2001-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 2001-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmjpls/libcharls/header.cc b/dcmjpls/libcharls/header.cc index 8c8cd521..b029e46c 100644 --- a/dcmjpls/libcharls/header.cc +++ b/dcmjpls/libcharls/header.cc @@ -479,7 +479,7 @@ JpegMarkerSegment* CreateJFIF(const JfifParameters* jfif) rgbyte.push_back((BYTE)jfif->Ythumb); if(jfif->Xthumb > 0) { - if(jfif->pdataThumbnail) + if(jfif->pdataThumbnail == NULL) throw JlsException(InvalidJlsParameters); rgbyte.insert(rgbyte.end(), (BYTE*)jfif->pdataThumbnail, (BYTE*)jfif->pdataThumbnail+3*jfif->Xthumb*jfif->Ythumb diff --git a/dcmjpls/libsrc/djcodece.cc b/dcmjpls/libsrc/djcodece.cc index ee5efc80..ac41b314 100644 --- a/dcmjpls/libsrc/djcodece.cc +++ b/dcmjpls/libsrc/djcodece.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2007-2022, OFFIS e.V. + * Copyright (C) 2007-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -462,10 +462,23 @@ OFCondition DJLSEncoderBase::losslessRawEncode( // an image that is not supported by either the raw or the cooked encoder. result = EC_JLSUnsupportedImageType; } + } + if (result.good()) + { // make sure that all the descriptive attributes have sensible values if ((columns < 1)||(rows < 1)||(samplesPerPixel < 1)) result = EC_JLSUnsupportedImageType; + } + if (result.good()) + { + // we do not support JPEG-LS compression of YBR_FULL_422 images + if (photometricInterpretation == "YBR_FULL_422") + result = EC_JLSUnsupportedImageType; + } + + if (result.good()) + { // make sure that we have at least as many bytes of pixel data as we expect if (bytesAllocated * samplesPerPixel * columns * rows * OFstatic_cast(unsigned long,numberOfFrames) > length) diff --git a/dcmnet/apps/dcmrecv.cc b/dcmnet/apps/dcmrecv.cc index 1e400019..d34eee07 100644 --- a/dcmnet/apps/dcmrecv.cc +++ b/dcmnet/apps/dcmrecv.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2013-2020, OFFIS e.V. + * Copyright (C) 2013-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -41,9 +41,6 @@ static OFLogger dcmrecvLogger = OFLog::getLogger("dcmtk.apps." OFFIS_CONSOLE_APP static char rcsid[] = "$dcmtk: " OFFIS_CONSOLE_APPLICATION " v" OFFIS_DCMTK_VERSION " " OFFIS_DCMTK_RELEASEDATE " $"; -/* default application entity title */ -#define APPLICATIONTITLE "DCMRECV" - /* exit codes for this command line tool */ /* (common codes are defined in "ofexit.h" included from "ofconapp.h") */ @@ -80,8 +77,8 @@ int main(int argc, char *argv[]) const char *opt_configFile = NULL; const char *opt_profileName = NULL; - const char *opt_aeTitle = APPLICATIONTITLE; - const char *opt_outputDirectory = "."; + const char *opt_aeTitle = NULL; // default: respond with called AE title + const char *opt_outputDirectory = "."; // default: current directory const char *opt_filenameExtension = ""; OFCmdUnsignedInt opt_port = 0; @@ -91,7 +88,6 @@ int main(int argc, char *argv[]) T_DIMSE_BlockingMode opt_blockingMode = DIMSE_BLOCKING; OFBool opt_showPresentationContexts = OFFalse; // default: do not show presentation contexts in verbose mode - OFBool opt_useCalledAETitle = OFFalse; // default: respond with specified application entity title OFBool opt_HostnameLookup = OFTrue; // default: perform hostname lookup (for log output) DcmStorageSCP::E_DirectoryGenerationMode opt_directoryGeneration = DcmStorageSCP::DGM_NoSubdirectory; @@ -116,19 +112,19 @@ int main(int argc, char *argv[]) cmd.addOption("--config-file", "-xf", 2, "[f]ilename, [p]rofile: string", "use profile p from configuration file f"); cmd.addSubGroup("application entity title:"); - CONVERT_TO_STRING("set my AE title (default: " << opt_aeTitle << ")", optString1); - cmd.addOption("--aetitle", "-aet", 1, "[a]etitle: string", optString1.c_str()); - cmd.addOption("--use-called-aetitle", "-uca", "always respond with called AE title"); + cmd.addOption("--use-called-aetitle", "-uca", "always respond with called AE title (default)"); + cmd.addOption("--aetitle", "-aet", 1, "[a]etitle: string", + "set my AE title and check called AE title"); cmd.addSubGroup("other network options:"); - CONVERT_TO_STRING("[s]econds: integer (default: " << opt_acseTimeout << ")", optString2); - cmd.addOption("--acse-timeout", "-ta", 1, optString2.c_str(), + CONVERT_TO_STRING("[s]econds: integer (default: " << opt_acseTimeout << ")", optString1); + cmd.addOption("--acse-timeout", "-ta", 1, optString1.c_str(), "timeout for ACSE messages"); cmd.addOption("--dimse-timeout", "-td", 1, "[s]econds: integer (default: unlimited)", "timeout for DIMSE messages"); - CONVERT_TO_STRING("[n]umber of bytes: integer (" << ASC_MINIMUMPDUSIZE << ".." << ASC_MAXIMUMPDUSIZE << ")", optString3); - CONVERT_TO_STRING("set max receive pdu to n bytes (default: " << opt_maxPDULength << ")", optString4); - cmd.addOption("--max-pdu", "-pdu", 1, optString3.c_str(), - optString4.c_str()); + CONVERT_TO_STRING("[n]umber of bytes: integer (" << ASC_MINIMUMPDUSIZE << ".." << ASC_MAXIMUMPDUSIZE << ")", optString2); + CONVERT_TO_STRING("set max receive pdu to n bytes (default: " << opt_maxPDULength << ")", optString3); + cmd.addOption("--max-pdu", "-pdu", 1, optString2.c_str(), + optString3.c_str()); cmd.addOption("--disable-host-lookup", "-dhl", "disable hostname lookup"); /* add TLS specific command line options if (and only if) we are compiling with OpenSSL */ @@ -136,8 +132,8 @@ int main(int argc, char *argv[]) cmd.addGroup("output options:"); cmd.addSubGroup("general:"); - CONVERT_TO_STRING("[d]irectory: string (default: \"" << opt_outputDirectory << "\")", optString5); - cmd.addOption("--output-directory", "-od", 1, optString5.c_str(), + CONVERT_TO_STRING("[d]irectory: string (default: \"" << opt_outputDirectory << "\")", optString4); + cmd.addOption("--output-directory", "-od", 1, optString4.c_str(), "write received objects to existing directory d"); cmd.addSubGroup("subdirectory generation:"); cmd.addOption("--no-subdir", "-s", "do not generate any subdirectories (default)"); @@ -200,12 +196,9 @@ int main(int argc, char *argv[]) cmd.beginOptionBlock(); if (cmd.findOption("--aetitle")) - { app.checkValue(cmd.getValue(opt_aeTitle)); - opt_useCalledAETitle = OFFalse; - } if (cmd.findOption("--use-called-aetitle")) - opt_useCalledAETitle = OFTrue; + opt_aeTitle = NULL; cmd.endOptionBlock(); if (cmd.findOption("--acse-timeout")) @@ -282,13 +275,14 @@ int main(int argc, char *argv[]) /* set general network parameters */ storageSCP.setPort(OFstatic_cast(Uint16, opt_port)); - storageSCP.setAETitle(opt_aeTitle); + if (opt_aeTitle != NULL) + storageSCP.setAETitle(opt_aeTitle); storageSCP.setMaxReceivePDULength(OFstatic_cast(Uint32, opt_maxPDULength)); storageSCP.setACSETimeout(OFstatic_cast(Uint32, opt_acseTimeout)); storageSCP.setDIMSETimeout(OFstatic_cast(Uint32, opt_dimseTimeout)); storageSCP.setDIMSEBlockingMode(opt_blockingMode); storageSCP.setVerbosePCMode(opt_showPresentationContexts); - storageSCP.setRespondWithCalledAETitle(opt_useCalledAETitle); + storageSCP.setRespondWithCalledAETitle(opt_aeTitle == NULL); storageSCP.setHostLookupEnabled(opt_HostnameLookup); storageSCP.setDirectoryGenerationMode(opt_directoryGeneration); storageSCP.setFilenameGenerationMode(opt_filenameGeneration); diff --git a/dcmnet/apps/echoscu.cc b/dcmnet/apps/echoscu.cc index d2427722..d988ac3c 100644 --- a/dcmnet/apps/echoscu.cc +++ b/dcmnet/apps/echoscu.cc @@ -101,7 +101,14 @@ static const char* transferSyntaxes[] = { UID_MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax, UID_MPEG4StereoHighProfileLevel4_2TransferSyntax, UID_HEVCMainProfileLevel5_1TransferSyntax, - UID_HEVCMain10ProfileLevel5_1TransferSyntax + UID_HEVCMain10ProfileLevel5_1TransferSyntax, + UID_FragmentableMPEG2MainProfileMainLevelTransferSyntax, + UID_FragmentableMPEG2MainProfileHighLevelTransferSyntax, + UID_FragmentableMPEG4HighProfileLevel4_1TransferSyntax, + UID_FragmentableMPEG4BDcompatibleHighProfileLevel4_1TransferSyntax, + UID_FragmentableMPEG4HighProfileLevel4_2_For2DVideoTransferSyntax, + UID_FragmentableMPEG4HighProfileLevel4_2_For3DVideoTransferSyntax, + UID_FragmentableMPEG4StereoHighProfileLevel4_2TransferSyntax }; // ******************************************** diff --git a/dcmnet/apps/storescp.cc b/dcmnet/apps/storescp.cc index 21ba62c2..5dae4f16 100644 --- a/dcmnet/apps/storescp.cc +++ b/dcmnet/apps/storescp.cc @@ -1010,7 +1010,7 @@ static OFCondition acceptAssociation(T_ASC_Network *net, DcmAssociationConfigura const char* transferSyntaxes[] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, // 10 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, // 20 - NULL }; // +1 + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }; // +8 int numTransferSyntaxes = 0; // try to receive an association. Here we either want to use blocking or @@ -1287,25 +1287,32 @@ static OFCondition acceptAssociation(T_ASC_Network *net, DcmAssociationConfigura transferSyntaxes[6] = UID_JPEGLSLosslessTransferSyntax; transferSyntaxes[7] = UID_RLELosslessTransferSyntax; transferSyntaxes[8] = UID_MPEG2MainProfileAtMainLevelTransferSyntax; - transferSyntaxes[9] = UID_MPEG2MainProfileAtHighLevelTransferSyntax; - transferSyntaxes[10] = UID_MPEG4HighProfileLevel4_1TransferSyntax; - transferSyntaxes[11] = UID_MPEG4BDcompatibleHighProfileLevel4_1TransferSyntax; - transferSyntaxes[12] = UID_MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax; - transferSyntaxes[13] = UID_MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax; - transferSyntaxes[14] = UID_MPEG4StereoHighProfileLevel4_2TransferSyntax; - transferSyntaxes[15] = UID_HEVCMainProfileLevel5_1TransferSyntax; - transferSyntaxes[16] = UID_HEVCMain10ProfileLevel5_1TransferSyntax; - transferSyntaxes[17] = UID_DeflatedExplicitVRLittleEndianTransferSyntax; + transferSyntaxes[9] = UID_FragmentableMPEG2MainProfileMainLevelTransferSyntax; + transferSyntaxes[10] = UID_MPEG2MainProfileAtHighLevelTransferSyntax; + transferSyntaxes[11] = UID_FragmentableMPEG2MainProfileHighLevelTransferSyntax; + transferSyntaxes[12] = UID_MPEG4HighProfileLevel4_1TransferSyntax; + transferSyntaxes[13] = UID_FragmentableMPEG4HighProfileLevel4_1TransferSyntax; + transferSyntaxes[14] = UID_MPEG4BDcompatibleHighProfileLevel4_1TransferSyntax; + transferSyntaxes[15] = UID_FragmentableMPEG4BDcompatibleHighProfileLevel4_1TransferSyntax; + transferSyntaxes[16] = UID_MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax; + transferSyntaxes[17] = UID_FragmentableMPEG4HighProfileLevel4_2_For2DVideoTransferSyntax; + transferSyntaxes[18] = UID_MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax; + transferSyntaxes[19] = UID_FragmentableMPEG4HighProfileLevel4_2_For3DVideoTransferSyntax; + transferSyntaxes[20] = UID_MPEG4StereoHighProfileLevel4_2TransferSyntax; + transferSyntaxes[21] = UID_FragmentableMPEG4StereoHighProfileLevel4_2TransferSyntax; + transferSyntaxes[22] = UID_HEVCMainProfileLevel5_1TransferSyntax; + transferSyntaxes[23] = UID_HEVCMain10ProfileLevel5_1TransferSyntax; + transferSyntaxes[24] = UID_DeflatedExplicitVRLittleEndianTransferSyntax; if (gLocalByteOrder == EBO_LittleEndian) { - transferSyntaxes[18] = UID_LittleEndianExplicitTransferSyntax; - transferSyntaxes[19] = UID_BigEndianExplicitTransferSyntax; + transferSyntaxes[25] = UID_LittleEndianExplicitTransferSyntax; + transferSyntaxes[26] = UID_BigEndianExplicitTransferSyntax; } else { - transferSyntaxes[18] = UID_BigEndianExplicitTransferSyntax; - transferSyntaxes[19] = UID_LittleEndianExplicitTransferSyntax; + transferSyntaxes[25] = UID_BigEndianExplicitTransferSyntax; + transferSyntaxes[26] = UID_LittleEndianExplicitTransferSyntax; } - transferSyntaxes[20] = UID_LittleEndianImplicitTransferSyntax; - numTransferSyntaxes = 21; + transferSyntaxes[27] = UID_LittleEndianImplicitTransferSyntax; + numTransferSyntaxes = 28; } else { /* We prefer explicit transfer syntaxes. * If we are running on a Little Endian machine we prefer diff --git a/dcmnet/apps/storescu.cc b/dcmnet/apps/storescu.cc index bbf787e3..4c351ff3 100644 --- a/dcmnet/apps/storescu.cc +++ b/dcmnet/apps/storescu.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1996-2022, OFFIS e.V. + * Copyright (C) 1996-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -105,10 +105,10 @@ static OFCmdUnsignedInt opt_inventStudyCount = 50; static OFCmdUnsignedInt opt_inventSeriesCount = 100; static OFBool opt_inventSOPInstanceInformation = OFFalse; static OFBool opt_correctUIDPadding = OFFalse; -static OFString patientNamePrefix("OFFIS^TEST_PN_"); // PatientName is PN (maximum 16 chars) -static OFString patientIDPrefix("PID_"); // PatientID is LO (maximum 64 chars) -static OFString studyIDPrefix("SID_"); // StudyID is SH (maximum 16 chars) -static OFString accessionNumberPrefix; // AccessionNumber is SH (maximum 16 chars) +static OFString patientNamePrefix("OFFIS^TEST_PN_"); // PatientName is PN (maximum 16 chars) +static OFString patientIDPrefix("PID_"); // PatientID is LO (maximum 64 chars) +static OFString studyIDPrefix("SID_"); // StudyID is SH (maximum 16 chars) +static OFString accessionNumberPrefix; // AccessionNumber is SH (maximum 16 chars) static const char *opt_configFile = NULL; static const char *opt_profileName = NULL; T_DIMSE_BlockingMode opt_blockMode = DIMSE_BLOCKING; @@ -125,6 +125,9 @@ static T_ASC_UserIdentityNegotiationMode opt_identMode = ASC_USER_IDENTITY_NONE; static OFString opt_user; static OFString opt_password; static OFString opt_identFile; +// Denotes whether we ask for an explicit server response for +// our identity negotiation request and only continue if this +// positive response is provided by the SCP. static OFBool opt_identResponse = OFFalse; static OFCondition @@ -555,13 +558,13 @@ int main(int argc, char *argv[]) if (cmd.findOption("--empty-password")) { app.checkDependence("--empty-password", "--user", opt_identMode == ASC_USER_IDENTITY_USER); - opt_password= ""; + opt_password = ""; opt_identMode = ASC_USER_IDENTITY_USER_PASSWORD; } cmd.endOptionBlock(); if (cmd.findOption("--pos-response")) { - app.checkDependence("--pos-response", "--user, --kerberos or --saml", opt_identMode != ASC_USER_IDENTITY_NONE); + app.checkDependence("--pos-response", "--user, --kerberos, --saml or --jwt", opt_identMode != ASC_USER_IDENTITY_NONE); opt_identResponse = OFTrue; } } @@ -780,9 +783,6 @@ int main(int argc, char *argv[]) } } - /* dump the connection parameters if in debug mode*/ - OFLOG_DEBUG(storescuLogger, ASC_dumpConnectionParameters(temp_str, assoc)); - /* dump the presentation contexts which have been accepted/refused */ if (opt_showPresentationContexts) OFLOG_INFO(storescuLogger, "Association Parameters Negotiated:" << OFendl << ASC_dumpParameters(temp_str, params, ASC_ASSOC_AC)); @@ -1237,7 +1237,7 @@ progressCallback(void * /*callbackData*/, if (progress->state == DIMSE_StoreBegin) { OFString str; - OFLOG_DEBUG(storescuLogger, DIMSE_dumpMessage(str, *req, DIMSE_OUTGOING)); + OFLOG_DEBUG(storescuLogger, DIMSE_dumpMessage(str, *req, DIMSE_OUTGOING /*, NULL, presID */)); } // We can't use oflog for the pdu output, but we use a special logger for @@ -1337,16 +1337,18 @@ storeSCU(T_ASC_Association *assoc, const char *fname) filexfer = EXS_DeflatedLittleEndianExplicit; } - if (filexfer.getXfer() != EXS_Unknown) + if (filexfer != EXS_Unknown) presID = ASC_findAcceptedPresentationContextID(assoc, sopClass, filexfer.getXferID()); else presID = ASC_findAcceptedPresentationContextID(assoc, sopClass); if (presID == 0) { - const char *modalityName = dcmSOPClassUIDToModality(sopClass); - if (!modalityName) modalityName = dcmFindNameOfUID(sopClass); - if (!modalityName) modalityName = "unknown SOP class"; - OFLOG_ERROR(storescuLogger, "No presentation context for: (" << modalityName << ") " << sopClass); + if (storescuLogger.isEnabledFor(OFLogger::ERROR_LOG_LEVEL)) + { + const char *modalityName = dcmSOPClassUIDToModality(sopClass); + if (!modalityName) modalityName = dcmFindNameOfUID(sopClass, "unknown SOP class"); + OFLOG_ERROR(storescuLogger, "No presentation context for: (" << modalityName << ") " << sopClass); + } renameFile(fname, ".bad"); return DIMSE_NOVALIDPRESENTATIONCONTEXTID; } @@ -1356,10 +1358,11 @@ storeSCU(T_ASC_Association *assoc, const char *fname) DcmXfer netTransfer(pc.acceptedTransferSyntax); /* if required, dump general information concerning transfer syntaxes */ - if (storescuLogger.isEnabledFor(OFLogger::INFO_LOG_LEVEL)) + if ((netTransfer != dcmff.getDataset()->getOriginalXfer()) && + storescuLogger.isEnabledFor(OFLogger::INFO_LOG_LEVEL)) { - DcmXfer fileTransfer(dcmff.getDataset()->getOriginalXfer()); - OFLOG_INFO(storescuLogger, "Converting transfer syntax: " << fileTransfer.getXferName() + DcmXfer origTransfer(dcmff.getDataset()->getOriginalXfer()); + OFLOG_INFO(storescuLogger, "Converting transfer syntax: " << origTransfer.getXferName() << " -> " << netTransfer.getXferName()); } @@ -1384,6 +1387,14 @@ storeSCU(T_ASC_Association *assoc, const char *fname) /* if required, dump some more general information */ OFLOG_INFO(storescuLogger, "Sending Store Request (MsgID " << msgId << ", " << dcmSOPClassUIDToModality(sopClass, "OT") << ")"); + /* the following is needed, because the presentation context ID is not shown otherwise */ + if (storescuLogger.isEnabledFor(OFLogger::DEBUG_LOG_LEVEL)) + { + const char *sopClassName = dcmFindKeywordOfUID(sopClass, sopClass /*defaultValue*/); + const char *netXferName = dcmFindKeywordOfUID(netTransfer.getXferID(), netTransfer.getXferID() /*defaultValue*/); + OFLOG_DEBUG(storescuLogger, " using Presentation Context ID " << OFstatic_cast(int, presID) + << " = " << sopClassName << " with " << netXferName << " transfer syntax"); + } /* finally conduct transmission of data */ cond = DIMSE_storeUser(assoc, presID, &req, diff --git a/dcmnet/docs/asconfig.txt b/dcmnet/docs/asconfig.txt index 53080e94..be875f8c 100644 --- a/dcmnet/docs/asconfig.txt +++ b/dcmnet/docs/asconfig.txt @@ -6,8 +6,9 @@ ASSOCIATION NEGOTIATION PROFILES AND CONFIGURATION FILES application, based on so-called "association negotiation profiles" which may be read from a configuration file. - This mechanism is currently enabled in the storescu and storescp - applications. + Originally, this mechanism was only enabled in the storescu and storescp + applications. In the meantime, it is also used by other tools such as + dcmrecv and dcmqrscp. 1. CONFIGURATION FILE FORMAT @@ -31,6 +32,7 @@ ASSOCIATION NEGOTIATION PROFILES AND CONFIGURATION FILES The well-known "INI" syntax is extended by the definition of supersections which define a grouping for sections, using the following syntax: + [[Supersection]] The content of the configuration file needs to establish a true tree @@ -42,11 +44,13 @@ ASSOCIATION NEGOTIATION PROFILES AND CONFIGURATION FILES A configuration file for association negotiation profiles may contain the following supersections: + [[TransferSyntaxes]] [[PresentationContexts]] [[Profiles]] [[SCPSCURoleSelection]] [[ExtendedNegotiation]] + The first three supersections are mandatory, the others are optional. @@ -89,6 +93,14 @@ On a big endian machine (Sparc, M68K, MIPS) - "LocalEndianExplicit" is interpreted as "BigEndianExplicit" - "OppositeEndianExplicit" is interpreted as "LittleEndianExplicit" +Please note that the order of transfer syntaxes within a section might be +significant. For example, an implementation of a DICOM Storage SCP, such as +storescp or dcmrecv, will use this order to determine which transfer syntax +to prefer when multiple transfer syntaxes are offered by the SCU and are +acceptable for the SCP. The transfer syntax selection policy is to prefer +the first transfer syntax that is acceptable, i.e. the one with the lowest +number. + 2.2 PRESENTATION CONTEXTS @@ -96,9 +108,9 @@ This supersection contains one or more sections with arbitrary user-defined but unique section names that are used as symbolic labels. Within each section, one or more key/value pairs are contained. The key names are "PresentationContext1", "PresentationContext2" etc., in -increasing order. Each list must not contain more than 128 entries, -due to the limitation of the DICOM network protocol to 128 presentation -contexts per association. +increasing order. For an association requestor, each list must not +contain more than 128 entries, due to the limitation of the DICOM network +protocol to 128 presentation contexts per association. Each value consists of two parts, separated by a single backslash character ('\'). The first value denotes a DICOM SOP Class UID or @@ -233,4 +245,4 @@ procedure can use exactly one of these profiles. Examples for association negotiation profiles that can be used with the storescu and storescp tools are provided with DCMTK, as -"storescp.cfg" and "storescu.cfg" in the directory. +"storescu.cfg" and "storescp.cfg" in the directory. diff --git a/dcmnet/docs/dcmrecv.man b/dcmnet/docs/dcmrecv.man index aa992558..dbec498e 100644 --- a/dcmnet/docs/dcmrecv.man +++ b/dcmnet/docs/dcmrecv.man @@ -70,11 +70,11 @@ association negotiation profile from configuration file: application entity title: - -aet --aetitle [a]etitle: string - set my AE title (default: DCMRECV) - -uca --use-called-aetitle - always respond with called AE title + always respond with called AE title (default) + + -aet --aetitle [a]etitle: string + set my AE title and check called AE title other network options: @@ -139,18 +139,29 @@ certification authority: security profile: + +pg --profile-8996 + BCP 195 RFC 8996 TLS Profile (default) + + +pm --profile-8996-mod + Modified BCP 195 RFC 8996 TLS Profile + + # only available if underlying TLS library supports + # all TLS features required for this profile + +py --profile-bcp195-nd - Non-downgrading BCP 195 TLS Profile (default) + Non-downgrading BCP 195 TLS Profile (retired) +px --profile-bcp195 - BCP 195 TLS Profile + BCP 195 TLS Profile (retired) +pz --profile-bcp195-ex - Extended BCP 195 TLS Profile + Extended BCP 195 TLS Profile (retired) +pb --profile-basic Basic TLS Secure Transport Connection Profile (retired) + # only available if underlying TLS library supports 3DES + +pa --profile-aes AES TLS Secure Transport Connection Profile (retired) @@ -169,6 +180,14 @@ ciphersuite: +dp --dhparam [f]ilename: string read DH parameters for DH/DSS ciphersuites +server name indication: + + --no-sni + do not use SNI (default) + + --expect-sni [s]erver name: string + expect requests for server name s + pseudo random generator: +rs --seed [f]ilename: string @@ -458,6 +477,6 @@ It is an error if no data dictionary can be loaded. \section dcmrecv_copyright COPYRIGHT -Copyright (C) 2013-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 2013-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmnet/docs/echoscu.man b/dcmnet/docs/echoscu.man index f847b921..547bb5b7 100644 --- a/dcmnet/docs/echoscu.man +++ b/dcmnet/docs/echoscu.man @@ -69,7 +69,7 @@ application entity titles: association negotiation debugging: - -pts --propose-ts [n]umber: integer (1..38) + -pts --propose-ts [n]umber: integer (1..45) propose n transfer syntaxes -ppc --propose-pc [n]umber: integer (1..128) @@ -151,18 +151,29 @@ certification authority: security profile: + +pg --profile-8996 + BCP 195 RFC 8996 TLS Profile (default) + + +pm --profile-8996-mod + Modified BCP 195 RFC 8996 TLS Profile + + # only available if underlying TLS library supports + # all TLS features required for this profile + +py --profile-bcp195-nd - Non-downgrading BCP 195 TLS Profile (default) + Non-downgrading BCP 195 TLS Profile (retired) +px --profile-bcp195 - BCP 195 TLS Profile + BCP 195 TLS Profile (retired) +pz --profile-bcp195-ex - Extended BCP 195 TLS Profile + Extended BCP 195 TLS Profile (retired) +pb --profile-basic Basic TLS Secure Transport Connection Profile (retired) + # only available if underlying TLS library supports 3DES + +pa --profile-aes AES TLS Secure Transport Connection Profile (retired) @@ -178,6 +189,14 @@ ciphersuite: +cs --cipher [c]iphersuite name: string add ciphersuite to list of negotiated suites +server name indication: + + --no-sni + do not use SNI (default) + + --request-sni [s]erver name: string + request server name s + pseudo random generator: +rs --seed [f]ilename: string @@ -219,14 +238,64 @@ offline certificate verification: The \b echoscu application supports the following SOP Classes as an SCU: \verbatim -VerificationSOPClass 1.2.840.10008.1.1 +VerificationSOPClass 1.2.840.10008.1.1 +\endverbatim + +By default, the \b echoscu application will only propose this transfer syntax: + +\verbatim +LittleEndianImplicitTransferSyntax 1.2.840.10008.1.2 \endverbatim -Unless the \e --propose-ts option is used, the echoscu application will only -propose the transfer syntax +If the \e --propose-ts option is used, the following transfer syntaxes will +also be proposed, depending on the numeric value "n" that is passed to this +option: \verbatim -LittleEndianImplicitTransferSyntax 1.2.840.10008.1.2 +LittleEndianExplicitTransferSyntax 1.2.840.10008.1.2.1 +BigEndianExplicitTransferSyntax 1.2.840.10008.1.2.2 +JPEGProcess1TransferSyntax 1.2.840.10008.1.2.4.50 +JPEGProcess2_4TransferSyntax 1.2.840.10008.1.2.4.51 +JPEGProcess3_5TransferSyntax 1.2.840.10008.1.2.4.52 +JPEGProcess6_8TransferSyntax 1.2.840.10008.1.2.4.53 +JPEGProcess7_9TransferSyntax 1.2.840.10008.1.2.4.54 +JPEGProcess10_12TransferSyntax 1.2.840.10008.1.2.4.55 +JPEGProcess11_13TransferSyntax 1.2.840.10008.1.2.4.56 +JPEGProcess14TransferSyntax 1.2.840.10008.1.2.4.57 +JPEGProcess15TransferSyntax 1.2.840.10008.1.2.4.58 +JPEGProcess16_18TransferSyntax 1.2.840.10008.1.2.4.59 +JPEGProcess17_19TransferSyntax 1.2.840.10008.1.2.4.60 +JPEGProcess20_22TransferSyntax 1.2.840.10008.1.2.4.61 +JPEGProcess21_23TransferSyntax 1.2.840.10008.1.2.4.62 +JPEGProcess24_26TransferSyntax 1.2.840.10008.1.2.4.63 +JPEGProcess25_27TransferSyntax 1.2.840.10008.1.2.4.64 +JPEGProcess28TransferSyntax 1.2.840.10008.1.2.4.65 +JPEGProcess29TransferSyntax 1.2.840.10008.1.2.4.66 +JPEGProcess14SV1TransferSyntax 1.2.840.10008.1.2.4.70 +RLELosslessTransferSyntax 1.2.840.10008.1.2.5 +DeflatedExplicitVRLittleEndianTransferSyntax 1.2.840.10008.1.2.1.99 +JPEGLSLosslessTransferSyntax 1.2.840.10008.1.2.4.80 +JPEGLSLossyTransferSyntax 1.2.840.10008.1.2.4.81 +JPEG2000LosslessOnlyTransferSyntax 1.2.840.10008.1.2.4.90 +JPEG2000TransferSyntax 1.2.840.10008.1.2.4.91 +JPEG2000Part2MulticomponentImageComp.LosslessOnlyT. 1.2.840.10008.1.2.4.92 +JPEG2000Part2MulticomponentImageComp.TransferSyntax 1.2.804.10008.1.2.4.93 +MPEG2MainProfileAtMainLevelTransferSyntax 1.2.840.10008.1.2.4.100 +MPEG2MainProfileAtHighLevelTransferSyntax 1.2.840.10008.1.2.4.101 +MPEG4HighProfileLevel4_1TransferSyntax 1.2.840.10008.1.2.4.102 +MPEG4BDcompatibleHighProfileLevel4_1TransferSyntax 1.2.840.10008.1.2.4.103 +MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax 1.2.840.10008.1.2.4.104 +MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax 1.2.840.10008.1.2.4.105 +MPEG4StereoHighProfileLevel4_2TransferSyntax 1.2.840.10008.1.2.4.106 +HEVCMainProfileLevel5_1TransferSyntax 1.2.840.10008.1.2.4.107 +HEVCMain10ProfileLevel5_1TransferSyntax 1.2.840.10008.1.2.4.108 +FragmentableMPEG2MainProfileMainLevelTransferSyntax 1.2.840.10008.1.2.4.100.1 +FragmentableMPEG2MainProfileHighLevelTransferSyntax 1.2.840.10008.1.2.4.101.1 +FragmentableMPEG4HighProfileLevel4_1TransferSyntax 1.2.840.10008.1.2.4.102.1 +FragmentableMPEG4BDcompatibleHighProfileLevel4_1Tr. 1.2.840.10008.1.2.4.103.1 +FragmentableMPEG4HighProfileLevel4_2_For2DVideoTr.S 1.2.840.10008.1.2.4.104.1 +FragmentableMPEG4HighProfileLevel4_2_For3DVideoTr.S 1.2.840.10008.1.2.4.105.1 +FragmentableMPEG4StereoHighProfileLevel4_2TransferS 1.2.840.10008.1.2.4.106.1 \endverbatim \section echoscu_logging LOGGING @@ -319,6 +388,6 @@ It is an error if no data dictionary can be loaded. \section echoscu_copyright COPYRIGHT -Copyright (C) 1994-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 1994-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmnet/docs/findscu.man b/dcmnet/docs/findscu.man index fb35b7f1..da87996f 100644 --- a/dcmnet/docs/findscu.man +++ b/dcmnet/docs/findscu.man @@ -202,18 +202,29 @@ certification authority: security profile: + +pg --profile-8996 + BCP 195 RFC 8996 TLS Profile (default) + + +pm --profile-8996-mod + Modified BCP 195 RFC 8996 TLS Profile + + # only available if underlying TLS library supports + # all TLS features required for this profile + +py --profile-bcp195-nd - Non-downgrading BCP 195 TLS Profile (default) + Non-downgrading BCP 195 TLS Profile (retired) +px --profile-bcp195 - BCP 195 TLS Profile + BCP 195 TLS Profile (retired) +pz --profile-bcp195-ex - Extended BCP 195 TLS Profile + Extended BCP 195 TLS Profile (retired) +pb --profile-basic Basic TLS Secure Transport Connection Profile (retired) + # only available if underlying TLS library supports 3DES + +pa --profile-aes AES TLS Secure Transport Connection Profile (retired) @@ -229,6 +240,14 @@ ciphersuite: +cs --cipher [c]iphersuite name: string add ciphersuite to list of negotiated suites +server name indication: + + --no-sni + do not use SNI (default) + + --request-sni [s]erver name: string + request server name s + pseudo random generator: +rs --seed [f]ilename: string @@ -465,6 +484,6 @@ It is an error if no data dictionary can be loaded. \section findscu_copyright COPYRIGHT -Copyright (C) 1994-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 1994-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmnet/docs/movescu.man b/dcmnet/docs/movescu.man index be9057d9..7e63f772 100644 --- a/dcmnet/docs/movescu.man +++ b/dcmnet/docs/movescu.man @@ -455,6 +455,7 @@ RETIRED_NuclearMedicineImageStorage 1.2.840.10008.5.1.4.1.1.5 RETIRED_UltrasoundImageStorage 1.2.840.10008.5.1.4.1.1.6 UltrasoundImageStorage 1.2.840.10008.5.1.4.1.1.6.1 EnhancedUSVolumeStorage 1.2.840.10008.5.1.4.1.1.6.2 +PhotoacousticImageStorage 1.2.840.10008.5.1.4.1.1.6.3 SecondaryCaptureImageStorage 1.2.840.10008.5.1.4.1.1.7 MultiframeSingleBitSecondaryCaptureImageStorage 1.2.840.10008.5.1.4.1.1.7.1 MultiframeGrayscaleByteSecondaryCaptureImageStorage 1.2.840.10008.5.1.4.1.1.7.2 @@ -466,6 +467,7 @@ DRAFT_WaveformStorage 1.2.840.10008.5.1.4.1.1.9.1 TwelveLeadECGWaveformStorage 1.2.840.10008.5.1.4.1.1.9.1.1 GeneralECGWaveformStorage 1.2.840.10008.5.1.4.1.1.9.1.2 AmbulatoryECGWaveformStorage 1.2.840.10008.5.1.4.1.1.9.1.3 +General32BitECGWaveformStorage 1.2.840.10008.5.1.4.1.1.9.1.4 HemodynamicWaveformStorage 1.2.840.10008.5.1.4.1.1.9.2.1 CardiacElectrophysiologyWaveformStorage 1.2.840.10008.5.1.4.1.1.9.3.1 BasicVoiceAudioWaveformStorage 1.2.840.10008.5.1.4.1.1.9.4.1 @@ -491,6 +493,7 @@ AdvancedBlendingPresentationStateStorage 1.2.840.10008.5.1.4.1.1.11. VolumeRenderingVolumetricPresentationStateStorage 1.2.840.10008.5.1.4.1.1.11.9 SegmentedVolumeRenderingVolumetricPres.StateStorage 1.2.840.10008.5.1.4.1.1.11.10 MultipleVolumeRenderingVolumetricPres.StateStorage 1.2.840.10008.5.1.4.1.1.11.11 +VariableModalityLUTSoftcopyPresentationStateStorage 1.2.840.10008.5.1.4.1.1.11.12 XRayAngiographicImageStorage 1.2.840.10008.5.1.4.1.1.12.1 EnhancedXAImageStorage 1.2.840.10008.5.1.4.1.1.12.1.1 XRayRadiofluoroscopicImageStorage 1.2.840.10008.5.1.4.1.1.12.2 @@ -605,6 +608,9 @@ CArmPhotonElectronRadiationRecordStorage 1.2.840.10008.5.1.4.1.1.481 RoboticRadiationRecordStorage 1.2.840.10008.5.1.4.1.1.481.20 RTRadiationSetDeliveryInstructionStorage 1.2.840.10008.5.1.4.1.1.481.21 RTTreatmentPreparationStorage 1.2.840.10008.5.1.4.1.1.481.22 +EnhancedRTImageStorage 1.2.840.10008.5.1.4.1.1.481.23 +EnhancedContinuousRTImageStorage 1.2.840.10008.5.1.4.1.1.481.24 +RTPatientPositionAcquisitionInstructionStorage 1.2.840.10008.5.1.4.1.1.481.25 DICOS_CTImageStorage 1.2.840.10008.5.1.4.1.1.501.1 DICOS_DigitalXRayImageStorageForPresentation 1.2.840.10008.5.1.4.1.1.501.2.1 DICOS_DigitalXRayImageStorageForProcessing 1.2.840.10008.5.1.4.1.1.501.2.2 @@ -786,6 +792,6 @@ It is an error if no data dictionary can be loaded. \section movescu_copyright COPYRIGHT -Copyright (C) 1994-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 1994-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmnet/docs/storescp.man b/dcmnet/docs/storescp.man index c998d13e..7106ed2c 100644 --- a/dcmnet/docs/storescp.man +++ b/dcmnet/docs/storescp.man @@ -259,18 +259,29 @@ certification authority: security profile: + +pg --profile-8996 + BCP 195 RFC 8996 TLS Profile (default) + + +pm --profile-8996-mod + Modified BCP 195 RFC 8996 TLS Profile + + # only available if underlying TLS library supports + # all TLS features required for this profile + +py --profile-bcp195-nd - Non-downgrading BCP 195 TLS Profile (default) + Non-downgrading BCP 195 TLS Profile (retired) +px --profile-bcp195 - BCP 195 TLS Profile + BCP 195 TLS Profile (retired) +pz --profile-bcp195-ex - Extended BCP 195 TLS Profile + Extended BCP 195 TLS Profile (retired) +pb --profile-basic Basic TLS Secure Transport Connection Profile (retired) + # only available if underlying TLS library supports 3DES + +pa --profile-aes AES TLS Secure Transport Connection Profile (retired) @@ -289,6 +300,14 @@ ciphersuite: +dp --dhparam [f]ilename: string read DH parameters for DH/DSS ciphersuites +server name indication: + + --no-sni + do not use SNI (default) + + --expect-sni [s]erver name: string + expect requests for server name s + pseudo random generator: +rs --seed [f]ilename: string @@ -536,15 +555,19 @@ The command line to be executed is passed to this option as a parameter. The specified command line may contain a number of placeholders which will be replaced at run time: -\li \b \#p: complete path to the output directory into which the last DICOM - object was stored (not available with option \e --ignore though) -\li \b \#f: filename of the current output file (not available with option - \e --ignore though) -\li \b \#a: calling application entity title of the peer Storage SCU -\li \b \#c: called application entity title used by the peer Storage SCU to - address \b storescp -\li \b \#r: calling presentation address, i.e. hostname or IP address of the - peer Storage SCU +- \b \#p: complete path to the output directory into which the last DICOM + object was stored (not available with option \e --ignore though) + +- \b \#f: filename of the current output file (not available with option + \e --ignore though) + +- \b \#a: calling application entity title of the peer Storage SCU + +- \b \#c: called application entity title used by the peer Storage SCU to + address \b storescp + +- \b \#r: calling presentation address, i.e. hostname or IP address of the + peer Storage SCU The specified command line is executed as a separate process, so that the execution of \b storescp will not be held back. This behavior can be influenced @@ -629,6 +652,7 @@ RETIRED_NuclearMedicineImageStorage 1.2.840.10008.5.1.4.1.1.5 RETIRED_UltrasoundImageStorage 1.2.840.10008.5.1.4.1.1.6 UltrasoundImageStorage 1.2.840.10008.5.1.4.1.1.6.1 EnhancedUSVolumeStorage 1.2.840.10008.5.1.4.1.1.6.2 +PhotoacousticImageStorage 1.2.840.10008.5.1.4.1.1.6.3 SecondaryCaptureImageStorage 1.2.840.10008.5.1.4.1.1.7 MultiframeSingleBitSecondaryCaptureImageStorage 1.2.840.10008.5.1.4.1.1.7.1 MultiframeGrayscaleByteSecondaryCaptureImageStorage 1.2.840.10008.5.1.4.1.1.7.2 @@ -640,6 +664,7 @@ DRAFT_WaveformStorage 1.2.840.10008.5.1.4.1.1.9.1 TwelveLeadECGWaveformStorage 1.2.840.10008.5.1.4.1.1.9.1.1 GeneralECGWaveformStorage 1.2.840.10008.5.1.4.1.1.9.1.2 AmbulatoryECGWaveformStorage 1.2.840.10008.5.1.4.1.1.9.1.3 +General32BitECGWaveformStorage 1.2.840.10008.5.1.4.1.1.9.1.4 HemodynamicWaveformStorage 1.2.840.10008.5.1.4.1.1.9.2.1 CardiacElectrophysiologyWaveformStorage 1.2.840.10008.5.1.4.1.1.9.3.1 BasicVoiceAudioWaveformStorage 1.2.840.10008.5.1.4.1.1.9.4.1 @@ -665,6 +690,7 @@ AdvancedBlendingPresentationStateStorage 1.2.840.10008.5.1.4.1.1.11. VolumeRenderingVolumetricPresentationStateStorage 1.2.840.10008.5.1.4.1.1.11.9 SegmentedVolumeRenderingVolumetricPres.StateStorage 1.2.840.10008.5.1.4.1.1.11.10 MultipleVolumeRenderingVolumetricPres.StateStorage 1.2.840.10008.5.1.4.1.1.11.11 +VariableModalityLUTSoftcopyPresentationStateStorage 1.2.840.10008.5.1.4.1.1.11.12 XRayAngiographicImageStorage 1.2.840.10008.5.1.4.1.1.12.1 EnhancedXAImageStorage 1.2.840.10008.5.1.4.1.1.12.1.1 XRayRadiofluoroscopicImageStorage 1.2.840.10008.5.1.4.1.1.12.2 @@ -779,6 +805,9 @@ CArmPhotonElectronRadiationRecordStorage 1.2.840.10008.5.1.4.1.1.481 RoboticRadiationRecordStorage 1.2.840.10008.5.1.4.1.1.481.20 RTRadiationSetDeliveryInstructionStorage 1.2.840.10008.5.1.4.1.1.481.21 RTTreatmentPreparationStorage 1.2.840.10008.5.1.4.1.1.481.22 +EnhancedRTImageStorage 1.2.840.10008.5.1.4.1.1.481.23 +EnhancedContinuousRTImageStorage 1.2.840.10008.5.1.4.1.1.481.24 +RTPatientPositionAcquisitionInstructionStorage 1.2.840.10008.5.1.4.1.1.481.25 DICOS_CTImageStorage 1.2.840.10008.5.1.4.1.1.501.1 DICOS_DigitalXRayImageStorageForPresentation 1.2.840.10008.5.1.4.1.1.501.2.1 DICOS_DigitalXRayImageStorageForProcessing 1.2.840.10008.5.1.4.1.1.501.2.2 @@ -823,19 +852,28 @@ JPEGLSLossyTransferSyntax 1.2.840.10008.1.2.4.81 JPEG2000LosslessOnlyTransferSyntax 1.2.840.10008.1.2.4.90 JPEG2000TransferSyntax 1.2.840.10008.1.2.4.91 MPEG2MainProfileAtMainLevelTransferSyntax 1.2.840.10008.1.2.4.100 +FragmentableMPEG2MainProfile/MainLevelTransferSyntax 1.2.840.10008.1.2.4.100.1 MPEG2MainProfileAtHighLevelTransferSyntax 1.2.840.10008.1.2.4.101 +FragmentableMPEG2MainProfil/tHighLevelTransferSyntax 1.2.840.10008.1.2.4.101.1 MPEG4HighProfileLevel4_1TransferSyntax 1.2.840.10008.1.2.4.102 +FragmentableMPEG4HighProfileLevel4_1TransferSyntax 1.2.840.10008.1.2.4.102.1 MPEG4BDcompatibleHighProfileLevel4_1TransferSyntax 1.2.840.10008.1.2.4.103 +FragmentableMPEG4BDcompatibleHighProfileLevel4_1T.S. 1.2.840.10008.1.2.4.103.1 MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax 1.2.840.10008.1.2.4.104 +FragmentableMPEG4HighProfileLevel4_2_For2DVideoTr.S. 1.2.840.10008.1.2.4.104.1 MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax 1.2.840.10008.1.2.4.105 +FragmentableMPEG4HighProfileLevel4_2_For3DVideoTr.S. 1.2.840.10008.1.2.4.105.1 MPEG4StereoHighProfileLevel4_2TransferSyntax 1.2.840.10008.1.2.4.106 +FragmentableMPEG4StereoHighProfileLevel4_2TransferS. 1.2.840.10008.1.2.4.106.1 HEVCMainProfileLevel5_1TransferSyntax 1.2.840.10008.1.2.4.107 HEVCMain10ProfileLevel5_1TransferSyntax 1.2.840.10008.1.2.4.108 RLELosslessTransferSyntax 1.2.840.10008.1.2.5 \endverbatim Additional Storage SOP Classes and Transfer Syntaxes can be used with the -so-called "association negotiation profiles" (see below). +so-called "association negotiation profiles" (see below). This could be both +Private Storage SOP Classes and Standard Storage SOP Classes that do not fit +into the PATIENT-STUDY-SERIES-INSTANCE information model. The \b storescp application does not support extended negotiation by default. However, using an appropriate association negotiation profile (see below) @@ -951,6 +989,6 @@ It is an error if no data dictionary can be loaded. \section storescp_copyright COPYRIGHT -Copyright (C) 1996-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 1996-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmnet/docs/storescu.man b/dcmnet/docs/storescu.man index 7e0151b0..288cc773 100644 --- a/dcmnet/docs/storescu.man +++ b/dcmnet/docs/storescu.man @@ -341,18 +341,29 @@ certification authority: security profile: + +pg --profile-8996 + BCP 195 RFC 8996 TLS Profile (default) + + +pm --profile-8996-mod + Modified BCP 195 RFC 8996 TLS Profile + + # only available if underlying TLS library supports + # all TLS features required for this profile + +py --profile-bcp195-nd - Non-downgrading BCP 195 TLS Profile (default) + Non-downgrading BCP 195 TLS Profile (retired) +px --profile-bcp195 - BCP 195 TLS Profile + BCP 195 TLS Profile (retired) +pz --profile-bcp195-ex - Extended BCP 195 TLS Profile + Extended BCP 195 TLS Profile (retired) +pb --profile-basic Basic TLS Secure Transport Connection Profile (retired) + # only available if underlying TLS library supports 3DES + +pa --profile-aes AES TLS Secure Transport Connection Profile (retired) @@ -368,6 +379,14 @@ ciphersuite: +cs --cipher [c]iphersuite name: string add ciphersuite to list of negotiated suites +server name indication: + + --no-sni + do not use SNI (default) + + --request-sni [s]erver name: string + request server name s + pseudo random generator: +rs --seed [f]ilename: string @@ -522,6 +541,19 @@ negotiation profiles" which may be read from a configuration file. The format and semantics of this configuration file are documented in \e asconfig.txt. +\subsection storescu_userid User Identity Negotiation + +When specifying user name and/or password using options \e --user and +\-e --password, the value has to be provided in UTF-8 encoding. + +If the option \e --pos-response is used, the SCP is asked to explicitly +respond, i.e. acknowledge, the user credentials provided in the \b storescu +request. Otherwise, if no such response is sent, \b storescu will not +continue but instead abort the connection. Since User Identity Negotiation +is an optional feature that has been introduced later into the standard, +many SCPs will not check the user identity provided and therefore will not +provide a user identity response at all. + \section storescu_logging LOGGING The level of logging output of the various command line tools and underlying @@ -590,6 +622,6 @@ It is an error if no data dictionary can be loaded. \section storescu_copyright COPYRIGHT -Copyright (C) 1996-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 1996-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmnet/etc/storescp.cfg b/dcmnet/etc/storescp.cfg index 4036e4aa..31f3125d 100644 --- a/dcmnet/etc/storescp.cfg +++ b/dcmnet/etc/storescp.cfg @@ -1,5 +1,5 @@ # -# Copyright (C) 2003-2022, OFFIS e.V. +# Copyright (C) 2003-2023, OFFIS e.V. # All rights reserved. See COPYRIGHT file for details. # # This software and supporting documentation were developed by @@ -14,11 +14,17 @@ # Author: Marco Eichelberg, Joerg Riesmeier # # Purpose: Sample configuration file for storescp +# (see "asconfig.txt" for documentation) # # ============================================================================ [[TransferSyntaxes]] # ============================================================================ +# +# Please note that the Storage SCP will prefer the first entry in the selected +# list of transfer syntaxes that is acceptable, i.e. that it matches one of the +# transfer syntaxes proposed by the Storage SCU. +# [Uncompressed] TransferSyntax1 = LocalEndianExplicit @@ -64,12 +70,19 @@ TransferSyntax29 = MPEG4BDcompatibleHighProfile/Level4.1 TransferSyntax30 = MPEG4HighProfile/Level4.2For2DVideo TransferSyntax31 = MPEG4HighProfile/Level4.2For3DVideo TransferSyntax32 = MPEG4StereoHighProfile/Level4.2 -TransferSyntax33 = HEVCMainProfile/Level5.1 -TransferSyntax34 = HEVCMain10Profile/Level5.1 -TransferSyntax35 = DeflatedLittleEndianExplicit -TransferSyntax36 = LocalEndianExplicit -TransferSyntax37 = OppositeEndianExplicit -TransferSyntax38 = LittleEndianImplicit +TransferSyntax33 = FragmentableMPEG2MainProfile/MainLevel +TransferSyntax34 = FragmentableMPEG2MainProfile/HighLevel +TransferSyntax35 = FragmentableMPEG4HighProfile/Level4.1 +TransferSyntax36 = FragmentableMPEG4BDcompatibleHighProfile/Level4.1 +TransferSyntax37 = FragmentableMPEG4HighProfile/Level4.2For2DVideo +TransferSyntax38 = FragmentableMPEG4HighProfile/Level4.2For3DVideo +TransferSyntax39 = FragmentableMPEG4StereoHighProfile/Level4.2 +TransferSyntax40 = HEVCMainProfile/Level5.1 +TransferSyntax41 = HEVCMain10Profile/Level5.1 +TransferSyntax42 = DeflatedLittleEndianExplicit +TransferSyntax43 = LocalEndianExplicit +TransferSyntax44 = OppositeEndianExplicit +TransferSyntax45 = LittleEndianImplicit # ============================================================================ [[PresentationContexts]] @@ -97,204 +110,213 @@ PresentationContext11 = DigitalMammographyXRayImageStorageForPresentation\AnyTr PresentationContext12 = DigitalMammographyXRayImageStorageForProcessing\AnyTransferSyntax PresentationContext13 = DigitalXRayImageStorageForPresentation\AnyTransferSyntax PresentationContext14 = DigitalXRayImageStorageForProcessing\AnyTransferSyntax -PresentationContext15 = EnhancedCTImageStorage\AnyTransferSyntax -PresentationContext16 = EnhancedMRColorImageStorage\AnyTransferSyntax -PresentationContext17 = EnhancedMRImageStorage\AnyTransferSyntax -PresentationContext18 = EnhancedPETImageStorage\AnyTransferSyntax -PresentationContext19 = EnhancedUSVolumeStorage\AnyTransferSyntax -PresentationContext20 = EnhancedXAImageStorage\AnyTransferSyntax -PresentationContext21 = EnhancedXRFImageStorage\AnyTransferSyntax -PresentationContext22 = IntravascularOpticalCoherenceTomographyImageStorageForPresentation\AnyTransferSyntax -PresentationContext23 = IntravascularOpticalCoherenceTomographyImageStorageForProcessing\AnyTransferSyntax -PresentationContext24 = LegacyConvertedEnhancedCTImageStorage\AnyTransferSyntax -PresentationContext25 = LegacyConvertedEnhancedMRImageStorage\AnyTransferSyntax -PresentationContext26 = LegacyConvertedEnhancedPETImageStorage\AnyTransferSyntax -PresentationContext27 = MRImageStorage\AnyTransferSyntax -PresentationContext28 = MultiframeGrayscaleByteSecondaryCaptureImageStorage\AnyTransferSyntax -PresentationContext29 = MultiframeGrayscaleWordSecondaryCaptureImageStorage\AnyTransferSyntax -PresentationContext30 = MultiframeSingleBitSecondaryCaptureImageStorage\AnyTransferSyntax -PresentationContext31 = MultiframeTrueColorSecondaryCaptureImageStorage\AnyTransferSyntax -PresentationContext32 = NuclearMedicineImageStorage\AnyTransferSyntax -PresentationContext33 = OphthalmicOpticalCoherenceTomographyEnFaceImageStorage\AnyTransferSyntax -PresentationContext34 = OphthalmicPhotography16BitImageStorage\AnyTransferSyntax -PresentationContext35 = OphthalmicPhotography8BitImageStorage\AnyTransferSyntax -PresentationContext36 = OphthalmicThicknessMapStorage\AnyTransferSyntax -PresentationContext37 = OphthalmicTomographyImageStorage\AnyTransferSyntax -PresentationContext38 = PositronEmissionTomographyImageStorage\AnyTransferSyntax -PresentationContext39 = RTImageStorage\AnyTransferSyntax -PresentationContext40 = SecondaryCaptureImageStorage\AnyTransferSyntax -PresentationContext41 = UltrasoundImageStorage\AnyTransferSyntax -PresentationContext42 = UltrasoundMultiframeImageStorage\AnyTransferSyntax -PresentationContext43 = VLEndoscopicImageStorage\AnyTransferSyntax -PresentationContext44 = VLMicroscopicImageStorage\AnyTransferSyntax -PresentationContext45 = VLPhotographicImageStorage\AnyTransferSyntax -PresentationContext46 = VLSlideCoordinatesMicroscopicImageStorage\AnyTransferSyntax -PresentationContext47 = VLWholeSlideMicroscopyImageStorage\AnyTransferSyntax -PresentationContext48 = VideoEndoscopicImageStorage\AnyTransferSyntax -PresentationContext49 = VideoMicroscopicImageStorage\AnyTransferSyntax -PresentationContext50 = VideoPhotographicImageStorage\AnyTransferSyntax -PresentationContext51 = WideFieldOphthalmicPhotography3DCoordinatesImageStorage\AnyTransferSyntax -PresentationContext52 = WideFieldOphthalmicPhotographyStereographicProjectionImageStorage\AnyTransferSyntax -PresentationContext53 = XRay3DAngiographicImageStorage\AnyTransferSyntax -PresentationContext54 = XRay3DCraniofacialImageStorage\AnyTransferSyntax -PresentationContext55 = XRayAngiographicImageStorage\AnyTransferSyntax -PresentationContext56 = XRayRadiofluoroscopicImageStorage\AnyTransferSyntax +PresentationContext15 = EnhancedContinuousRTImageStorage\AnyTransferSyntax +PresentationContext16 = EnhancedCTImageStorage\AnyTransferSyntax +PresentationContext17 = EnhancedMRColorImageStorage\AnyTransferSyntax +PresentationContext18 = EnhancedMRImageStorage\AnyTransferSyntax +PresentationContext19 = EnhancedPETImageStorage\AnyTransferSyntax +PresentationContext20 = EnhancedRTImageStorage\AnyTransferSyntax +PresentationContext21 = EnhancedUSVolumeStorage\AnyTransferSyntax +PresentationContext22 = EnhancedXAImageStorage\AnyTransferSyntax +PresentationContext23 = EnhancedXRFImageStorage\AnyTransferSyntax +PresentationContext24 = IntravascularOpticalCoherenceTomographyImageStorageForPresentation\AnyTransferSyntax +PresentationContext25 = IntravascularOpticalCoherenceTomographyImageStorageForProcessing\AnyTransferSyntax +PresentationContext26 = LegacyConvertedEnhancedCTImageStorage\AnyTransferSyntax +PresentationContext27 = LegacyConvertedEnhancedMRImageStorage\AnyTransferSyntax +PresentationContext28 = LegacyConvertedEnhancedPETImageStorage\AnyTransferSyntax +PresentationContext29 = MRImageStorage\AnyTransferSyntax +PresentationContext30 = MultiframeGrayscaleByteSecondaryCaptureImageStorage\AnyTransferSyntax +PresentationContext31 = MultiframeGrayscaleWordSecondaryCaptureImageStorage\AnyTransferSyntax +PresentationContext32 = MultiframeSingleBitSecondaryCaptureImageStorage\AnyTransferSyntax +PresentationContext33 = MultiframeTrueColorSecondaryCaptureImageStorage\AnyTransferSyntax +PresentationContext34 = NuclearMedicineImageStorage\AnyTransferSyntax +PresentationContext35 = OphthalmicOpticalCoherenceTomographyEnFaceImageStorage\AnyTransferSyntax +PresentationContext36 = OphthalmicPhotography16BitImageStorage\AnyTransferSyntax +PresentationContext37 = OphthalmicPhotography8BitImageStorage\AnyTransferSyntax +PresentationContext38 = OphthalmicThicknessMapStorage\AnyTransferSyntax +PresentationContext39 = OphthalmicTomographyImageStorage\AnyTransferSyntax +PresentationContext40 = PhotoacousticImageStorage\AnyTransferSyntax +PresentationContext41 = PositronEmissionTomographyImageStorage\AnyTransferSyntax +PresentationContext42 = RTImageStorage\AnyTransferSyntax +PresentationContext43 = SecondaryCaptureImageStorage\AnyTransferSyntax +PresentationContext44 = UltrasoundImageStorage\AnyTransferSyntax +PresentationContext45 = UltrasoundMultiframeImageStorage\AnyTransferSyntax +PresentationContext46 = VLEndoscopicImageStorage\AnyTransferSyntax +PresentationContext47 = VLMicroscopicImageStorage\AnyTransferSyntax +PresentationContext48 = VLPhotographicImageStorage\AnyTransferSyntax +PresentationContext49 = VLSlideCoordinatesMicroscopicImageStorage\AnyTransferSyntax +PresentationContext50 = VLWholeSlideMicroscopyImageStorage\AnyTransferSyntax +PresentationContext51 = VideoEndoscopicImageStorage\AnyTransferSyntax +PresentationContext52 = VideoMicroscopicImageStorage\AnyTransferSyntax +PresentationContext53 = VideoPhotographicImageStorage\AnyTransferSyntax +PresentationContext54 = WideFieldOphthalmicPhotography3DCoordinatesImageStorage\AnyTransferSyntax +PresentationContext55 = WideFieldOphthalmicPhotographyStereographicProjectionImageStorage\AnyTransferSyntax +PresentationContext56 = XRay3DAngiographicImageStorage\AnyTransferSyntax +PresentationContext57 = XRay3DCraniofacialImageStorage\AnyTransferSyntax +PresentationContext58 = XRayAngiographicImageStorage\AnyTransferSyntax +PresentationContext59 = XRayRadiofluoroscopicImageStorage\AnyTransferSyntax # # retired image SOP classes # -PresentationContext57 = RETIRED_HardcopyColorImageStorage\AnyTransferSyntax -PresentationContext58 = RETIRED_HardcopyGrayscaleImageStorage\AnyTransferSyntax -PresentationContext59 = RETIRED_NuclearMedicineImageStorage\AnyTransferSyntax -PresentationContext60 = RETIRED_UltrasoundImageStorage\AnyTransferSyntax -PresentationContext61 = RETIRED_UltrasoundMultiframeImageStorage\AnyTransferSyntax -PresentationContext62 = RETIRED_VLImageStorage\AnyTransferSyntax -PresentationContext63 = RETIRED_VLMultiframeImageStorage\AnyTransferSyntax -PresentationContext64 = RETIRED_XRayAngiographicBiPlaneImageStorage\AnyTransferSyntax +PresentationContext60 = RETIRED_HardcopyColorImageStorage\AnyTransferSyntax +PresentationContext61 = RETIRED_HardcopyGrayscaleImageStorage\AnyTransferSyntax +PresentationContext62 = RETIRED_NuclearMedicineImageStorage\AnyTransferSyntax +PresentationContext63 = RETIRED_UltrasoundImageStorage\AnyTransferSyntax +PresentationContext64 = RETIRED_UltrasoundMultiframeImageStorage\AnyTransferSyntax +PresentationContext65 = RETIRED_VLImageStorage\AnyTransferSyntax +PresentationContext66 = RETIRED_VLMultiframeImageStorage\AnyTransferSyntax +PresentationContext67 = RETIRED_XRayAngiographicBiPlaneImageStorage\AnyTransferSyntax # # the following presentation contexts are for non-image SOP classes +# (including some that do not fit into the PATIENT-STUDY-SERIES-INSTANCE model) # -PresentationContext65 = AcquisitionContextSRStorage\UncompressedOrZlib -PresentationContext66 = AdvancedBlendingPresentationStateStorage\UncompressedOrZlib -PresentationContext67 = AmbulatoryECGWaveformStorage\UncompressedOrZlib -PresentationContext68 = ArterialPulseWaveformStorage\UncompressedOrZlib -PresentationContext69 = AutorefractionMeasurementsStorage\UncompressedOrZlib -PresentationContext70 = BasicStructuredDisplayStorage\UncompressedOrZlib -PresentationContext71 = BasicTextSRStorage\UncompressedOrZlib -PresentationContext72 = BasicVoiceAudioWaveformStorage\UncompressedOrZlib -PresentationContext73 = BlendingSoftcopyPresentationStateStorage\UncompressedOrZlib -PresentationContext74 = BodyPositionWaveformStorage\UncompressedOrZlib -PresentationContext75 = CArmPhotonElectronRadiationRecordStorage\UncompressedOrZlib -PresentationContext76 = CArmPhotonElectronRadiationStorage\UncompressedOrZlib -PresentationContext77 = CTDefinedProcedureProtocolStorage\UncompressedOrZlib -PresentationContext78 = CTPerformedProcedureProtocolStorage\UncompressedOrZlib -PresentationContext79 = CardiacElectrophysiologyWaveformStorage\UncompressedOrZlib -PresentationContext80 = ChestCADSRStorage\UncompressedOrZlib -PresentationContext81 = ColonCADSRStorage\UncompressedOrZlib -PresentationContext82 = ColorSoftcopyPresentationStateStorage\UncompressedOrZlib -PresentationContext83 = CompositingPlanarMPRVolumetricPresentationStateStorage\UncompressedOrZlib -PresentationContext84 = Comprehensive3DSRStorage\UncompressedOrZlib -PresentationContext85 = ComprehensiveSRStorage\UncompressedOrZlib -PresentationContext86 = ContentAssessmentResultsStorage\UncompressedOrZlib -PresentationContext87 = DeformableSpatialRegistrationStorage\UncompressedOrZlib -PresentationContext88 = ElectromyogramWaveformStorage\UncompressedOrZlib -PresentationContext89 = ElectrooculogramWaveformStorage\UncompressedOrZlib -PresentationContext90 = EncapsulatedCDAStorage\UncompressedOrZlib -PresentationContext91 = EncapsulatedMTLStorage\UncompressedOrZlib -PresentationContext92 = EncapsulatedOBJStorage\UncompressedOrZlib -PresentationContext93 = EncapsulatedPDFStorage\UncompressedOrZlib -PresentationContext94 = EncapsulatedSTLStorage\UncompressedOrZlib -PresentationContext95 = EnhancedSRStorage\UncompressedOrZlib -PresentationContext96 = EnhancedXRayRadiationDoseSRStorage\UncompressedOrZlib -PresentationContext97 = ExtensibleSRStorage\UncompressedOrZlib -PresentationContext98 = GeneralAudioWaveformStorage\UncompressedOrZlib -PresentationContext99 = GeneralECGWaveformStorage\UncompressedOrZlib -PresentationContext100 = GenericImplantTemplateStorage\UncompressedOrZlib -PresentationContext101 = GrayscalePlanarMPRVolumetricPresentationStateStorage\UncompressedOrZlib -PresentationContext102 = GrayscaleSoftcopyPresentationStateStorage\UncompressedOrZlib -PresentationContext103 = HangingProtocolStorage\UncompressedOrZlib -PresentationContext104 = HemodynamicWaveformStorage\UncompressedOrZlib -PresentationContext105 = ImplantAssemblyTemplateStorage\UncompressedOrZlib -PresentationContext106 = ImplantTemplateGroupStorage\UncompressedOrZlib -PresentationContext107 = ImplantationPlanSRStorage\UncompressedOrZlib -PresentationContext108 = IntraocularLensCalculationsStorage\UncompressedOrZlib -PresentationContext109 = KeratometryMeasurementsStorage\UncompressedOrZlib -PresentationContext110 = KeyObjectSelectionDocumentStorage\UncompressedOrZlib -PresentationContext111 = LensometryMeasurementsStorage\UncompressedOrZlib -PresentationContext112 = MRSpectroscopyStorage\UncompressedOrZlib -PresentationContext113 = MacularGridThicknessAndVolumeReportStorage\UncompressedOrZlib -PresentationContext114 = MammographyCADSRStorage\UncompressedOrZlib -PresentationContext115 = MicroscopyBulkSimpleAnnotationsStorage\UncompressedOrZlib -PresentationContext116 = MultichannelRespiratoryWaveformStorage\UncompressedOrZlib -PresentationContext117 = MultipleVolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib -PresentationContext118 = OphthalmicAxialMeasurementsStorage\UncompressedOrZlib -PresentationContext119 = OphthalmicOpticalCoherenceTomographyBscanVolumeAnalysisStorage\UncompressedOrZlib -PresentationContext120 = OphthalmicVisualFieldStaticPerimetryMeasurementsStorage\UncompressedOrZlib -PresentationContext121 = ParametricMapStorage\UncompressedOrZlib -PresentationContext122 = PatientRadiationDoseSRStorage\UncompressedOrZlib -PresentationContext123 = PerformedImagingAgentAdministrationSRStorage\UncompressedOrZlib -PresentationContext124 = PlannedImagingAgentAdministrationSRStorage\UncompressedOrZlib -PresentationContext125 = ProcedureLogStorage\UncompressedOrZlib -PresentationContext126 = ProtocolApprovalStorage\UncompressedOrZlib -PresentationContext127 = PseudoColorSoftcopyPresentationStateStorage\UncompressedOrZlib -PresentationContext128 = RTBeamsDeliveryInstructionStorage\UncompressedOrZlib -PresentationContext129 = RTBeamsTreatmentRecordStorage\UncompressedOrZlib -PresentationContext130 = RTBrachyApplicationSetupDeliveryInstructionStorage\UncompressedOrZlib -PresentationContext131 = RTBrachyTreatmentRecordStorage\UncompressedOrZlib -PresentationContext132 = RTDoseStorage\UncompressedOrZlib -PresentationContext133 = RTIonBeamsTreatmentRecordStorage\UncompressedOrZlib -PresentationContext134 = RTIonPlanStorage\UncompressedOrZlib -PresentationContext135 = RTPhysicianIntentStorage\UncompressedOrZlib -PresentationContext136 = RTPlanStorage\UncompressedOrZlib -PresentationContext137 = RTRadiationRecordSetStorage\UncompressedOrZlib -PresentationContext138 = RTRadiationSalvageRecordStorage\UncompressedOrZlib -PresentationContext139 = RTRadiationSetDeliveryInstructionStorage\UncompressedOrZlib -PresentationContext140 = RTRadiationSetStorage\UncompressedOrZlib -PresentationContext141 = RTSegmentAnnotationStorage\UncompressedOrZlib -PresentationContext142 = RTStructureSetStorage\UncompressedOrZlib -PresentationContext143 = RTTreatmentPreparationStorage\UncompressedOrZlib -PresentationContext144 = RTTreatmentSummaryRecordStorage\UncompressedOrZlib -PresentationContext145 = RadiopharmaceuticalRadiationDoseSRStorage\UncompressedOrZlib -PresentationContext146 = RawDataStorage\UncompressedOrZlib -PresentationContext147 = RealWorldValueMappingStorage\UncompressedOrZlib -PresentationContext148 = RespiratoryWaveformStorage\UncompressedOrZlib -PresentationContext149 = RoboticArmRadiationStorage\UncompressedOrZlib -PresentationContext150 = RoboticRadiationRecordStorage\UncompressedOrZlib -PresentationContext151 = RoutineScalpElectroencephalogramWaveformStorage\UncompressedOrZlib -PresentationContext152 = SegmentationStorage\UncompressedOrZlib -PresentationContext153 = SegmentedVolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib -PresentationContext154 = SimplifiedAdultEchoSRStorage\UncompressedOrZlib -PresentationContext155 = SleepElectroencephalogramWaveformStorage\UncompressedOrZlib -PresentationContext156 = SpatialFiducialsStorage\UncompressedOrZlib -PresentationContext157 = SpatialRegistrationStorage\UncompressedOrZlib -PresentationContext158 = SpectaclePrescriptionReportStorage\UncompressedOrZlib -PresentationContext159 = StereometricRelationshipStorage\UncompressedOrZlib -PresentationContext160 = SubjectiveRefractionMeasurementsStorage\UncompressedOrZlib -PresentationContext161 = SurfaceScanMeshStorage\UncompressedOrZlib -PresentationContext162 = SurfaceScanPointCloudStorage\UncompressedOrZlib -PresentationContext163 = SurfaceSegmentationStorage\UncompressedOrZlib -PresentationContext164 = TomotherapeuticRadiationRecordStorage\UncompressedOrZlib -PresentationContext165 = TomotherapeuticRadiationStorage\UncompressedOrZlib -PresentationContext166 = TractographyResultsStorage\UncompressedOrZlib -PresentationContext167 = TwelveLeadECGWaveformStorage\UncompressedOrZlib -PresentationContext168 = VisualAcuityMeasurementsStorage\UncompressedOrZlib -PresentationContext169 = VolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib -PresentationContext170 = XADefinedProcedureProtocolStorage\UncompressedOrZlib -PresentationContext171 = XAPerformedProcedureProtocolStorage\UncompressedOrZlib -PresentationContext172 = XAXRFGrayscaleSoftcopyPresentationStateStorage\UncompressedOrZlib -PresentationContext173 = XRayRadiationDoseSRStorage\UncompressedOrZlib +PresentationContext68 = AcquisitionContextSRStorage\UncompressedOrZlib +PresentationContext69 = AdvancedBlendingPresentationStateStorage\UncompressedOrZlib +PresentationContext70 = AmbulatoryECGWaveformStorage\UncompressedOrZlib +PresentationContext71 = ArterialPulseWaveformStorage\UncompressedOrZlib +PresentationContext72 = AutorefractionMeasurementsStorage\UncompressedOrZlib +PresentationContext73 = BasicStructuredDisplayStorage\UncompressedOrZlib +PresentationContext74 = BasicTextSRStorage\UncompressedOrZlib +PresentationContext75 = BasicVoiceAudioWaveformStorage\UncompressedOrZlib +PresentationContext76 = BlendingSoftcopyPresentationStateStorage\UncompressedOrZlib +PresentationContext77 = BodyPositionWaveformStorage\UncompressedOrZlib +PresentationContext78 = CArmPhotonElectronRadiationRecordStorage\UncompressedOrZlib +PresentationContext79 = CArmPhotonElectronRadiationStorage\UncompressedOrZlib +PresentationContext80 = CTDefinedProcedureProtocolStorage\UncompressedOrZlib +PresentationContext81 = CTPerformedProcedureProtocolStorage\UncompressedOrZlib +PresentationContext82 = CardiacElectrophysiologyWaveformStorage\UncompressedOrZlib +PresentationContext83 = ChestCADSRStorage\UncompressedOrZlib +PresentationContext84 = ColonCADSRStorage\UncompressedOrZlib +PresentationContext85 = ColorPaletteStorage\UncompressedOrZlib +PresentationContext86 = ColorSoftcopyPresentationStateStorage\UncompressedOrZlib +PresentationContext87 = CompositingPlanarMPRVolumetricPresentationStateStorage\UncompressedOrZlib +PresentationContext88 = Comprehensive3DSRStorage\UncompressedOrZlib +PresentationContext89 = ComprehensiveSRStorage\UncompressedOrZlib +PresentationContext90 = ContentAssessmentResultsStorage\UncompressedOrZlib +PresentationContext91 = DeformableSpatialRegistrationStorage\UncompressedOrZlib +PresentationContext92 = ElectromyogramWaveformStorage\UncompressedOrZlib +PresentationContext93 = ElectrooculogramWaveformStorage\UncompressedOrZlib +PresentationContext94 = EncapsulatedCDAStorage\UncompressedOrZlib +PresentationContext95 = EncapsulatedMTLStorage\UncompressedOrZlib +PresentationContext96 = EncapsulatedOBJStorage\UncompressedOrZlib +PresentationContext97 = EncapsulatedPDFStorage\UncompressedOrZlib +PresentationContext98 = EncapsulatedSTLStorage\UncompressedOrZlib +PresentationContext99 = EnhancedSRStorage\UncompressedOrZlib +PresentationContext100 = EnhancedXRayRadiationDoseSRStorage\UncompressedOrZlib +PresentationContext101 = ExtensibleSRStorage\UncompressedOrZlib +PresentationContext102 = General32BitECGWaveformStorage\UncompressedOrZlib +PresentationContext103 = GeneralAudioWaveformStorage\UncompressedOrZlib +PresentationContext104 = GeneralECGWaveformStorage\UncompressedOrZlib +PresentationContext105 = GenericImplantTemplateStorage\UncompressedOrZlib +PresentationContext106 = GrayscalePlanarMPRVolumetricPresentationStateStorage\UncompressedOrZlib +PresentationContext107 = GrayscaleSoftcopyPresentationStateStorage\UncompressedOrZlib +PresentationContext108 = HangingProtocolStorage\UncompressedOrZlib +PresentationContext109 = HemodynamicWaveformStorage\UncompressedOrZlib +PresentationContext110 = ImplantAssemblyTemplateStorage\UncompressedOrZlib +PresentationContext111 = ImplantTemplateGroupStorage\UncompressedOrZlib +PresentationContext112 = ImplantationPlanSRStorage\UncompressedOrZlib +PresentationContext113 = IntraocularLensCalculationsStorage\UncompressedOrZlib +PresentationContext114 = InventoryStorage\UncompressedOrZlib +PresentationContext115 = KeratometryMeasurementsStorage\UncompressedOrZlib +PresentationContext116 = KeyObjectSelectionDocumentStorage\UncompressedOrZlib +PresentationContext117 = LensometryMeasurementsStorage\UncompressedOrZlib +PresentationContext118 = MRSpectroscopyStorage\UncompressedOrZlib +PresentationContext119 = MacularGridThicknessAndVolumeReportStorage\UncompressedOrZlib +PresentationContext120 = MammographyCADSRStorage\UncompressedOrZlib +PresentationContext121 = MicroscopyBulkSimpleAnnotationsStorage\UncompressedOrZlib +PresentationContext122 = MultichannelRespiratoryWaveformStorage\UncompressedOrZlib +PresentationContext123 = MultipleVolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib +PresentationContext124 = OphthalmicAxialMeasurementsStorage\UncompressedOrZlib +PresentationContext125 = OphthalmicOpticalCoherenceTomographyBscanVolumeAnalysisStorage\UncompressedOrZlib +PresentationContext126 = OphthalmicVisualFieldStaticPerimetryMeasurementsStorage\UncompressedOrZlib +PresentationContext127 = ParametricMapStorage\UncompressedOrZlib +PresentationContext128 = PatientRadiationDoseSRStorage\UncompressedOrZlib +PresentationContext129 = PerformedImagingAgentAdministrationSRStorage\UncompressedOrZlib +PresentationContext130 = PlannedImagingAgentAdministrationSRStorage\UncompressedOrZlib +PresentationContext131 = ProcedureLogStorage\UncompressedOrZlib +PresentationContext132 = ProtocolApprovalStorage\UncompressedOrZlib +PresentationContext133 = PseudoColorSoftcopyPresentationStateStorage\UncompressedOrZlib +PresentationContext134 = RTBeamsDeliveryInstructionStorage\UncompressedOrZlib +PresentationContext135 = RTBeamsTreatmentRecordStorage\UncompressedOrZlib +PresentationContext136 = RTBrachyApplicationSetupDeliveryInstructionStorage\UncompressedOrZlib +PresentationContext137 = RTBrachyTreatmentRecordStorage\UncompressedOrZlib +PresentationContext138 = RTDoseStorage\UncompressedOrZlib +PresentationContext139 = RTIonBeamsTreatmentRecordStorage\UncompressedOrZlib +PresentationContext140 = RTIonPlanStorage\UncompressedOrZlib +PresentationContext141 = RTPatientPositionAcquisitionInstructionStorage\UncompressedOrZlib +PresentationContext142 = RTPhysicianIntentStorage\UncompressedOrZlib +PresentationContext143 = RTPlanStorage\UncompressedOrZlib +PresentationContext144 = RTRadiationRecordSetStorage\UncompressedOrZlib +PresentationContext145 = RTRadiationSalvageRecordStorage\UncompressedOrZlib +PresentationContext146 = RTRadiationSetDeliveryInstructionStorage\UncompressedOrZlib +PresentationContext147 = RTRadiationSetStorage\UncompressedOrZlib +PresentationContext148 = RTSegmentAnnotationStorage\UncompressedOrZlib +PresentationContext149 = RTStructureSetStorage\UncompressedOrZlib +PresentationContext150 = RTTreatmentPreparationStorage\UncompressedOrZlib +PresentationContext151 = RTTreatmentSummaryRecordStorage\UncompressedOrZlib +PresentationContext152 = RadiopharmaceuticalRadiationDoseSRStorage\UncompressedOrZlib +PresentationContext153 = RawDataStorage\UncompressedOrZlib +PresentationContext154 = RealWorldValueMappingStorage\UncompressedOrZlib +PresentationContext155 = RespiratoryWaveformStorage\UncompressedOrZlib +PresentationContext156 = RoboticArmRadiationStorage\UncompressedOrZlib +PresentationContext157 = RoboticRadiationRecordStorage\UncompressedOrZlib +PresentationContext158 = RoutineScalpElectroencephalogramWaveformStorage\UncompressedOrZlib +PresentationContext159 = SegmentationStorage\UncompressedOrZlib +PresentationContext160 = SegmentedVolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib +PresentationContext161 = SimplifiedAdultEchoSRStorage\UncompressedOrZlib +PresentationContext162 = SleepElectroencephalogramWaveformStorage\UncompressedOrZlib +PresentationContext163 = SpatialFiducialsStorage\UncompressedOrZlib +PresentationContext164 = SpatialRegistrationStorage\UncompressedOrZlib +PresentationContext165 = SpectaclePrescriptionReportStorage\UncompressedOrZlib +PresentationContext166 = StereometricRelationshipStorage\UncompressedOrZlib +PresentationContext167 = SubjectiveRefractionMeasurementsStorage\UncompressedOrZlib +PresentationContext168 = SurfaceScanMeshStorage\UncompressedOrZlib +PresentationContext169 = SurfaceScanPointCloudStorage\UncompressedOrZlib +PresentationContext170 = SurfaceSegmentationStorage\UncompressedOrZlib +PresentationContext171 = TomotherapeuticRadiationRecordStorage\UncompressedOrZlib +PresentationContext172 = TomotherapeuticRadiationStorage\UncompressedOrZlib +PresentationContext173 = TractographyResultsStorage\UncompressedOrZlib +PresentationContext174 = TwelveLeadECGWaveformStorage\UncompressedOrZlib +PresentationContext175 = VariableModalityLUTSoftcopyPresentationStateStorage\UncompressedOrZlib +PresentationContext176 = VisualAcuityMeasurementsStorage\UncompressedOrZlib +PresentationContext177 = VolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib +PresentationContext178 = XADefinedProcedureProtocolStorage\UncompressedOrZlib +PresentationContext179 = XAPerformedProcedureProtocolStorage\UncompressedOrZlib +PresentationContext180 = XAXRFGrayscaleSoftcopyPresentationStateStorage\UncompressedOrZlib +PresentationContext181 = XRayRadiationDoseSRStorage\UncompressedOrZlib # # retired non-image SOP classes # -PresentationContext174 = RETIRED_StandaloneCurveStorage\UncompressedOrZlib -PresentationContext175 = RETIRED_StandaloneModalityLUTStorage\UncompressedOrZlib -PresentationContext176 = RETIRED_StandaloneOverlayStorage\UncompressedOrZlib -PresentationContext177 = RETIRED_StandalonePETCurveStorage\UncompressedOrZlib -PresentationContext178 = RETIRED_StandaloneVOILUTStorage\UncompressedOrZlib -PresentationContext179 = RETIRED_StoredPrintStorage\UncompressedOrZlib +PresentationContext182 = RETIRED_StandaloneCurveStorage\UncompressedOrZlib +PresentationContext183 = RETIRED_StandaloneModalityLUTStorage\UncompressedOrZlib +PresentationContext184 = RETIRED_StandaloneOverlayStorage\UncompressedOrZlib +PresentationContext185 = RETIRED_StandalonePETCurveStorage\UncompressedOrZlib +PresentationContext186 = RETIRED_StandaloneVOILUTStorage\UncompressedOrZlib +PresentationContext187 = RETIRED_StoredPrintStorage\UncompressedOrZlib # # draft non-image SOP classes # -PresentationContext180 = DRAFT_RTBeamsDeliveryInstructionStorage\UncompressedOrZlib -PresentationContext181 = DRAFT_SRAudioStorage\UncompressedOrZlib -PresentationContext182 = DRAFT_SRComprehensiveStorage\UncompressedOrZlib -PresentationContext183 = DRAFT_SRDetailStorage\UncompressedOrZlib -PresentationContext184 = DRAFT_SRTextStorage\UncompressedOrZlib -PresentationContext185 = DRAFT_WaveformStorage\UncompressedOrZlib +PresentationContext188 = DRAFT_RTBeamsDeliveryInstructionStorage\UncompressedOrZlib +PresentationContext189 = DRAFT_SRAudioStorage\UncompressedOrZlib +PresentationContext190 = DRAFT_SRComprehensiveStorage\UncompressedOrZlib +PresentationContext191 = DRAFT_SRDetailStorage\UncompressedOrZlib +PresentationContext192 = DRAFT_SRTextStorage\UncompressedOrZlib +PresentationContext193 = DRAFT_WaveformStorage\UncompressedOrZlib # # DICOS Storage # -PresentationContext186 = DICOS_CTImageStorage\AnyTransferSyntax -PresentationContext187 = DICOS_DigitalXRayImageStorageForPresentation\AnyTransferSyntax -PresentationContext188 = DICOS_DigitalXRayImageStorageForProcessing\AnyTransferSyntax -PresentationContext189 = DICOS_2DAITStorage\AnyTransferSyntax -PresentationContext190 = DICOS_3DAITStorage\AnyTransferSyntax -PresentationContext191 = DICOS_QuadrupoleResonanceStorage\UncompressedOrZlib -PresentationContext192 = DICOS_ThreatDetectionReportStorage\UncompressedOrZlib +PresentationContext194 = DICOS_CTImageStorage\AnyTransferSyntax +PresentationContext195 = DICOS_DigitalXRayImageStorageForPresentation\AnyTransferSyntax +PresentationContext196 = DICOS_DigitalXRayImageStorageForProcessing\AnyTransferSyntax +PresentationContext197 = DICOS_2DAITStorage\AnyTransferSyntax +PresentationContext198 = DICOS_3DAITStorage\AnyTransferSyntax +PresentationContext199 = DICOS_QuadrupoleResonanceStorage\UncompressedOrZlib +PresentationContext200 = DICOS_ThreatDetectionReportStorage\UncompressedOrZlib # # DICONDE Storage # -PresentationContext193 = DICONDE_EddyCurrentImageStorage\AnyTransferSyntax -PresentationContext194 = DICONDE_EddyCurrentMultiframeImageStorage\AnyTransferSyntax +PresentationContext201 = DICONDE_EddyCurrentImageStorage\AnyTransferSyntax +PresentationContext202 = DICONDE_EddyCurrentMultiframeImageStorage\AnyTransferSyntax # ---------------------------------------------------------------------------- @@ -324,160 +346,169 @@ PresentationContext11 = DigitalMammographyXRayImageStorageForPresentation\AnyTr PresentationContext12 = DigitalMammographyXRayImageStorageForProcessing\AnyTransferSyntax PresentationContext13 = DigitalXRayImageStorageForPresentation\AnyTransferSyntax PresentationContext14 = DigitalXRayImageStorageForProcessing\AnyTransferSyntax -PresentationContext15 = EnhancedCTImageStorage\AnyTransferSyntax -PresentationContext16 = EnhancedMRColorImageStorage\AnyTransferSyntax -PresentationContext17 = EnhancedMRImageStorage\AnyTransferSyntax -PresentationContext18 = EnhancedPETImageStorage\AnyTransferSyntax -PresentationContext19 = EnhancedUSVolumeStorage\AnyTransferSyntax -PresentationContext20 = EnhancedXAImageStorage\AnyTransferSyntax -PresentationContext21 = EnhancedXRFImageStorage\AnyTransferSyntax -PresentationContext22 = IntravascularOpticalCoherenceTomographyImageStorageForPresentation\AnyTransferSyntax -PresentationContext23 = IntravascularOpticalCoherenceTomographyImageStorageForProcessing\AnyTransferSyntax -PresentationContext24 = LegacyConvertedEnhancedCTImageStorage\AnyTransferSyntax -PresentationContext25 = LegacyConvertedEnhancedMRImageStorage\AnyTransferSyntax -PresentationContext26 = LegacyConvertedEnhancedPETImageStorage\AnyTransferSyntax -PresentationContext27 = MRImageStorage\AnyTransferSyntax -PresentationContext28 = MultiframeGrayscaleByteSecondaryCaptureImageStorage\AnyTransferSyntax -PresentationContext29 = MultiframeGrayscaleWordSecondaryCaptureImageStorage\AnyTransferSyntax -PresentationContext30 = MultiframeSingleBitSecondaryCaptureImageStorage\AnyTransferSyntax -PresentationContext31 = MultiframeTrueColorSecondaryCaptureImageStorage\AnyTransferSyntax -PresentationContext32 = NuclearMedicineImageStorage\AnyTransferSyntax -PresentationContext33 = OphthalmicOpticalCoherenceTomographyEnFaceImageStorage\AnyTransferSyntax -PresentationContext34 = OphthalmicPhotography16BitImageStorage\AnyTransferSyntax -PresentationContext35 = OphthalmicPhotography8BitImageStorage\AnyTransferSyntax -PresentationContext36 = OphthalmicThicknessMapStorage\AnyTransferSyntax -PresentationContext37 = OphthalmicTomographyImageStorage\AnyTransferSyntax -PresentationContext38 = PositronEmissionTomographyImageStorage\AnyTransferSyntax -PresentationContext39 = RTImageStorage\AnyTransferSyntax -PresentationContext40 = SecondaryCaptureImageStorage\AnyTransferSyntax -PresentationContext41 = UltrasoundImageStorage\AnyTransferSyntax -PresentationContext42 = UltrasoundMultiframeImageStorage\AnyTransferSyntax -PresentationContext43 = VLEndoscopicImageStorage\AnyTransferSyntax -PresentationContext44 = VLMicroscopicImageStorage\AnyTransferSyntax -PresentationContext45 = VLPhotographicImageStorage\AnyTransferSyntax -PresentationContext46 = VLSlideCoordinatesMicroscopicImageStorage\AnyTransferSyntax -PresentationContext47 = VLWholeSlideMicroscopyImageStorage\AnyTransferSyntax -PresentationContext48 = VideoEndoscopicImageStorage\AnyTransferSyntax -PresentationContext49 = VideoMicroscopicImageStorage\AnyTransferSyntax -PresentationContext50 = VideoPhotographicImageStorage\AnyTransferSyntax -PresentationContext51 = WideFieldOphthalmicPhotography3DCoordinatesImageStorage\AnyTransferSyntax -PresentationContext52 = WideFieldOphthalmicPhotographyStereographicProjectionImageStorage\AnyTransferSyntax -PresentationContext53 = XRay3DAngiographicImageStorage\AnyTransferSyntax -PresentationContext54 = XRay3DCraniofacialImageStorage\AnyTransferSyntax -PresentationContext55 = XRayAngiographicImageStorage\AnyTransferSyntax -PresentationContext56 = XRayRadiofluoroscopicImageStorage\AnyTransferSyntax +PresentationContext15 = EnhancedContinuousRTImageStorage\AnyTransferSyntax +PresentationContext16 = EnhancedCTImageStorage\AnyTransferSyntax +PresentationContext17 = EnhancedMRColorImageStorage\AnyTransferSyntax +PresentationContext18 = EnhancedMRImageStorage\AnyTransferSyntax +PresentationContext19 = EnhancedPETImageStorage\AnyTransferSyntax +PresentationContext20 = EnhancedRTImageStorage\AnyTransferSyntax +PresentationContext21 = EnhancedUSVolumeStorage\AnyTransferSyntax +PresentationContext22 = EnhancedXAImageStorage\AnyTransferSyntax +PresentationContext23 = EnhancedXRFImageStorage\AnyTransferSyntax +PresentationContext24 = IntravascularOpticalCoherenceTomographyImageStorageForPresentation\AnyTransferSyntax +PresentationContext25 = IntravascularOpticalCoherenceTomographyImageStorageForProcessing\AnyTransferSyntax +PresentationContext26 = LegacyConvertedEnhancedCTImageStorage\AnyTransferSyntax +PresentationContext27 = LegacyConvertedEnhancedMRImageStorage\AnyTransferSyntax +PresentationContext28 = LegacyConvertedEnhancedPETImageStorage\AnyTransferSyntax +PresentationContext29 = MRImageStorage\AnyTransferSyntax +PresentationContext30 = MultiframeGrayscaleByteSecondaryCaptureImageStorage\AnyTransferSyntax +PresentationContext31 = MultiframeGrayscaleWordSecondaryCaptureImageStorage\AnyTransferSyntax +PresentationContext32 = MultiframeSingleBitSecondaryCaptureImageStorage\AnyTransferSyntax +PresentationContext33 = MultiframeTrueColorSecondaryCaptureImageStorage\AnyTransferSyntax +PresentationContext34 = NuclearMedicineImageStorage\AnyTransferSyntax +PresentationContext35 = OphthalmicOpticalCoherenceTomographyEnFaceImageStorage\AnyTransferSyntax +PresentationContext36 = OphthalmicPhotography16BitImageStorage\AnyTransferSyntax +PresentationContext37 = OphthalmicPhotography8BitImageStorage\AnyTransferSyntax +PresentationContext38 = OphthalmicThicknessMapStorage\AnyTransferSyntax +PresentationContext39 = OphthalmicTomographyImageStorage\AnyTransferSyntax +PresentationContext40 = PhotoacousticImageStorage\AnyTransferSyntax +PresentationContext41 = PositronEmissionTomographyImageStorage\AnyTransferSyntax +PresentationContext42 = RTImageStorage\AnyTransferSyntax +PresentationContext43 = SecondaryCaptureImageStorage\AnyTransferSyntax +PresentationContext44 = UltrasoundImageStorage\AnyTransferSyntax +PresentationContext45 = UltrasoundMultiframeImageStorage\AnyTransferSyntax +PresentationContext46 = VLEndoscopicImageStorage\AnyTransferSyntax +PresentationContext47 = VLMicroscopicImageStorage\AnyTransferSyntax +PresentationContext48 = VLPhotographicImageStorage\AnyTransferSyntax +PresentationContext49 = VLSlideCoordinatesMicroscopicImageStorage\AnyTransferSyntax +PresentationContext50 = VLWholeSlideMicroscopyImageStorage\AnyTransferSyntax +PresentationContext51 = VideoEndoscopicImageStorage\AnyTransferSyntax +PresentationContext52 = VideoMicroscopicImageStorage\AnyTransferSyntax +PresentationContext53 = VideoPhotographicImageStorage\AnyTransferSyntax +PresentationContext54 = WideFieldOphthalmicPhotography3DCoordinatesImageStorage\AnyTransferSyntax +PresentationContext55 = WideFieldOphthalmicPhotographyStereographicProjectionImageStorage\AnyTransferSyntax +PresentationContext56 = XRay3DAngiographicImageStorage\AnyTransferSyntax +PresentationContext57 = XRay3DCraniofacialImageStorage\AnyTransferSyntax +PresentationContext58 = XRayAngiographicImageStorage\AnyTransferSyntax +PresentationContext59 = XRayRadiofluoroscopicImageStorage\AnyTransferSyntax # # the following presentation contexts are for non-image SOP classes +# (including some that do not fit into the PATIENT-STUDY-SERIES-INSTANCE model) # -PresentationContext57 = AcquisitionContextSRStorage\UncompressedOrZlib -PresentationContext58 = AdvancedBlendingPresentationStateStorage\UncompressedOrZlib -PresentationContext59 = AmbulatoryECGWaveformStorage\UncompressedOrZlib -PresentationContext60 = ArterialPulseWaveformStorage\UncompressedOrZlib -PresentationContext61 = AutorefractionMeasurementsStorage\UncompressedOrZlib -PresentationContext62 = BasicStructuredDisplayStorage\UncompressedOrZlib -PresentationContext63 = BasicTextSRStorage\UncompressedOrZlib -PresentationContext64 = BasicVoiceAudioWaveformStorage\UncompressedOrZlib -PresentationContext65 = BlendingSoftcopyPresentationStateStorage\UncompressedOrZlib -PresentationContext66 = BodyPositionWaveformStorage\UncompressedOrZlib -PresentationContext67 = CArmPhotonElectronRadiationRecordStorage\UncompressedOrZlib -PresentationContext68 = CArmPhotonElectronRadiationStorage\UncompressedOrZlib -PresentationContext69 = CTDefinedProcedureProtocolStorage\UncompressedOrZlib -PresentationContext70 = CTPerformedProcedureProtocolStorage\UncompressedOrZlib -PresentationContext71 = CardiacElectrophysiologyWaveformStorage\UncompressedOrZlib -PresentationContext72 = ChestCADSRStorage\UncompressedOrZlib -PresentationContext73 = ColonCADSRStorage\UncompressedOrZlib -PresentationContext74 = ColorSoftcopyPresentationStateStorage\UncompressedOrZlib -PresentationContext75 = CompositingPlanarMPRVolumetricPresentationStateStorage\UncompressedOrZlib -PresentationContext76 = Comprehensive3DSRStorage\UncompressedOrZlib -PresentationContext77 = ComprehensiveSRStorage\UncompressedOrZlib -PresentationContext78 = ContentAssessmentResultsStorage\UncompressedOrZlib -PresentationContext79 = DeformableSpatialRegistrationStorage\UncompressedOrZlib -PresentationContext80 = ElectromyogramWaveformStorage\UncompressedOrZlib -PresentationContext81 = ElectrooculogramWaveformStorage\UncompressedOrZlib -PresentationContext82 = EncapsulatedCDAStorage\UncompressedOrZlib -PresentationContext83 = EncapsulatedMTLStorage\UncompressedOrZlib -PresentationContext84 = EncapsulatedOBJStorage\UncompressedOrZlib -PresentationContext85 = EncapsulatedPDFStorage\UncompressedOrZlib -PresentationContext86 = EncapsulatedSTLStorage\UncompressedOrZlib -PresentationContext87 = EnhancedSRStorage\UncompressedOrZlib -PresentationContext88 = EnhancedXRayRadiationDoseSRStorage\UncompressedOrZlib -PresentationContext89 = ExtensibleSRStorage\UncompressedOrZlib -PresentationContext90 = GeneralAudioWaveformStorage\UncompressedOrZlib -PresentationContext91 = GeneralECGWaveformStorage\UncompressedOrZlib -PresentationContext92 = GenericImplantTemplateStorage\UncompressedOrZlib -PresentationContext93 = GrayscalePlanarMPRVolumetricPresentationStateStorage\UncompressedOrZlib -PresentationContext94 = GrayscaleSoftcopyPresentationStateStorage\UncompressedOrZlib -PresentationContext95 = HangingProtocolStorage\UncompressedOrZlib -PresentationContext96 = HemodynamicWaveformStorage\UncompressedOrZlib -PresentationContext97 = ImplantAssemblyTemplateStorage\UncompressedOrZlib -PresentationContext98 = ImplantTemplateGroupStorage\UncompressedOrZlib -PresentationContext99 = ImplantationPlanSRStorage\UncompressedOrZlib -PresentationContext100 = IntraocularLensCalculationsStorage\UncompressedOrZlib -PresentationContext101 = KeratometryMeasurementsStorage\UncompressedOrZlib -PresentationContext102 = KeyObjectSelectionDocumentStorage\UncompressedOrZlib -PresentationContext103 = LensometryMeasurementsStorage\UncompressedOrZlib -PresentationContext104 = MRSpectroscopyStorage\UncompressedOrZlib -PresentationContext105 = MacularGridThicknessAndVolumeReportStorage\UncompressedOrZlib -PresentationContext106 = MammographyCADSRStorage\UncompressedOrZlib -PresentationContext107 = MicroscopyBulkSimpleAnnotationsStorage\UncompressedOrZlib -PresentationContext108 = MultichannelRespiratoryWaveformStorage\UncompressedOrZlib -PresentationContext109 = MultipleVolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib -PresentationContext110 = OphthalmicAxialMeasurementsStorage\UncompressedOrZlib -PresentationContext111 = OphthalmicOpticalCoherenceTomographyBscanVolumeAnalysisStorage\UncompressedOrZlib -PresentationContext112 = OphthalmicVisualFieldStaticPerimetryMeasurementsStorage\UncompressedOrZlib -PresentationContext113 = ParametricMapStorage\UncompressedOrZlib -PresentationContext114 = PatientRadiationDoseSRStorage\UncompressedOrZlib -PresentationContext115 = PerformedImagingAgentAdministrationSRStorage\UncompressedOrZlib -PresentationContext116 = PlannedImagingAgentAdministrationSRStorage\UncompressedOrZlib -PresentationContext117 = ProcedureLogStorage\UncompressedOrZlib -PresentationContext118 = ProtocolApprovalStorage\UncompressedOrZlib -PresentationContext119 = PseudoColorSoftcopyPresentationStateStorage\UncompressedOrZlib -PresentationContext120 = RTBeamsDeliveryInstructionStorage\UncompressedOrZlib -PresentationContext121 = RTBeamsTreatmentRecordStorage\UncompressedOrZlib -PresentationContext122 = RTBrachyApplicationSetupDeliveryInstructionStorage\UncompressedOrZlib -PresentationContext123 = RTBrachyTreatmentRecordStorage\UncompressedOrZlib -PresentationContext124 = RTDoseStorage\UncompressedOrZlib -PresentationContext125 = RTIonBeamsTreatmentRecordStorage\UncompressedOrZlib -PresentationContext126 = RTIonPlanStorage\UncompressedOrZlib -PresentationContext127 = RTPhysicianIntentStorage\UncompressedOrZlib -PresentationContext128 = RTPlanStorage\UncompressedOrZlib -PresentationContext129 = RTRadiationRecordSetStorage\UncompressedOrZlib -PresentationContext130 = RTRadiationSalvageRecordStorage\UncompressedOrZlib -PresentationContext131 = RTRadiationSetDeliveryInstructionStorage\UncompressedOrZlib -PresentationContext132 = RTRadiationSetStorage\UncompressedOrZlib -PresentationContext133 = RTSegmentAnnotationStorage\UncompressedOrZlib -PresentationContext134 = RTStructureSetStorage\UncompressedOrZlib -PresentationContext135 = RTTreatmentPreparationStorage\UncompressedOrZlib -PresentationContext136 = RTTreatmentSummaryRecordStorage\UncompressedOrZlib -PresentationContext137 = RadiopharmaceuticalRadiationDoseSRStorage\UncompressedOrZlib -PresentationContext138 = RawDataStorage\UncompressedOrZlib -PresentationContext139 = RealWorldValueMappingStorage\UncompressedOrZlib -PresentationContext140 = RespiratoryWaveformStorage\UncompressedOrZlib -PresentationContext141 = RoboticArmRadiationStorage\UncompressedOrZlib -PresentationContext142 = RoboticRadiationRecordStorage\UncompressedOrZlib -PresentationContext143 = RoutineScalpElectroencephalogramWaveformStorage\UncompressedOrZlib -PresentationContext144 = SegmentationStorage\UncompressedOrZlib -PresentationContext145 = SegmentedVolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib -PresentationContext146 = SimplifiedAdultEchoSRStorage\UncompressedOrZlib -PresentationContext147 = SleepElectroencephalogramWaveformStorage\UncompressedOrZlib -PresentationContext148 = SpatialFiducialsStorage\UncompressedOrZlib -PresentationContext149 = SpatialRegistrationStorage\UncompressedOrZlib -PresentationContext150 = SpectaclePrescriptionReportStorage\UncompressedOrZlib -PresentationContext151 = StereometricRelationshipStorage\UncompressedOrZlib -PresentationContext152 = SubjectiveRefractionMeasurementsStorage\UncompressedOrZlib -PresentationContext153 = SurfaceScanMeshStorage\UncompressedOrZlib -PresentationContext154 = SurfaceScanPointCloudStorage\UncompressedOrZlib -PresentationContext155 = SurfaceSegmentationStorage\UncompressedOrZlib -PresentationContext156 = TomotherapeuticRadiationRecordStorage\UncompressedOrZlib -PresentationContext157 = TomotherapeuticRadiationStorage\UncompressedOrZlib -PresentationContext158 = TractographyResultsStorage\UncompressedOrZlib -PresentationContext159 = TwelveLeadECGWaveformStorage\UncompressedOrZlib -PresentationContext160 = VisualAcuityMeasurementsStorage\UncompressedOrZlib -PresentationContext161 = VolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib -PresentationContext162 = XADefinedProcedureProtocolStorage\UncompressedOrZlib -PresentationContext163 = XAPerformedProcedureProtocolStorage\UncompressedOrZlib -PresentationContext164 = XAXRFGrayscaleSoftcopyPresentationStateStorage\UncompressedOrZlib -PresentationContext165 = XRayRadiationDoseSRStorage\UncompressedOrZlib +PresentationContext60 = AcquisitionContextSRStorage\UncompressedOrZlib +PresentationContext61 = AdvancedBlendingPresentationStateStorage\UncompressedOrZlib +PresentationContext62 = AmbulatoryECGWaveformStorage\UncompressedOrZlib +PresentationContext63 = ArterialPulseWaveformStorage\UncompressedOrZlib +PresentationContext64 = AutorefractionMeasurementsStorage\UncompressedOrZlib +PresentationContext65 = BasicStructuredDisplayStorage\UncompressedOrZlib +PresentationContext66 = BasicTextSRStorage\UncompressedOrZlib +PresentationContext67 = BasicVoiceAudioWaveformStorage\UncompressedOrZlib +PresentationContext68 = BlendingSoftcopyPresentationStateStorage\UncompressedOrZlib +PresentationContext69 = BodyPositionWaveformStorage\UncompressedOrZlib +PresentationContext70 = CArmPhotonElectronRadiationRecordStorage\UncompressedOrZlib +PresentationContext71 = CArmPhotonElectronRadiationStorage\UncompressedOrZlib +PresentationContext72 = CTDefinedProcedureProtocolStorage\UncompressedOrZlib +PresentationContext73 = CTPerformedProcedureProtocolStorage\UncompressedOrZlib +PresentationContext74 = CardiacElectrophysiologyWaveformStorage\UncompressedOrZlib +PresentationContext75 = ChestCADSRStorage\UncompressedOrZlib +PresentationContext76 = ColonCADSRStorage\UncompressedOrZlib +PresentationContext77 = ColorPaletteStorage\UncompressedOrZlib +PresentationContext78 = ColorSoftcopyPresentationStateStorage\UncompressedOrZlib +PresentationContext79 = CompositingPlanarMPRVolumetricPresentationStateStorage\UncompressedOrZlib +PresentationContext80 = Comprehensive3DSRStorage\UncompressedOrZlib +PresentationContext81 = ComprehensiveSRStorage\UncompressedOrZlib +PresentationContext82 = ContentAssessmentResultsStorage\UncompressedOrZlib +PresentationContext83 = DeformableSpatialRegistrationStorage\UncompressedOrZlib +PresentationContext84 = ElectromyogramWaveformStorage\UncompressedOrZlib +PresentationContext85 = ElectrooculogramWaveformStorage\UncompressedOrZlib +PresentationContext86 = EncapsulatedCDAStorage\UncompressedOrZlib +PresentationContext87 = EncapsulatedMTLStorage\UncompressedOrZlib +PresentationContext88 = EncapsulatedOBJStorage\UncompressedOrZlib +PresentationContext89 = EncapsulatedPDFStorage\UncompressedOrZlib +PresentationContext90 = EncapsulatedSTLStorage\UncompressedOrZlib +PresentationContext91 = EnhancedSRStorage\UncompressedOrZlib +PresentationContext92 = EnhancedXRayRadiationDoseSRStorage\UncompressedOrZlib +PresentationContext93 = ExtensibleSRStorage\UncompressedOrZlib +PresentationContext94 = General32BitECGWaveformStorage\UncompressedOrZlib +PresentationContext95 = GeneralAudioWaveformStorage\UncompressedOrZlib +PresentationContext96 = GeneralECGWaveformStorage\UncompressedOrZlib +PresentationContext97 = GenericImplantTemplateStorage\UncompressedOrZlib +PresentationContext98 = GrayscalePlanarMPRVolumetricPresentationStateStorage\UncompressedOrZlib +PresentationContext99 = GrayscaleSoftcopyPresentationStateStorage\UncompressedOrZlib +PresentationContext100 = HangingProtocolStorage\UncompressedOrZlib +PresentationContext101 = HemodynamicWaveformStorage\UncompressedOrZlib +PresentationContext102 = ImplantAssemblyTemplateStorage\UncompressedOrZlib +PresentationContext103 = ImplantTemplateGroupStorage\UncompressedOrZlib +PresentationContext104 = ImplantationPlanSRStorage\UncompressedOrZlib +PresentationContext105 = IntraocularLensCalculationsStorage\UncompressedOrZlib +PresentationContext106 = InventoryStorage\UncompressedOrZlib +PresentationContext107 = KeratometryMeasurementsStorage\UncompressedOrZlib +PresentationContext108 = KeyObjectSelectionDocumentStorage\UncompressedOrZlib +PresentationContext109 = LensometryMeasurementsStorage\UncompressedOrZlib +PresentationContext110 = MRSpectroscopyStorage\UncompressedOrZlib +PresentationContext111 = MacularGridThicknessAndVolumeReportStorage\UncompressedOrZlib +PresentationContext112 = MammographyCADSRStorage\UncompressedOrZlib +PresentationContext113 = MicroscopyBulkSimpleAnnotationsStorage\UncompressedOrZlib +PresentationContext114 = MultichannelRespiratoryWaveformStorage\UncompressedOrZlib +PresentationContext115 = MultipleVolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib +PresentationContext116 = OphthalmicAxialMeasurementsStorage\UncompressedOrZlib +PresentationContext117 = OphthalmicOpticalCoherenceTomographyBscanVolumeAnalysisStorage\UncompressedOrZlib +PresentationContext118 = OphthalmicVisualFieldStaticPerimetryMeasurementsStorage\UncompressedOrZlib +PresentationContext119 = ParametricMapStorage\UncompressedOrZlib +PresentationContext120 = PatientRadiationDoseSRStorage\UncompressedOrZlib +PresentationContext121 = PerformedImagingAgentAdministrationSRStorage\UncompressedOrZlib +PresentationContext122 = PlannedImagingAgentAdministrationSRStorage\UncompressedOrZlib +PresentationContext123 = ProcedureLogStorage\UncompressedOrZlib +PresentationContext124 = ProtocolApprovalStorage\UncompressedOrZlib +PresentationContext125 = PseudoColorSoftcopyPresentationStateStorage\UncompressedOrZlib +PresentationContext126 = RTBeamsDeliveryInstructionStorage\UncompressedOrZlib +PresentationContext127 = RTBeamsTreatmentRecordStorage\UncompressedOrZlib +PresentationContext128 = RTBrachyApplicationSetupDeliveryInstructionStorage\UncompressedOrZlib +PresentationContext129 = RTBrachyTreatmentRecordStorage\UncompressedOrZlib +PresentationContext130 = RTDoseStorage\UncompressedOrZlib +PresentationContext131 = RTIonBeamsTreatmentRecordStorage\UncompressedOrZlib +PresentationContext132 = RTIonPlanStorage\UncompressedOrZlib +PresentationContext133 = RTPatientPositionAcquisitionInstructionStorage\UncompressedOrZlib +PresentationContext134 = RTPhysicianIntentStorage\UncompressedOrZlib +PresentationContext135 = RTPlanStorage\UncompressedOrZlib +PresentationContext136 = RTRadiationRecordSetStorage\UncompressedOrZlib +PresentationContext137 = RTRadiationSalvageRecordStorage\UncompressedOrZlib +PresentationContext138 = RTRadiationSetDeliveryInstructionStorage\UncompressedOrZlib +PresentationContext139 = RTRadiationSetStorage\UncompressedOrZlib +PresentationContext140 = RTSegmentAnnotationStorage\UncompressedOrZlib +PresentationContext141 = RTStructureSetStorage\UncompressedOrZlib +PresentationContext142 = RTTreatmentPreparationStorage\UncompressedOrZlib +PresentationContext143 = RTTreatmentSummaryRecordStorage\UncompressedOrZlib +PresentationContext144 = RadiopharmaceuticalRadiationDoseSRStorage\UncompressedOrZlib +PresentationContext145 = RawDataStorage\UncompressedOrZlib +PresentationContext146 = RealWorldValueMappingStorage\UncompressedOrZlib +PresentationContext147 = RespiratoryWaveformStorage\UncompressedOrZlib +PresentationContext148 = RoboticArmRadiationStorage\UncompressedOrZlib +PresentationContext149 = RoboticRadiationRecordStorage\UncompressedOrZlib +PresentationContext150 = RoutineScalpElectroencephalogramWaveformStorage\UncompressedOrZlib +PresentationContext151 = SegmentationStorage\UncompressedOrZlib +PresentationContext152 = SegmentedVolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib +PresentationContext153 = SimplifiedAdultEchoSRStorage\UncompressedOrZlib +PresentationContext154 = SleepElectroencephalogramWaveformStorage\UncompressedOrZlib +PresentationContext155 = SpatialFiducialsStorage\UncompressedOrZlib +PresentationContext156 = SpatialRegistrationStorage\UncompressedOrZlib +PresentationContext157 = SpectaclePrescriptionReportStorage\UncompressedOrZlib +PresentationContext158 = StereometricRelationshipStorage\UncompressedOrZlib +PresentationContext159 = SubjectiveRefractionMeasurementsStorage\UncompressedOrZlib +PresentationContext160 = SurfaceScanMeshStorage\UncompressedOrZlib +PresentationContext161 = SurfaceScanPointCloudStorage\UncompressedOrZlib +PresentationContext162 = SurfaceSegmentationStorage\UncompressedOrZlib +PresentationContext163 = TomotherapeuticRadiationRecordStorage\UncompressedOrZlib +PresentationContext164 = TomotherapeuticRadiationStorage\UncompressedOrZlib +PresentationContext165 = TractographyResultsStorage\UncompressedOrZlib +PresentationContext166 = TwelveLeadECGWaveformStorage\UncompressedOrZlib +PresentationContext167 = VariableModalityLUTSoftcopyPresentationStateStorage\UncompressedOrZlib +PresentationContext168 = VisualAcuityMeasurementsStorage\UncompressedOrZlib +PresentationContext169 = VolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib +PresentationContext170 = XADefinedProcedureProtocolStorage\UncompressedOrZlib +PresentationContext171 = XAPerformedProcedureProtocolStorage\UncompressedOrZlib +PresentationContext172 = XAXRFGrayscaleSoftcopyPresentationStateStorage\UncompressedOrZlib +PresentationContext173 = XRayRadiationDoseSRStorage\UncompressedOrZlib # ============================================================================ [[Profiles]] diff --git a/dcmnet/etc/storescu.cfg b/dcmnet/etc/storescu.cfg index f34b8ae1..c2034eaa 100644 --- a/dcmnet/etc/storescu.cfg +++ b/dcmnet/etc/storescu.cfg @@ -1,5 +1,5 @@ # -# Copyright (C) 2003-2022, OFFIS e.V. +# Copyright (C) 2003-2023, OFFIS e.V. # All rights reserved. See COPYRIGHT file for details. # # This software and supporting documentation were developed by @@ -11,9 +11,10 @@ # # Module: dcmnet # -# Author: Marco Eichelberg +# Author: Marco Eichelberg, Joerg Riesmeier # # Purpose: Sample configuration file for storescu +# (see "asconfig.txt" for documentation) # # ============================================================================ @@ -40,6 +41,10 @@ TransferSyntax1 = MPEG2MainProfile@MainLevel # commented out the following line since we do not support transcoding of MPEG2 # #TransferSyntax2 = MPEG2MainProfile@HighLevel +# +# (there are also MPEG2 transfer syntaxes that allow the encapsulated stream +# of encoded pixel data to be split into one or more fragments, see below) +# [MPEG4] TransferSyntax1 = MPEG4HighProfile/Level4.1 @@ -50,6 +55,66 @@ TransferSyntax1 = MPEG4HighProfile/Level4.1 #TransferSyntax3 = MPEG4HighProfile/Level4.2For2DVideo #TransferSyntax4 = MPEG4HighProfile/Level4.2For3DVideo #TransferSyntax5 = MPEG4StereoHighProfile/Level4.2 +# +# (there are also MPEG4 transfer syntaxes that allow the encapsulated stream +# of encoded pixel data to be split into one or more fragments, see below) +# + +# +# complete list of supported transfer syntaxes: +# +# - LocalEndianExplicit +# - OppositeEndianExplicit +# +# - LittleEndianExplicit +# - BigEndianExplicit +# - LittleEndianImplicit +# +# - DeflatedLittleEndianExplicit +# +# - JPEGBaseline +# - JPEGExtended:Process2+4 +# - JPEGExtended:Process3+5 +# - JPEGSpectralSelection:Non-hierarchical:Process6+8 +# - JPEGSpectralSelection:Non-hierarchical:Process7+9 +# - JPEGFullProgression:Non-hierarchical:Process10+12 +# - JPEGFullProgression:Non-hierarchical:Process11+13 +# - JPEGLossless:Non-hierarchical:Process14 +# - JPEGLossless:Non-hierarchical:Process15 +# - JPEGExtended:Hierarchical:Process16+18 +# - JPEGExtended:Hierarchical:Process17+19 +# - JPEGSpectralSelection:Hierarchical:Process20+22 +# - JPEGSpectralSelection:Hierarchical:Process21+23 +# - JPEGFullProgression:Hierarchical:Process24+26 +# - JPEGFullProgression:Hierarchical:Process25+27 +# - JPEGLossless:Hierarchical:Process28 +# - JPEGLossless:Hierarchical:Process29 +# - JPEGLossless:Non-hierarchical-1stOrderPrediction +# - JPEGLSLossless +# - JPEGLSLossy +# - RLELossless +# - JPEG2000LosslessOnly +# - JPEG2000 +# - JPEG2000MulticomponentLosslessOnly +# - JPEG2000Multicomponent +# +# - MPEG2MainProfile@MainLevel +# - MPEG2MainProfile@HighLevel +# - MPEG4HighProfile/Level4.1 +# - MPEG4BDcompatibleHighProfile/Level4.1 +# - MPEG4HighProfile/Level4.2For2DVideo +# - MPEG4HighProfile/Level4.2For3DVideo +# - MPEG4StereoHighProfile/Level4.2 +# - FragmentableMPEG2MainProfile/MainLevel +# - FragmentableMPEG2MainProfile/HighLevel +# - FragmentableMPEG4HighProfile/Level4.1 +# - FragmentableMPEG4BDcompatibleHighProfile/Level4.1 +# - FragmentableMPEG4HighProfile/Level4.2For2DVideo +# - FragmentableMPEG4HighProfile/Level4.2For3DVideo +# - FragmentableMPEG4StereoHighProfile/Level4.2 +# - HEVCMainProfile/Level5.1 +# - HEVCMain10Profile/Level5.1 +# # ============================================================================ [[PresentationContexts]] @@ -211,6 +276,7 @@ PresentationContext128 = VideoPhotographicImageStorage\MPEG2 # - BreastTomosynthesisImageStorage # - CArmPhotonElectronRadiationRecordStorage # - CArmPhotonElectronRadiationStorage +# - ColorPaletteStorage # - CompositingPlanarMPRVolumetricPresentationStateStorage # - Comprehensive3DSRStorage # - ContentAssessmentResultsStorage @@ -225,11 +291,14 @@ PresentationContext128 = VideoPhotographicImageStorage\MPEG2 # - EncapsulatedMTLStorage # - EncapsulatedOBJStorage # - EncapsulatedSTLStorage +# - EnhancedContinuousRTImageStorage # - EnhancedMRColorImageStorage # - EnhancedPETImageStorage +# - EnhancedRTImageStorage # - EnhancedUSVolumeStorage # - EnhancedXRayRadiationDoseSRStorage # - ExtensibleSRStorage +# - General32BitECGWaveformStorage # - GeneralAudioWaveformStorage # - GenericImplantTemplateStorage # - GrayscalePlanarMPRVolumetricPresentationStateStorage @@ -239,6 +308,7 @@ PresentationContext128 = VideoPhotographicImageStorage\MPEG2 # - IntraocularLensCalculationsStorage # - IntravascularOpticalCoherenceTomographyImageStorageForPresentation # - IntravascularOpticalCoherenceTomographyImageStorageForProcessing +# - InventoryStorage # - KeratometryMeasurementsStorage # - LegacyConvertedEnhancedCTImageStorage # - LegacyConvertedEnhancedMRImageStorage @@ -257,6 +327,7 @@ PresentationContext128 = VideoPhotographicImageStorage\MPEG2 # - ParametricMapStorage # - PatientRadiationDoseSRStorage # - PerformedImagingAgentAdministrationSRStorage +# - PhotoacousticImageStorage # - PlannedImagingAgentAdministrationSRStorage # - ProtocolApprovalStorage # - RadiopharmaceuticalRadiationDoseSRStorage @@ -269,6 +340,7 @@ PresentationContext128 = VideoPhotographicImageStorage\MPEG2 # - RTBrachyApplicationSetupDeliveryInstructionStorage # - RTIonBeamsTreatmentRecordStorage # - RTIonPlanStorage +# - RTPatientPositionAcquisitionInstructionStorage # - RTPhysicianIntentStorage # - RTRadiationRecordSetStorage # - RTRadiationSalvageRecordStorage @@ -288,6 +360,7 @@ PresentationContext128 = VideoPhotographicImageStorage\MPEG2 # - TomotherapeuticRadiationRecordStorage # - TomotherapeuticRadiationStorage # - TractographyResultsStorage +# - VariableModalityLUTSoftcopyPresentationStateStorage # - VisualAcuityMeasurementsStorage # - VLWholeSlideMicroscopyImageStorage # - VolumeRenderingVolumetricPresentationStateStorage diff --git a/dcmnet/include/dcmtk/dcmnet/dcasccfg.h b/dcmnet/include/dcmtk/dcmnet/dcasccfg.h index d872c2b6..8d73a467 100644 --- a/dcmnet/include/dcmtk/dcmnet/dcasccfg.h +++ b/dcmnet/include/dcmtk/dcmnet/dcasccfg.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2003-2022, OFFIS e.V. + * Copyright (C) 2003-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -83,6 +83,8 @@ public: /** this method evaluates an incoming association request according to the settings * of a profile maintained by this object. It is used by an association acceptor. + * @note The first transfer syntax in the list that is acceptable will be + * preferred. More details can be found in the text file "asconfig.txt". * @param profile symbolic profile name, must not be NULL * @param assoc T_ASC_Association structure to be evaluated * @return EC_Normal if successful, an error code otherwise diff --git a/dcmnet/include/dcmtk/dcmnet/dimse.h b/dcmnet/include/dcmtk/dcmnet/dimse.h index 9ef88cc6..87567780 100644 --- a/dcmnet/include/dcmtk/dcmnet/dimse.h +++ b/dcmnet/include/dcmtk/dcmnet/dimse.h @@ -349,8 +349,22 @@ typedef enum { /* DIC_US */ * DIMSE Data Set Type Codes. */ -typedef enum { /* DIC_US */ - DIMSE_DATASET_PRESENT = 0x0001, /* anything other than 0x0101 */ +typedef enum { /* DIC_US */ + /* In DCMTK releases before 3.6.8, some tools incorrectly + * compare DataSetType for equality with DIMSE_DATASET_PRESENT, + * instead of checking whether DataSetType is different from DIMSE_DATASET_NULL. + * These tools will fail if a different value than 0x0001 is used for this constant. + * See DCMTK issue #1045. + * + * The DICOM standard, on the other hand, recommends the value 0x0102 + * if backwards compatibility with ACR-NEMA is desired. If this is important, + * define the macro DCMTK_ENABLE_ACR_NEMA_DATASET_PRESENT_COMPATIBILITY. + */ +#ifdef DCMTK_ENABLE_ACR_NEMA_DATASET_PRESENT_COMPATIBILITY + DIMSE_DATASET_PRESENT = 0x0102, /* anything other than 0x0101 */ +#else + DIMSE_DATASET_PRESENT = 0x0001, /* anything other than 0x0101 */ +#endif DIMSE_DATASET_NULL = 0x0101 } T_DIMSE_DataSetType; diff --git a/dcmnet/include/dcmtk/dcmnet/scp.h b/dcmnet/include/dcmtk/dcmnet/scp.h index aee3af91..527ce111 100644 --- a/dcmnet/include/dcmtk/dcmnet/scp.h +++ b/dcmnet/include/dcmtk/dcmnet/scp.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2009-2021, OFFIS e.V. + * Copyright (C) 2009-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -132,8 +132,7 @@ struct DCMTK_DCMNET_EXPORT DcmPresentationContextInfo * supported list of presentation contexts. However, if this class should negotiate * Verification, call setEnableVerification(). In that case DcmSCP will also * respond to related C-ECHO requests. Note that this cannot be reverted. - * @warning This class is EXPERIMENTAL. Be careful to use it in production environment. - */ + */ class DCMTK_DCMNET_EXPORT DcmSCP { @@ -545,11 +544,19 @@ protected: */ virtual void notifyAssociationRequest(const T_ASC_Parameters& params, DcmSCPActionType& desiredAction); - /** Overwrite this function if called AE title should undergo checking. If - * OFTrue is returned, the AE title is accepted and processing is continued. + /** Overwrite this function if called AE title should undergo custom checking. + * If OFTrue is returned, the AE title is accepted and processing is continued. * In case of OFFalse, the SCP will refuse the incoming association with * error "Called Application Entity Title Not Recognized". - * The standard handler always returns OFTrue. + * + * The standard handler always returns true, if setRespondWithCalledAETitle() + * has been enabled, i.e. DcmSCP will respond with the AE Title the remote AE + * used for DcmSCP as the "Called AE Title". This is DcmSCP's default behaviour + * and in particular good for testing. + * + * If setRespondWithCalledAETitle() is set to false, DcmSCP will check whether + * the Called AE Title used by the remote AE matches the one configured for + * DcmSCP. The default value is "DCMTK_SCP" and can be changed calling setAETitle(). * @param calledAE The called AE title the SCU used that should be checked * @return OFTrue, if AE title is accepted, OFFalse otherwise */ diff --git a/dcmnet/include/dcmtk/dcmnet/scu.h b/dcmnet/include/dcmtk/dcmnet/scu.h index 5b53df0c..5237dfdc 100644 --- a/dcmnet/include/dcmtk/dcmnet/scu.h +++ b/dcmnet/include/dcmtk/dcmnet/scu.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2008-2022, OFFIS e.V. + * Copyright (C) 2008-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -189,7 +189,6 @@ private: * support for negotiating associations and sending and receiving arbitrary DIMSE messages * on that connection. DcmSCU has built-in C-ECHO support so derived classes do not have to * implement that capability on their own. - * @warning This class is EXPERIMENTAL. Be careful to use it in production environment. */ class DCMTK_DCMNET_EXPORT DcmSCU { @@ -502,9 +501,14 @@ public: * class and usually only, if the last command send on that presentation context was a * C-FIND message. * @param presID [in] The presentation context ID where the C-CANCEL should be sent on. + * @param msgIDBeingRespondedTo [in] Optional message ID to respond with a C-CANCEL request. + * -1 means standard logic will take place. It should be + * provided when nextMessageId() is overridden. + * The value should fit UINT16_MAX. * @return The current implementation always returns EC_Normal. */ - virtual OFCondition sendCANCELRequest(const T_ASC_PresentationContextID presID); + virtual OFCondition sendCANCELRequest(const T_ASC_PresentationContextID presID, + const Sint32 msgIDBeingRespondedTo = -1); /** This function sends a N-ACTION request on the currently opened association and receives * the corresponding response then diff --git a/dcmnet/libsrc/assoc.cc b/dcmnet/libsrc/assoc.cc index 86fa32fa..5558bca7 100644 --- a/dcmnet/libsrc/assoc.cc +++ b/dcmnet/libsrc/assoc.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1994-2022, OFFIS e.V. + * Copyright (C) 1994-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were partly developed by @@ -305,7 +305,7 @@ ASC_createAssociationParameters(T_ASC_Parameters ** params, ASC_setAPTitles(*params, "calling AP Title", "called AP Title", - "resp. AP Title"); + ""); /* make sure max pdv length is even */ if ((maxReceivePDUSize % 2) != 0) @@ -1400,7 +1400,7 @@ void ASC_getCopyOfIdentResponse(T_ASC_Parameters * params, OFCondition ASC_setIdentAC( T_ASC_Parameters * params, const char* response, - const Uint16& length ) + const Uint16 length ) { if (params == NULL) return ASC_NULLKEY; diff --git a/dcmnet/libsrc/dstorscu.cc b/dcmnet/libsrc/dstorscu.cc index db85304a..869f52ee 100644 --- a/dcmnet/libsrc/dstorscu.cc +++ b/dcmnet/libsrc/dstorscu.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2011-2021, OFFIS e.V. + * Copyright (C) 2011-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -564,7 +564,7 @@ OFCondition DcmStorageSCU::addPresentationContexts() uncompressedXfers.push_back(UID_LittleEndianImplicitTransferSyntax); // make sure that the list of presentation contexts is empty before we start clearPresentationContexts(); - // iterate over the list of SOP instance to be transferred + // iterate over the list of SOP instances to be transferred // (continue with next SOP instance if there already was a transmission) if (PresentationContextCounter == 0) CurrentTransferEntry = TransferList.begin(); @@ -617,7 +617,7 @@ OFCondition DcmStorageSCU::addPresentationContexts() if ((*transferEntry)->PresentationContextID == 0) { // check whether transfer syntax is known at all - if (xfer.getXfer() == EXS_Unknown) + if (xfer == EXS_Unknown) { // warn that an unknown (and therefore unsupported) transfer syntax is used DCMNET_WARN("transfer syntax is unknown, trying to propose only this one: " @@ -729,7 +729,7 @@ OFCondition DcmStorageSCU::addPresentationContexts() (*transferEntry)->PresentationContextID = OFstatic_cast(T_ASC_PresentationContextID, presContextID); // increase ID for the next presentation context presContextID += 2; - // count total number of presentation context + // count total number of presentation contexts ++PresentationContextCounter; } else { if (status == EC_UnsupportedEncoding) @@ -794,7 +794,7 @@ OFCondition DcmStorageSCU::sendSOPInstances() if (!TransferList.empty()) { DcmDataset *dataset = NULL; - // iterate over the list of SOP instance to be transferred + // iterate over the list of SOP instances to be transferred // (continue with next SOP instance if there already was a transmission) OFListConstIterator(TransferEntry *) lastEntry = TransferList.end(); while ((CurrentTransferEntry != lastEntry) && status.good()) @@ -872,9 +872,8 @@ OFCondition DcmStorageSCU::sendSOPInstances() // notify user of this class that the current SOP instance is to be sent notifySOPInstanceToBeSent(**CurrentTransferEntry); // call the inherited method from the base class doing the real work - status = sendSTORERequest((*CurrentTransferEntry)->PresentationContextID, "" /* filename */, - dataset, (*CurrentTransferEntry)->ResponseStatusCode, - MoveOriginatorAETitle, MoveOriginatorMsgID); + status = sendSTORERequest((*CurrentTransferEntry)->PresentationContextID, "" /* filename */, dataset, + (*CurrentTransferEntry)->ResponseStatusCode, MoveOriginatorAETitle, MoveOriginatorMsgID); // store some further information (even in case of error) (*CurrentTransferEntry)->AssociationNumber = AssociationCounter; (*CurrentTransferEntry)->NetworkTransferSyntax = dataset->getCurrentXfer(); @@ -1207,7 +1206,7 @@ OFCondition DcmStorageSCU::checkSOPInstance(const OFString &sopClassUID, { DCMNET_DEBUG("retired transfer syntax: " << transferSyntaxUID); } - else if (xfer.getXfer() == EXS_Unknown) + else if (xfer == EXS_Unknown) { // check whether the DICOM standard prefix for transfer syntax UIDs is used if (sopClassUID.compare(0, 17, "1.2.840.10008.1.2") == 0) diff --git a/dcmnet/libsrc/dulfsm.cc b/dcmnet/libsrc/dulfsm.cc index b932fbef..2fedb9b1 100644 --- a/dcmnet/libsrc/dulfsm.cc +++ b/dcmnet/libsrc/dulfsm.cc @@ -1387,8 +1387,7 @@ DT_2_IndicatePData(PRIVATE_NETWORKKEY ** /*network*/, unsigned long pduLength, pdvLength, - pdvCount; - long + pdvCount, length; unsigned char *p; @@ -1413,19 +1412,22 @@ DT_2_IndicatePData(PRIVATE_NETWORKKEY ** /*network*/, p = (*association)->fragmentBuffer; //set p to the buffer which contains the PDU's PDVs while (length >= 4) { //as long as length is at least 4 (= a length field can be read) EXTRACT_LONG_BIG(p, pdvLength); //determine the length of the current PDV (the PDV p points to) - p += 4 + pdvLength; //move p so that it points to the next PDV (move p 4 bytes over the length field plus the amount of bytes which is captured in the PDV's length field (over presentation context.Id, message information header and data fragment)) - length -= 4 + pdvLength; //update length (i.e. determine the length of the buffer which has not been evaluated yet.) - pdvCount++; //increase counter by one, since we've found another PDV // There must be at least a presentation context ID and a message // control header (see below), else the calculation pdvLength - 2 below // will underflow. - if (pdvLength < 2) + // Check that pdvLength will not overflow ULONG_MAX with additional 4 bytes. + // Check that pdvLength + additional 4 bytes is less than remaining length. + if (pdvLength < 2 || ULONG_MAX - pdvLength < 4 || length < 4 + pdvLength) { char buf[256]; sprintf(buf, "PDV with invalid length %lu encountered. This probably indicates a malformed P DATA PDU.", pdvLength); return makeDcmnetCondition(DULC_ILLEGALPDULENGTH, OF_error, buf); } + + p += 4 + pdvLength; //move p so that it points to the next PDV (move p 4 bytes over the length field plus the amount of bytes which is captured in the PDV's length field (over presentation context.Id, message information header and data fragment)) + length -= 4 + pdvLength; //update length (i.e. determine the length of the buffer which has not been evaluated yet.) + pdvCount++; //increase counter by one, since we've found another PDV } /* if after having counted the PDVs the length variable does not equal */ diff --git a/dcmnet/libsrc/scp.cc b/dcmnet/libsrc/scp.cc index 35b1d1ad..452c8dd8 100644 --- a/dcmnet/libsrc/scp.cc +++ b/dcmnet/libsrc/scp.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2009-2021, OFFIS e.V. + * Copyright (C) 2009-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -1460,7 +1460,7 @@ OFCondition DcmSCP::sendEVENTREPORTRequest(const T_ASC_PresentationContextID pre rspStatusCode = eventReportRsp.DimseStatus; // Check whether there is a dataset to be received - if (eventReportRsp.DataSetType == DIMSE_DATASET_PRESENT) + if (eventReportRsp.DataSetType != DIMSE_DATASET_NULL) { // this should never happen DcmDataset* tempDataset = NULL; @@ -2075,8 +2075,17 @@ void DcmSCP::notifyAssociationRequest(const T_ASC_Parameters& params, DcmSCPActi // ---------------------------------------------------------------------------- -OFBool DcmSCP::checkCalledAETitleAccepted(const OFString& /*calledAETitle*/) +OFBool DcmSCP::checkCalledAETitleAccepted(const OFString& calledAETitle) { + if (m_cfg->getRespondWithCalledAETitle() || (calledAETitle == m_cfg->getAETitle())) + { + return OFTrue; + } + else if (calledAETitle != m_cfg->getAETitle()) + { + DCMNET_ERROR("Called AE Title does not match configured AE Title: " << m_cfg->getAETitle()); + return OFFalse; + } return OFTrue; } diff --git a/dcmnet/libsrc/scu.cc b/dcmnet/libsrc/scu.cc index fb1f53ec..d32261f7 100644 --- a/dcmnet/libsrc/scu.cc +++ b/dcmnet/libsrc/scu.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2008-2022, OFFIS e.V. + * Copyright (C) 2008-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -788,8 +788,8 @@ OFCondition DcmSCU::sendSTORERequest(const T_ASC_PresentationContextID presID, << OFstatic_cast(unsigned int, pcid) << ": abstract syntax does not match SOP class UID"); } /* Try to convert to the negotiated transfer syntax */ - DcmXfer netXfer = DcmXfer(transferSyntax.c_str()).getXfer(); - if (netXfer.getXfer() != xferSyntax) + DcmXfer netXfer(transferSyntax.c_str()); + if (netXfer != xferSyntax) { DCMNET_INFO("Converting transfer syntax: " << xfer.getXferName() << " -> " << netXfer.getXferName()); cond = dataset->chooseRepresentation(netXfer.getXfer(), NULL); @@ -1613,11 +1613,15 @@ OFCondition DcmSCU::handleFINDResponse(const T_ASC_PresentationContextID /* pres /* ************************************************************************* */ // Send C-CANCEL-REQ and, therefore, ends current C-FIND, -MOVE or -GET session -OFCondition DcmSCU::sendCANCELRequest(const T_ASC_PresentationContextID presID) +OFCondition DcmSCU::sendCANCELRequest(const T_ASC_PresentationContextID presID, + const Sint32 msgIDBeingRespondedTo) { if (!isConnected()) return DIMSE_ILLEGALASSOCIATION; + if (msgIDBeingRespondedTo > OFstatic_cast(Sint32,UINT16_MAX) || msgIDBeingRespondedTo < -1) + return EC_IllegalParameter; + /* Prepare DIMSE data structures for issuing request */ OFCondition cond; OFString tempStr; @@ -1628,18 +1632,27 @@ OFCondition DcmSCU::sendCANCELRequest(const T_ASC_PresentationContextID presID) T_DIMSE_C_CancelRQ* req = &(msg.msg.CCancelRQ); // Set type of message msg.CommandField = DIMSE_C_CANCEL_RQ; - /* Set message ID responded to. A new message ID is _not_ needed so - we do not increment the message ID here but instead have to give the - message ID that was used last. - Note that that it is required to actually use the message ID of the last - C-FIND/GET/MOVE that was issued on this presentation context channel. - However, since we only support synchronous association mode so far, - it is enough to take the last message ID used at all. - For asynchronous operation, we would have to lookup the message ID - of the last C-FIND/GET/MOVE request issued and thus, store this - information after sending it. - */ - req->MessageIDBeingRespondedTo = m_assoc->nextMsgID - 1; + + if (msgIDBeingRespondedTo != -1) + { + req->MessageIDBeingRespondedTo = OFstatic_cast(Uint16, msgIDBeingRespondedTo); + } + else + { + /* Set message ID responded to. A new message ID is _not_ needed so + we do not increment the message ID here but instead have to give the + message ID that was used last. + Note that that it is required to actually use the message ID of the last + C-FIND/GET/MOVE that was issued on this presentation context channel. + However, since we only support synchronous association mode so far, + it is enough to take the last message ID used at all. + For asynchronous operation, we would have to lookup the message ID + of the last C-FIND/GET/MOVE request issued and thus, store this + information after sending it. + */ + req->MessageIDBeingRespondedTo = m_assoc->nextMsgID - 1; + } + // Announce dataset req->DataSetType = DIMSE_DATASET_NULL; @@ -1773,7 +1786,7 @@ OFCondition DcmSCU::sendACTIONRequest(const T_ASC_PresentationContextID presID, rspStatusCode = actionRsp.DimseStatus; // Check whether there is a dataset to be received - if (actionRsp.DataSetType == DIMSE_DATASET_PRESENT) + if (actionRsp.DataSetType != DIMSE_DATASET_NULL) { // this should never happen DcmDataset* tempDataset = NULL; @@ -1913,7 +1926,7 @@ OFCondition DcmSCU::sendEVENTREPORTRequest(const T_ASC_PresentationContextID pre rspStatusCode = eventReportRsp.DimseStatus; // Check whether there is a dataset to be received - if (eventReportRsp.DataSetType == DIMSE_DATASET_PRESENT) + if (eventReportRsp.DataSetType != DIMSE_DATASET_NULL) { // this should never happen DcmDataset* tempDataset = NULL; @@ -2188,7 +2201,7 @@ OFCondition DcmSCU::sendNCREATERequest(const T_ASC_PresentationContextID presID, } // If requested, we need to receive the dataset containing the received instance - if (response.msg.NCreateRSP.DataSetType == DIMSE_DATASET_PRESENT) + if (response.msg.NCreateRSP.DataSetType != DIMSE_DATASET_NULL) { DcmDataset* respDataset = OFnullptr; result = receiveDIMSEDataset(&pcid, &respDataset); @@ -2320,7 +2333,7 @@ OFCondition DcmSCU::sendNSETRequest(const T_ASC_PresentationContextID presID, } // If requested, we need to receive the dataset containing the received instance - if (response.msg.NSetRSP.DataSetType == DIMSE_DATASET_PRESENT) + if (response.msg.NSetRSP.DataSetType != DIMSE_DATASET_NULL) { DcmDataset* respDataset = OFnullptr; result = receiveDIMSEDataset(&pcid, &respDataset); diff --git a/dcmnet/tests/tscuscp.cc b/dcmnet/tests/tscuscp.cc index 0e1d986a..478c4d28 100644 --- a/dcmnet/tests/tscuscp.cc +++ b/dcmnet/tests/tscuscp.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2017-2022, OFFIS e.V. + * Copyright (C) 2017-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -960,7 +960,7 @@ struct NCREATEFixture T_ASC_PresentationContextID presIDMpps; }; -OFTEST(dcmnet_scu_sendNCREATERequest_succeeds_when_optional_createdinstance_is_null) +OFTEST_FLAGS(dcmnet_scu_sendNCREATERequest_succeeds_when_optional_createdinstance_is_null, EF_Slow) { NCREATEFixture fixture; @@ -974,7 +974,7 @@ OFTEST(dcmnet_scu_sendNCREATERequest_succeeds_when_optional_createdinstance_is_n OFStandard::forceSleep(2); } -OFTEST(dcmnet_scu_sendNCREATERequest_fails_when_affectedsopinstance_is_empty) +OFTEST_FLAGS(dcmnet_scu_sendNCREATERequest_fails_when_affectedsopinstance_is_empty, EF_Slow) { NCREATEFixture fixture; @@ -986,7 +986,7 @@ OFTEST(dcmnet_scu_sendNCREATERequest_fails_when_affectedsopinstance_is_empty) OFCHECK_MSG((result = fixture.mppsSCU.releaseAssociation()).good(), result.text()); } -OFTEST(dcmnet_scu_sendNCREATERequest_creates_instance_when_association_was_accepted) +OFTEST_FLAGS(dcmnet_scu_sendNCREATERequest_creates_instance_when_association_was_accepted, EF_Slow) { NCREATEFixture fixture; @@ -1006,7 +1006,7 @@ OFTEST(dcmnet_scu_sendNCREATERequest_creates_instance_when_association_was_accep OFCHECK_MSG((result = fixture.mppsSCU.releaseAssociation()).good(), result.text()); } -OFTEST(dcmnet_scu_sendNCREATERequest_succeeds_and_sets_responsestatuscode_from_scp_when_scp_sets_error_status) +OFTEST_FLAGS(dcmnet_scu_sendNCREATERequest_succeeds_and_sets_responsestatuscode_from_scp_when_scp_sets_error_status, EF_Slow) { NCREATEFixture fixture; Uint16 rspStatusCode = 0; @@ -1048,7 +1048,7 @@ struct NSETFixture : NCREATEFixture DcmDataset* modifiedAttributes; }; -OFTEST(dcmnet_scu_sendNSETRequest_fails_when_requestedsopinstance_is_empty) +OFTEST_FLAGS(dcmnet_scu_sendNSETRequest_fails_when_requestedsopinstance_is_empty, EF_Slow) { NSETFixture fixture; @@ -1061,7 +1061,7 @@ OFTEST(dcmnet_scu_sendNSETRequest_fails_when_requestedsopinstance_is_empty) OFCHECK_MSG((result = fixture.mppsSCU.releaseAssociation()).good(), result.text()); } -OFTEST(dcmnet_scu_sendNSETRequest_succeeds_and_modifies_instance_when_scp_has_instance) +OFTEST_FLAGS(dcmnet_scu_sendNSETRequest_succeeds_and_modifies_instance_when_scp_has_instance, EF_Slow) { NSETFixture fixture; @@ -1098,7 +1098,7 @@ OFTEST(dcmnet_scu_sendNSETRequest_succeeds_and_modifies_instance_when_scp_has_in OFCHECK_MSG((result = fixture.mppsSCU.releaseAssociation()).good(), result.text()); } -OFTEST(dcmnet_scu_sendNSETRequest_succeeds_and_sets_responsestatuscode_from_scp_when_scp_sets_error_status) +OFTEST_FLAGS(dcmnet_scu_sendNSETRequest_succeeds_and_sets_responsestatuscode_from_scp_when_scp_sets_error_status, EF_Slow) { NSETFixture fixture; diff --git a/dcmpmap/libsrc/dpmparametricmapiod.cc b/dcmpmap/libsrc/dpmparametricmapiod.cc index 276afb53..ae2e4993 100644 --- a/dcmpmap/libsrc/dpmparametricmapiod.cc +++ b/dcmpmap/libsrc/dpmparametricmapiod.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2016-2021, Open Connections GmbH + * Copyright (C) 2016-2023, Open Connections GmbH * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation are maintained by @@ -988,7 +988,7 @@ OFCondition DPMParametricMapIOD::decompress(DcmDataset& dset) // If the original transfer syntax could have been lossy, print warning if (dset.hasRepresentation(EXS_LittleEndianExplicit, NULL)) { - if ( xfer.isEncapsulated() && (xfer.getXfer() != EXS_RLELossless) && (xfer.getXfer() != EXS_DeflatedLittleEndianExplicit) ) + if ( xfer.isEncapsulated() && (xfer != EXS_RLELossless) && (xfer != EXS_DeflatedLittleEndianExplicit) ) { DCMPMAP_WARN("Dataset has been compressed using a (possibly) lossy compression scheme (ignored)"); } @@ -997,14 +997,14 @@ OFCondition DPMParametricMapIOD::decompress(DcmDataset& dset) else if (xfer.isEncapsulated()) { // RLE compression is fine (truly lossless). Deflated is handled internally by DCMTK. - if (xfer.getXfer() == EXS_RLELossless) + if (xfer == EXS_RLELossless) { DCMPMAP_DEBUG("DICOM file is RLE-compressed, converting to uncompressed transfer syntax first"); result = DcmIODUtil::decompress(dset); } else // We do not accept any transfer syntax that could be lossy compressed { - DCMPMAP_ERROR("Transfer syntax " << DcmXfer(xfer).getXferName() << " uses lossy compression, not supported for Parametric Map objects!"); + DCMPMAP_ERROR("Transfer syntax " << xfer.getXferName() << " uses lossy compression, not supported for Parametric Map objects!"); result = IOD_EC_CannotDecompress; } } diff --git a/dcmpstat/apps/dcmmkcrv.cc b/dcmpstat/apps/dcmmkcrv.cc index 32ecbe08..161b1955 100644 --- a/dcmpstat/apps/dcmmkcrv.cc +++ b/dcmpstat/apps/dcmmkcrv.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1998-2017, OFFIS e.V. + * Copyright (C) 1998-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -66,9 +66,9 @@ int main(int argc, char *argv[]) cmd.setOptionColumns(LONGCOL, SHORTCOL); cmd.setParamColumn(LONGCOL + SHORTCOL + 4); - cmd.addParam("dcmfile-in", "DICOM input image file"); + cmd.addParam("dcmfile-in", "DICOM input image file (\"-\" for stdin)"); cmd.addParam("curvedata-in", "curve data input file (text)"); - cmd.addParam("dcmfile-out", "DICOM output filename"); + cmd.addParam("dcmfile-out", "DICOM output filename (\"-\" for stdout)"); cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2); cmd.addOption("--help", "-h", "print this help text and exit", OFCommandLine::AF_Exclusive); diff --git a/dcmpstat/apps/dcmmklut.cc b/dcmpstat/apps/dcmmklut.cc index 4f306c0f..044a17b3 100644 --- a/dcmpstat/apps/dcmmklut.cc +++ b/dcmpstat/apps/dcmmklut.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1998-2022, OFFIS e.V. + * Copyright (C) 1998-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -674,7 +674,7 @@ int main(int argc, char *argv[]) cmd.setOptionColumns(LONGCOL, SHORTCOL); cmd.setParamColumn(LONGCOL + SHORTCOL + 4); - cmd.addParam("dcmimg-out", "DICOM output filename"); + cmd.addParam("dcmimg-out", "DICOM output filename (\"-\" for stdout)"); cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2); cmd.addOption("--help", "-h", "print this help text and exit", OFCommandLine::AF_Exclusive); diff --git a/dcmpstat/apps/dcmp2pgm.cc b/dcmpstat/apps/dcmp2pgm.cc index 480975b1..be913140 100644 --- a/dcmpstat/apps/dcmp2pgm.cc +++ b/dcmpstat/apps/dcmp2pgm.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1998-2018, OFFIS e.V. + * Copyright (C) 1998-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -432,7 +432,7 @@ int main(int argc, char *argv[]) cmd.setOptionColumns(LONGCOL, SHORTCOL); cmd.setParamColumn(LONGCOL + SHORTCOL + 2); - cmd.addParam("dcmfile-in", "input DICOM image"); + cmd.addParam("dcmfile-in", "input DICOM image (\"-\" for stdin)"); cmd.addParam("bitmap-out", "output DICOM image or PGM bitmap", OFCmdParam::PM_Optional); cmd.addGroup("general options:"); diff --git a/dcmpstat/apps/dcmprscp.cc b/dcmpstat/apps/dcmprscp.cc index 1dd8b9f3..01ec2a72 100644 --- a/dcmpstat/apps/dcmprscp.cc +++ b/dcmpstat/apps/dcmprscp.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2000-2021, OFFIS e.V. + * Copyright (C) 2000-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -357,8 +357,10 @@ int main(int argc, char *argv[]) OFString profileName; const char *profileNamePtr = dvi.getTargetTLSProfile(opt_printer); if (profileNamePtr) profileName = profileNamePtr; - DcmTLSSecurityProfile tlsProfile = TSP_Profile_BCP195; // default - if (profileName == "BCP195") tlsProfile = TSP_Profile_BCP195; + DcmTLSSecurityProfile tlsProfile = TSP_Profile_BCP_195_RFC_8996; // default + if (profileName == "BCP195-RFC8996") tlsProfile = TSP_Profile_BCP_195_RFC_8996; + else if (profileName == "BCP195-RFC8996-MOD") tlsProfile = TSP_Profile_BCP_195_RFC_8996_Modified; + else if (profileName == "BCP195") tlsProfile = TSP_Profile_BCP195; else if (profileName == "BCP195-ND") tlsProfile = TSP_Profile_BCP195_ND; else if (profileName == "BCP195-EX") tlsProfile = TSP_Profile_BCP195_Extended; else if (profileName == "AES") tlsProfile = TSP_Profile_AES; @@ -397,7 +399,7 @@ int main(int argc, char *argv[]) OFLOG_FATAL(dcmprscpLogger, "unable to load private TLS key from '" << tlsPrivateKeyFile<< "'"); return 1; } - if (tLayer->setCertificateFile(tlsCertificateFile.c_str(), keyFileFormat).bad()) + if (tLayer->setCertificateFile(tlsCertificateFile.c_str(), keyFileFormat, tlsProfile).bad()) { OFLOG_FATAL(dcmprscpLogger, "unable to load certificate from '" << tlsCertificateFile << "'"); return 1; diff --git a/dcmpstat/apps/dcmprscu.cc b/dcmpstat/apps/dcmprscu.cc index 9f3656a0..20366cf2 100644 --- a/dcmpstat/apps/dcmprscu.cc +++ b/dcmpstat/apps/dcmprscu.cc @@ -1,5 +1,5 @@ /* - * Copyright (C) 1999-2021, OFFIS e.V. + * Copyright (C) 1999-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -623,7 +623,7 @@ int main(int argc, char *argv[]) cmd.setOptionColumns(LONGCOL, SHORTCOL); cmd.setParamColumn(LONGCOL + SHORTCOL + 2); - cmd.addParam("dcmfile-in", "stored print file(s) to be spooled", OFCmdParam::PM_MultiOptional); + cmd.addParam("dcmfile-in", "stored print file(s) to be spooled (\"-\" for stdin)", OFCmdParam::PM_MultiOptional); cmd.addGroup("general options:"); cmd.addOption("--help", "-h", "print this help text and exit", OFCommandLine::AF_Exclusive); @@ -882,8 +882,10 @@ int main(int argc, char *argv[]) OFString profileName; const char *profileNamePtr = dvi.getTargetTLSProfile(opt_printer); if (profileNamePtr) profileName = profileNamePtr; - DcmTLSSecurityProfile tlsProfile = TSP_Profile_BCP195; // default - if (profileName == "BCP195") tlsProfile = TSP_Profile_BCP195; + DcmTLSSecurityProfile tlsProfile = TSP_Profile_BCP_195_RFC_8996; // default + if (profileName == "BCP195-RFC8996") tlsProfile = TSP_Profile_BCP_195_RFC_8996; + else if (profileName == "BCP195-RFC8996-MOD") tlsProfile = TSP_Profile_BCP_195_RFC_8996_Modified; + else if (profileName == "BCP195") tlsProfile = TSP_Profile_BCP195; else if (profileName == "BCP195-ND") tlsProfile = TSP_Profile_BCP195_ND; else if (profileName == "BCP195-EX") tlsProfile = TSP_Profile_BCP195_Extended; else if (profileName == "AES") tlsProfile = TSP_Profile_AES; @@ -924,7 +926,7 @@ int main(int argc, char *argv[]) OFLOG_FATAL(dcmprscuLogger, "unable to load private TLS key from '" << tlsPrivateKeyFile<< "'"); return 1; } - if (tLayer->setCertificateFile(tlsCertificateFile.c_str(), keyFileFormat).bad()) + if (tLayer->setCertificateFile(tlsCertificateFile.c_str(), keyFileFormat, tlsProfile).bad()) { OFLOG_FATAL(dcmprscuLogger, "unable to load certificate from '" << tlsCertificateFile << "'"); return 1; diff --git a/dcmpstat/apps/dcmpschk.cc b/dcmpstat/apps/dcmpschk.cc index 6c559d65..ada6b164 100644 --- a/dcmpstat/apps/dcmpschk.cc +++ b/dcmpstat/apps/dcmpschk.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2000-2022, OFFIS e.V. + * Copyright (C) 2000-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -119,7 +119,7 @@ static void printResult( /* do not print if a DCM_Item as this is not * very helpful to distinguish instances. */ - if (dobj != NULL && dobj->getTag().getXTag() != DCM_Item) + if (dobj != NULL && dobj->getTag() != DCM_Item) { char buf[128]; sprintf(buf, "(%04x,%04x).", @@ -674,8 +674,7 @@ chkType1AttributeExistance( if (!dset->tagExistsWithValue(key)) { DcmTag t(key); OFLOG_WARN(dcmpschkLogger, MSGe_missingAtt << OFendl - << " Affected attribute: " << t.getXTag() - << " " << t.getTagName() << OFendl); + << " Affected attribute: " << t << " " << t.getTagName() << OFendl); found = OFFalse; } return found; @@ -788,7 +787,7 @@ static int dcmchkMetaHeader( meta->findAndGetOFStringArray(tsuid, transferSyntaxUID); // is this transfer syntax known ? DcmXfer expected(transferSyntaxUID.c_str()); - if (expected.getXfer() == EXS_Unknown) { + if (expected == EXS_Unknown) { OFLOG_WARN(dcmpschkLogger, MSGe_wrongAtt << OFendl << " Unknown Transfer Syntax" << OFendl << " Affected attribute: " << OFendl diff --git a/dcmpstat/apps/dcmpsmk.cc b/dcmpstat/apps/dcmpsmk.cc index 67cd9a0d..57a914a7 100644 --- a/dcmpstat/apps/dcmpsmk.cc +++ b/dcmpstat/apps/dcmpsmk.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1998-2021, OFFIS e.V. + * Copyright (C) 1998-2022, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -89,8 +89,8 @@ int main(int argc, char *argv[]) cmd.setOptionColumns(LONGCOL, SHORTCOL); cmd.setParamColumn(LONGCOL + SHORTCOL + 4); - cmd.addParam("dcmfile-in", "DICOM image file(s) to be read", OFCmdParam::PM_MultiMandatory); - cmd.addParam("dcmfile-out", "DICOM presentation state file to be created"); + cmd.addParam("dcmfile-in", "DICOM image file(s) to be read\n(\"-\" for stdin)", OFCmdParam::PM_MultiMandatory); + cmd.addParam("dcmfile-out", "DICOM presentation state file to be created\n(\"-\" for stdout)"); cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2); cmd.addOption("--help", "-h", "print this help text and exit", OFCommandLine::AF_Exclusive); diff --git a/dcmpstat/apps/dcmpsprt.cc b/dcmpstat/apps/dcmpsprt.cc index b0d69d18..a170b98b 100644 --- a/dcmpstat/apps/dcmpsprt.cc +++ b/dcmpstat/apps/dcmpsprt.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1999-2021, OFFIS e.V. + * Copyright (C) 1999-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -152,7 +152,7 @@ int main(int argc, char *argv[]) cmd.setOptionColumns(LONGCOL, SHORTCOL + 2); cmd.setParamColumn(LONGCOL + SHORTCOL + 4); - cmd.addParam("dcmfile-in", "DICOM image file(s) to be printed", OFCmdParam::PM_MultiMandatory); + cmd.addParam("dcmfile-in", "DICOM image file(s) to be printed (\"-\" for stdin)", OFCmdParam::PM_MultiMandatory); cmd.addGroup("general options:"); cmd.addOption("--help", "-h", "print this help text and exit", OFCommandLine::AF_Exclusive); diff --git a/dcmpstat/apps/dcmpsrcv.cc b/dcmpstat/apps/dcmpsrcv.cc index 3baab0fc..379834a2 100644 --- a/dcmpstat/apps/dcmpsrcv.cc +++ b/dcmpstat/apps/dcmpsrcv.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1999-2022, OFFIS e.V. + * Copyright (C) 1999-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -1041,8 +1041,10 @@ int main(int argc, char *argv[]) OFString profileName; const char *profileNamePtr = dvi.getTargetTLSProfile(opt_cfgID); if (profileNamePtr) profileName = profileNamePtr; - DcmTLSSecurityProfile tlsProfile = TSP_Profile_BCP195; // default - if (profileName == "BCP195") tlsProfile = TSP_Profile_BCP195; + DcmTLSSecurityProfile tlsProfile = TSP_Profile_BCP_195_RFC_8996; // default + if (profileName == "BCP195-RFC8996") tlsProfile = TSP_Profile_BCP_195_RFC_8996; + else if (profileName == "BCP195-RFC8996-MOD") tlsProfile = TSP_Profile_BCP_195_RFC_8996_Modified; + else if (profileName == "BCP195") tlsProfile = TSP_Profile_BCP195; else if (profileName == "BCP195-ND") tlsProfile = TSP_Profile_BCP195_ND; else if (profileName == "AES") tlsProfile = TSP_Profile_AES; else if (profileName == "BASIC") tlsProfile = TSP_Profile_Basic; @@ -1080,7 +1082,7 @@ int main(int argc, char *argv[]) OFLOG_FATAL(dcmpsrcvLogger, "unable to load private TLS key from '" << tlsPrivateKeyFile<< "'"); return 1; } - if (tLayer->setCertificateFile(tlsCertificateFile.c_str(), keyFileFormat).bad()) + if (tLayer->setCertificateFile(tlsCertificateFile.c_str(), keyFileFormat, tlsProfile).bad()) { OFLOG_FATAL(dcmpsrcvLogger, "unable to load certificate from '" << tlsCertificateFile << "'"); return 1; diff --git a/dcmpstat/apps/dcmpssnd.cc b/dcmpstat/apps/dcmpssnd.cc index dd89256a..64263d46 100644 --- a/dcmpstat/apps/dcmpssnd.cc +++ b/dcmpstat/apps/dcmpssnd.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1999-2022, OFFIS e.V. + * Copyright (C) 1999-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -577,8 +577,10 @@ int main(int argc, char *argv[]) OFString profileName; const char *profileNamePtr = dvi.getTargetTLSProfile(opt_target); if (profileNamePtr) profileName = profileNamePtr; - DcmTLSSecurityProfile tlsProfile = TSP_Profile_BCP195; // default - if (profileName == "BCP195") tlsProfile = TSP_Profile_BCP195; + DcmTLSSecurityProfile tlsProfile = TSP_Profile_BCP_195_RFC_8996; // default + if (profileName == "BCP195-RFC8996") tlsProfile = TSP_Profile_BCP_195_RFC_8996; + else if (profileName == "BCP195-RFC8996-MOD") tlsProfile = TSP_Profile_BCP_195_RFC_8996_Modified; + else if (profileName == "BCP195") tlsProfile = TSP_Profile_BCP195; else if (profileName == "BCP195-ND") tlsProfile = TSP_Profile_BCP195_ND; else if (profileName == "BCP195-EX") tlsProfile = TSP_Profile_BCP195_Extended; else if (profileName == "AES") tlsProfile = TSP_Profile_AES; @@ -619,7 +621,7 @@ int main(int argc, char *argv[]) OFLOG_FATAL(dcmpssndLogger, "unable to load private TLS key from '" << tlsPrivateKeyFile<< "'"); return 1; } - if (tLayer->setCertificateFile(tlsCertificateFile.c_str(), keyFileFormat).bad()) + if (tLayer->setCertificateFile(tlsCertificateFile.c_str(), keyFileFormat, tlsProfile).bad()) { OFLOG_FATAL(dcmpssndLogger, "unable to load certificate from '" << tlsCertificateFile << "'"); return 1; diff --git a/dcmpstat/docs/dcmmkcrv.man b/dcmpstat/docs/dcmmkcrv.man index 42d72010..598acf99 100644 --- a/dcmpstat/docs/dcmmkcrv.man +++ b/dcmpstat/docs/dcmmkcrv.man @@ -27,11 +27,11 @@ two-dimensional curves. \section dcmmkcrv_parameters PARAMETERS \verbatim -dcmfile-in DICOM input image file +dcmfile-in DICOM input image file ("-" for stdin) curvedata-in curve data input file (text) -dcmfile-out DICOM output filename +dcmfile-out DICOM output filename ("-" for stdout) \endverbatim \section dcmmkcrv_options OPTIONS @@ -178,6 +178,6 @@ It is an error if no data dictionary can be loaded. \section dcmmkcrv_copyright COPYRIGHT -Copyright (C) 1998-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 1998-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmpstat/docs/dcmmklut.man b/dcmpstat/docs/dcmmklut.man index e0d4ffc9..abab05fb 100644 --- a/dcmpstat/docs/dcmmklut.man +++ b/dcmpstat/docs/dcmmklut.man @@ -39,7 +39,7 @@ common spread sheet application (e.g. Microsoft Excel). \section dcmmklut_parameters PARAMETERS \verbatim -dcmimg-out DICOM output filename +dcmimg-out DICOM output filename ("-" for stdout) \endverbatim \section dcmmklut_options OPTIONS @@ -248,6 +248,6 @@ It is an error if no data dictionary can be loaded. \section dcmmklut_copyright COPYRIGHT -Copyright (C) 1998-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 1998-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmpstat/docs/dcmp2pgm.man b/dcmpstat/docs/dcmp2pgm.man index 8ca1465d..af24b90e 100644 --- a/dcmpstat/docs/dcmp2pgm.man +++ b/dcmpstat/docs/dcmp2pgm.man @@ -29,7 +29,7 @@ and defined in the configuration file. \section dcmp2pgm_parameters PARAMETERS \verbatim -dcmimage-in input DICOM image +dcmimage-in input DICOM image ("-" for stdin) bitmap-out output DICOM image or PGM bitmap \endverbatim @@ -170,6 +170,6 @@ It is an error if no data dictionary can be loaded. \section dcmp2pgm_copyright COPYRIGHT -Copyright (C) 1998-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 1998-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmpstat/docs/dcmprscp.man b/dcmpstat/docs/dcmprscp.man index 06d95541..d3b263f3 100644 --- a/dcmpstat/docs/dcmprscp.man +++ b/dcmpstat/docs/dcmprscp.man @@ -141,6 +141,6 @@ It is an error if no data dictionary can be loaded. \section dcmprscp_copyright COPYRIGHT -Copyright (C) 1999-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 1999-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmpstat/docs/dcmprscu.man b/dcmpstat/docs/dcmprscu.man index a1b7dad3..a8aebdca 100644 --- a/dcmpstat/docs/dcmprscu.man +++ b/dcmpstat/docs/dcmprscu.man @@ -41,7 +41,7 @@ in which case commands are read periodically from a spool directory. \section dcmprscu_parameters PARAMETERS \verbatim -dcmfile-in stored print file(s) to be spooled +dcmfile-in stored print file(s) to be spooled ("-" for stdin) \endverbatim \section dcmprscu_options OPTIONS @@ -201,6 +201,6 @@ It is an error if no data dictionary can be loaded. \section dcmprscu_copyright COPYRIGHT -Copyright (C) 1999-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 1999-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmpstat/docs/dcmpschk.man b/dcmpstat/docs/dcmpschk.man index 94a5b9e7..be2c15c7 100644 --- a/dcmpstat/docs/dcmpschk.man +++ b/dcmpstat/docs/dcmpschk.man @@ -18,24 +18,23 @@ The \b dcmpschk utility checks DICOM Grayscale Softcopy Presentation State objects for conformance with the standard. The test is performed in three phases: -\li Phase 1 checks the Meta-header of the DICOM file. It is tested whether - all required attributes are present, whether the SOP class and instance - UIDs match the UIDs in the main object and whether the group length - attribute contains a correct value. The Transfer Syntax of the Meta - header is also checked. - -\li Phase 2 performs a syntactic check of the values, value representations - and value multiplicities for each attribute in the object. The values - present in the object under test are compared with the definitions of the - DICOM data dictionary. - -\li Phase 3 performs a semantic check of the integrity of the Presentation - State. This phase is omitted when objects of other SOP Classes are - encountered. Phase 1 and 2 can also be applied to other DICOM objects of - arbitrary SOP class. - It should be noted that \b dcmpschk does not support Presentation States - which contain the Mask Module. These will be rejected with a message - that the Mask Module is not supported. +- Phase 1 checks the Meta-header of the DICOM file. It is tested whether all + required attributes are present, whether the SOP class and instance UIDs + match the UIDs in the main object and whether the group length attribute + contains a correct value. The Transfer Syntax of the Meta header is also + checked. + +- Phase 2 performs a syntactic check of the values, value representations and + value multiplicities for each attribute in the object. The values present in + the object under test are compared with the definitions of the DICOM data + dictionary. + +- Phase 3 performs a semantic check of the integrity of the Presentation State. + This phase is omitted when objects of other SOP Classes are encountered. + Phase 1 and 2 can also be applied to other DICOM objects of arbitrary SOP + class. It should be noted that \b dcmpschk does not support Presentation + States which contain the Mask Module. These will be rejected with a message + that the Mask Module is not supported. \section dcmpschk_parameters PARAMETERS @@ -132,6 +131,6 @@ It is an error if no data dictionary can be loaded. \section dcmpschk_copyright COPYRIGHT -Copyright (C) 2000-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 2000-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmpstat/docs/dcmpsmk.man b/dcmpstat/docs/dcmpsmk.man index ec6d1510..8cd49d63 100644 --- a/dcmpstat/docs/dcmpsmk.man +++ b/dcmpstat/docs/dcmpsmk.man @@ -26,9 +26,9 @@ when rendered under control of the presentation state. \section dcmpsmk_parameters PARAMETERS \verbatim -dcmfile-in DICOM image file(s) to be read +dcmfile-in DICOM image file(s) to be read ("-" for stdin) -dcmfile-out DICOM presentation state file to be created +dcmfile-out DICOM presentation state file to be created ("-" for stdout) \endverbatim \section dcmpsmk_options OPTIONS @@ -245,6 +245,6 @@ It is an error if no data dictionary can be loaded. \section dcmpsmk_copyright COPYRIGHT -Copyright (C) 1998-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 1998-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmpstat/docs/dcmpsprt.man b/dcmpstat/docs/dcmpsprt.man index 1a6292d5..15d09110 100644 --- a/dcmpstat/docs/dcmpsprt.man +++ b/dcmpstat/docs/dcmpsprt.man @@ -24,7 +24,7 @@ which performs communication with the printer. \section dcmpsprt_parameters PARAMETERS \verbatim -dcmfile-in DICOM image file(s) to be printed +dcmfile-in DICOM image file(s) to be printed ("-" for stdin) \endverbatim \section dcmpsprt_options OPTIONS @@ -304,7 +304,8 @@ It is an error if no data dictionary can be loaded. \section dcmpsprt_files FILES -\/dcmpstat.cfg, \/printers.cfg - sample configuration files +\/dcmpstat.cfg, \/printers.cfg - sample +configuration files \section dcmpsprt_see_also SEE ALSO @@ -312,6 +313,6 @@ It is an error if no data dictionary can be loaded. \section dcmpsprt_copyright COPYRIGHT -Copyright (C) 1999-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 1999-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmpstat/docs/dcmpstat.dox b/dcmpstat/docs/dcmpstat.dox index 01b8e23a..d16cd0b3 100644 --- a/dcmpstat/docs/dcmpstat.dox +++ b/dcmpstat/docs/dcmpstat.dox @@ -3,9 +3,10 @@ \page mod_dcmpstat dcmpstat: a presentation state library and utility apps This module contains classes that implement a high-level API for the DICOM -Softcopy Grayscale Presentation State Storage SOP Class. It also contains various -support classes that are used by DICOMscope, a free DICOM viewer that has been -developed as a demonstrator for presentation states. See http://dicom.offis.de/dscope +Softcopy Grayscale Presentation State Storage SOP Class. It also contains +various support classes that are used by DICOMscope, a free DICOM viewer that +has been developed as a demonstrator for presentation states. +See https://dicom.offis.de/en/dicomscope/ The main interface classes are: \li \b DVPresentationState diff --git a/dcmpstat/etc/dcmpstat.cfg b/dcmpstat/etc/dcmpstat.cfg index 5209b1cb..8b93771c 100644 --- a/dcmpstat/etc/dcmpstat.cfg +++ b/dcmpstat/etc/dcmpstat.cfg @@ -509,22 +509,22 @@ WarnUnsignedObjectsInSR = true # # Select the following security profile when using TLS connections. # Known terms are: -# BCP195: BCP 195 TLS Profile (default) -# BCP195-ND: Non-downgrading BCP 195 TLS Profile -# BCP195-EX: Extended BCP 195 TLS Profile -# AES: AES TLS Secure Transport Connection Profile (retired) -# BASIC: Basic TLS Secure Transport Connection Profile (retired) -# NULL: Authenticated unencrypted communication (retired) +# BCP195-RFC8996: BCP 195 RFC 8996 TLS Profile (default) +# BCP195: BCP 195 TLS Profile (retired) +# BCP195-ND: Non-downgrading BCP 195 TLS Profile (retired) +# BCP195-EX: Extended BCP 195 TLS Profile (retired) +# AES: AES TLS Secure Transport Connection Profile (retired) +# BASIC: Basic TLS Secure Transport Connection Profile (retired) +# NULL: Authenticated unencrypted communication (retired) # -# TLSProfile = BCP195 +# TLSProfile = BCP195-RFC8996 # # Note 1: The direct configuration of a list of ciphersuites using the # "CipherSuites" configuration setting is not supported anymore; # this setting will be ignored. # -# Note 2: The BCP195 profile, which is the default, provides backwards -# compatibility with older implementations only supporting the AES or -# BASIC profile. +# Note 2: Since the retired profiles are not considered secure anymore, +# their use should be avoided. # # Note 3: The BASIC profile requires 3DES to be enabled in the OpenSSL # library that DCMTK is compiled with. Starting with OpenSSL 1.1.0, this @@ -961,7 +961,7 @@ Port = 10007 ImplicitOnly = false DisableNewVRs = false UseTLS = true -TLSProfile = BCP195 +TLSProfile = BCP195-RFC8996 RandomSeed = store3.rnd PeerAuthentication = REQUIRE Certificate = sitecert.pem @@ -1004,7 +1004,7 @@ ImplicitOnly = false DisableNewVRs = false BitPreservingMode = false UseTLS = true -TLSProfile = BCP195 +TLSProfile = BCP195-RFC8996 RandomSeed = receiver.rnd PeerAuthentication = REQUIRE Certificate = sitecert.pem @@ -1123,7 +1123,7 @@ SupportsTrim = true # TLS settings UseTLS = true -TLSProfile = BCP195 +TLSProfile = BCP195-RFC8996 RandomSeed = iheprt1.rnd PeerAuthentication = REQUIRE Certificate = sitecert.pem @@ -1161,7 +1161,7 @@ SupportsPresentationLUT = true # TLS settings UseTLS = true -TLSProfile = BCP195 +TLSProfile = BCP195-RFC8996 RandomSeed = iheprt2.rnd PeerAuthentication = REQUIRE Certificate = sitecert.pem diff --git a/dcmpstat/libsrc/dviface.cc b/dcmpstat/libsrc/dviface.cc index d903ab56..0d6ca23c 100644 --- a/dcmpstat/libsrc/dviface.cc +++ b/dcmpstat/libsrc/dviface.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1998-2022, OFFIS e.V. + * Copyright (C) 1998-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -3677,21 +3677,16 @@ OFCondition DVInterface::terminatePrintServer() DcmTLSTransportLayer *tLayer = new DcmTLSTransportLayer(NET_REQUESTOR, tlsRandomSeedFile.c_str(), OFTrue); if (tLayer) { - if (tlsCACertificateFolder) tLayer->addTrustedCertificateDir(tlsCACertificateFolder, keyFileFormat); - if (tlsDHParametersFile.size() > 0) tLayer->setTempDHParameters(tlsDHParametersFile.c_str()); - tLayer->setPrivateKeyPasswd(tlsPrivateKeyPassword); // never prompt on console - tLayer->setPrivateKeyFile(tlsPrivateKeyFile.c_str(), keyFileFormat); - tLayer->setCertificateFile(tlsCertificateFile.c_str(), keyFileFormat); - tLayer->setCertificateVerification(DCV_ignoreCertificate); - - // determine TLS profile - OFString profileName; + // determine TLS profile + OFString profileName; const char *profileNamePtr = getTargetTLSProfile(target); if (profileNamePtr) profileName = profileNamePtr; - DcmTLSSecurityProfile tlsProfile = TSP_Profile_BCP195; // default - if (profileName == "BCP195-ND") tlsProfile = TSP_Profile_BCP195_ND; - else if (profileName == "BCP195-EX") tlsProfile = TSP_Profile_BCP195_Extended; + DcmTLSSecurityProfile tlsProfile = TSP_Profile_BCP_195_RFC_8996; // default + if (profileName == "BCP195-RFC8996") tlsProfile = TSP_Profile_BCP_195_RFC_8996; + else if (profileName == "BCP195-RFC8996-MOD") tlsProfile = TSP_Profile_BCP_195_RFC_8996_Modified; else if (profileName == "BCP195") tlsProfile = TSP_Profile_BCP195; + else if (profileName == "BCP195-ND") tlsProfile = TSP_Profile_BCP195_ND; + else if (profileName == "BCP195-EX") tlsProfile = TSP_Profile_BCP195_Extended; else if (profileName == "AES") tlsProfile = TSP_Profile_AES; else if (profileName == "BASIC") tlsProfile = TSP_Profile_Basic; else if (profileName == "NULL") tlsProfile = TSP_Profile_IHE_ATNA_Unencrypted; @@ -3702,6 +3697,14 @@ OFCondition DVInterface::terminatePrintServer() // activate cipher suites (void) tLayer->activateCipherSuites(); + // set certificate, private key, DH parameters etc. + if (tlsCACertificateFolder) tLayer->addTrustedCertificateDir(tlsCACertificateFolder, keyFileFormat); + if (tlsDHParametersFile.size() > 0) tLayer->setTempDHParameters(tlsDHParametersFile.c_str()); + tLayer->setPrivateKeyPasswd(tlsPrivateKeyPassword); // never prompt on console + tLayer->setPrivateKeyFile(tlsPrivateKeyFile.c_str(), keyFileFormat); + tLayer->setCertificateFile(tlsCertificateFile.c_str(), keyFileFormat, tlsProfile); + tLayer->setCertificateVerification(DCV_ignoreCertificate); + ASC_setTransportLayer(net, tLayer, 1); } #else diff --git a/dcmpstat/libsrc/dvpsga.cc b/dcmpstat/libsrc/dvpsga.cc index 4496d494..6986bc05 100644 --- a/dcmpstat/libsrc/dvpsga.cc +++ b/dcmpstat/libsrc/dvpsga.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1998-2018, OFFIS e.V. + * Copyright (C) 1998-2022, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -160,10 +160,10 @@ OFCondition DVPSGraphicAnnotation::addImageReference( DVPSObjectApplicability applicability) { if ((sopclassUID==NULL)||(instanceUID==NULL)||(applicability==DVPSB_allImages)) return EC_IllegalCall; + char frameString[24]; const char *framenumber=NULL; if (applicability==DVPSB_currentFrame) { - char frameString[100]; sprintf(frameString, "%ld", frame); framenumber = frameString; } diff --git a/dcmpstat/libsrc/dvpspr.cc b/dcmpstat/libsrc/dvpspr.cc index f407f2da..cb0edf68 100644 --- a/dcmpstat/libsrc/dvpspr.cc +++ b/dcmpstat/libsrc/dvpspr.cc @@ -123,7 +123,7 @@ OFCondition DVPSPrintMessageHandler::sendNRequest( { /* handle N-EVENT-REPORT-RQ */ rspDataset = NULL; - if (response.msg.NEventReportRQ.DataSetType == DIMSE_DATASET_PRESENT) + if (response.msg.NEventReportRQ.DataSetType != DIMSE_DATASET_NULL) { cond = DIMSE_receiveDataSetInMemory(assoc, blockMode, timeout, &thisPresId, &rspDataset, NULL, NULL); if (cond.bad()) return cond; @@ -197,7 +197,7 @@ OFCondition DVPSPrintMessageHandler::sendNRequest( return makeDcmnetCondition(DIMSEC_UNEXPECTEDRESPONSE, OF_error, buf1); } rspDataset = NULL; - if (responseDataset == DIMSE_DATASET_PRESENT) + if (responseDataset != DIMSE_DATASET_NULL) { cond = DIMSE_receiveDataSetInMemory(assoc, blockMode, timeout, &thisPresId, &rspDataset, NULL, NULL); if (cond.bad()) return cond; diff --git a/dcmpstat/libsrc/dvpsprt.cc b/dcmpstat/libsrc/dvpsprt.cc index 3633fd6e..5f13c16c 100644 --- a/dcmpstat/libsrc/dvpsprt.cc +++ b/dcmpstat/libsrc/dvpsprt.cc @@ -415,7 +415,7 @@ OFCondition DVPSPrintSCP::handleNGet(T_DIMSE_Message& rq, T_ASC_PresentationCont OFCondition cond = EC_Normal; DcmDataset *rspDataset = NULL; - if (rq.msg.NGetRQ.DataSetType == DIMSE_DATASET_PRESENT) + if (rq.msg.NGetRQ.DataSetType != DIMSE_DATASET_NULL) { DcmDataset *dataset = NULL; // should not happen @@ -473,7 +473,7 @@ OFCondition DVPSPrintSCP::handleNSet(T_DIMSE_Message& rq, T_ASC_PresentationCont DcmDataset *rqDataset = NULL; DcmDataset *rspDataset = NULL; - if (rq.msg.NSetRQ.DataSetType == DIMSE_DATASET_PRESENT) + if (rq.msg.NSetRQ.DataSetType != DIMSE_DATASET_NULL) { cond = DIMSE_receiveDataSetInMemory(assoc, blockMode, timeout, &presID, &rqDataset, NULL, NULL); if (cond.bad()) return cond; @@ -533,7 +533,7 @@ OFCondition DVPSPrintSCP::handleNAction(T_DIMSE_Message& rq, T_ASC_PresentationC OFCondition cond = EC_Normal; DcmDataset *rqDataset = NULL; - if (rq.msg.NActionRQ.DataSetType == DIMSE_DATASET_PRESENT) + if (rq.msg.NActionRQ.DataSetType != DIMSE_DATASET_NULL) { cond = DIMSE_receiveDataSetInMemory(assoc, blockMode, timeout, &presID, &rqDataset, NULL, NULL); if (cond.bad()) return cond; @@ -601,7 +601,7 @@ OFCondition DVPSPrintSCP::handleNCreate(T_DIMSE_Message& rq, T_ASC_PresentationC DcmDataset *rqDataset = NULL; DcmDataset *rspDataset = NULL; - if (rq.msg.NCreateRQ.DataSetType == DIMSE_DATASET_PRESENT) + if (rq.msg.NCreateRQ.DataSetType != DIMSE_DATASET_NULL) { cond = DIMSE_receiveDataSetInMemory(assoc, blockMode, timeout, &presID, &rqDataset, NULL, NULL); if (cond.bad()) return cond; @@ -658,7 +658,7 @@ OFCondition DVPSPrintSCP::handleNDelete(T_DIMSE_Message& rq, T_ASC_PresentationC rsp.msg.NDeleteRSP.opts = 0; OFCondition cond = EC_Normal; - if (rq.msg.NDeleteRQ.DataSetType == DIMSE_DATASET_PRESENT) + if (rq.msg.NDeleteRQ.DataSetType != DIMSE_DATASET_NULL) { // should not happen DcmDataset *dataset = NULL; diff --git a/dcmpstat/libsrc/dvpsril.cc b/dcmpstat/libsrc/dvpsril.cc index 843a0308..793e6906 100644 --- a/dcmpstat/libsrc/dvpsril.cc +++ b/dcmpstat/libsrc/dvpsril.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1998-2010, OFFIS e.V. + * Copyright (C) 1998-2022, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -218,9 +218,9 @@ OFCondition DVPSReferencedImage_PList::addImageReference( { if ((sopclassUID==NULL)||(instanceUID==NULL)||(applicability==DVPSB_allImages)) return EC_IllegalCall; const char *framenumber=NULL; + char frameString[24]; if (applicability==DVPSB_currentFrame) { - char frameString[100]; sprintf(frameString, "%ld", frame); framenumber = frameString; } diff --git a/dcmpstat/libsrc/dvpssvl.cc b/dcmpstat/libsrc/dvpssvl.cc index 79a23943..d1532db5 100644 --- a/dcmpstat/libsrc/dvpssvl.cc +++ b/dcmpstat/libsrc/dvpssvl.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1999-2021, OFFIS e.V. + * Copyright (C) 1999-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -42,7 +42,7 @@ DVPSSoftcopyVOI_PList::DVPSSoftcopyVOI_PList(const DVPSSoftcopyVOI_PList &arg) OFListConstIterator(DVPSSoftcopyVOI *) first = arg.list_.begin(); OFListConstIterator(DVPSSoftcopyVOI *) last = arg.list_.end(); while (first != last) - { + { list_.push_back((*first)->clone()); ++first; } @@ -58,7 +58,7 @@ void DVPSSoftcopyVOI_PList::clear() OFListIterator(DVPSSoftcopyVOI *) first = list_.begin(); OFListIterator(DVPSSoftcopyVOI *) last = list_.end(); while (first != last) - { + { delete (*first); first = list_.erase(first); } @@ -71,7 +71,7 @@ OFCondition DVPSSoftcopyVOI_PList::read(DcmItem &dset) DVPSSoftcopyVOI *newImage = NULL; DcmSequenceOfItems *dseq=NULL; DcmItem *ditem=NULL; - + if (EC_Normal == dset.search(DCM_SoftcopyVOILUTSequence, stack, ESM_fromHere, OFFalse)) { dseq=(DcmSequenceOfItems *)stack.top(); @@ -85,12 +85,13 @@ OFCondition DVPSSoftcopyVOI_PList::read(DcmItem &dset) if (newImage && ditem) { result = newImage->read(*ditem); + if (result.bad()) return result; list_.push_back(newImage); - } else result = EC_MemoryExhausted; + } else return EC_MemoryExhausted; } } - } - + } + return result; } @@ -140,13 +141,13 @@ DVPSSoftcopyVOI *DVPSSoftcopyVOI_PList::findSoftcopyVOI(const char *instanceUID, DVPSSoftcopyVOI *DVPSSoftcopyVOI_PList::createSoftcopyVOI( DVPSReferencedSeries_PList& allReferences, - const char *sopclassUID, - const char *instanceUID, - unsigned long frame, - unsigned long numberOfFrames, + const char *sopclassUID, + const char *instanceUID, + unsigned long frame, + unsigned long numberOfFrames, DVPSObjectApplicability applicability) { - + DVPSSoftcopyVOI *oldArea = findSoftcopyVOI(instanceUID, frame); DVPSSoftcopyVOI *newArea = NULL; if (oldArea == NULL) newArea = new DVPSSoftcopyVOI(); @@ -178,7 +179,7 @@ DVPSSoftcopyVOI *DVPSSoftcopyVOI_PList::createSoftcopyVOI( break; case DVPSB_allImages: clear(); // delete all softcopy VOI LUT items - break; + break; } } @@ -192,9 +193,9 @@ DVPSSoftcopyVOI *DVPSSoftcopyVOI_PList::createSoftcopyVOI( void DVPSSoftcopyVOI_PList::removeSoftcopyVOI( DVPSReferencedSeries_PList& allReferences, - const char *instanceUID, - unsigned long frame, - unsigned long numberOfFrames, + const char *instanceUID, + unsigned long frame, + unsigned long numberOfFrames, DVPSObjectApplicability applicability) { OFListIterator(DVPSSoftcopyVOI *) first = list_.begin(); @@ -215,20 +216,20 @@ void DVPSSoftcopyVOI_PList::removeSoftcopyVOI( break; case DVPSB_allImages: clear(); // delete all softcopy VOI LUT items - break; + break; } return; } OFCondition DVPSSoftcopyVOI_PList::createFromImage( - DcmItem &dset, + DcmItem &dset, DVPSReferencedSeries_PList& allReferences, - const char *sopclassUID, - const char *instanceUID, + const char *sopclassUID, + const char *instanceUID, DVPSVOIActivation voiActivation) { if (voiActivation == DVPSV_ignoreVOI) return EC_Normal; - + OFCondition result = EC_Normal; DcmStack stack; DcmSequenceOfItems *seq; @@ -255,19 +256,19 @@ OFCondition DVPSSoftcopyVOI_PList::createFromImage( { item = seq->getItem(0); stack.clear(); - if (EC_Normal == item->search((DcmTagKey &)voiLUTDescriptor.getTag(), + if (EC_Normal == item->search((DcmTagKey &)voiLUTDescriptor.getTag(), stack, ESM_fromHere, OFFalse)) { voiLUTDescriptor = *((DcmUnsignedShort *)(stack.top())); } stack.clear(); - if (EC_Normal == item->search((DcmTagKey &)voiLUTExplanation.getTag(), + if (EC_Normal == item->search((DcmTagKey &)voiLUTExplanation.getTag(), stack, ESM_fromHere, OFFalse)) { voiLUTExplanation = *((DcmLongString *)(stack.top())); } stack.clear(); - if (EC_Normal == item->search((DcmTagKey &)voiLUTData.getTag(), + if (EC_Normal == item->search((DcmTagKey &)voiLUTData.getTag(), stack, ESM_fromHere, OFFalse)) { voiLUTData = *((DcmUnsignedShort *)(stack.top())); @@ -278,7 +279,7 @@ OFCondition DVPSSoftcopyVOI_PList::createFromImage( OFBool haveWindow = ((windowCenter.getVM() > 0) && (windowWidth.getVM() > 0)); OFBool haveLUT = ((voiLUTDescriptor.getVM() == 3) && (voiLUTData.getLength() > 0)); - + if (result==EC_Normal) { DVPSSoftcopyVOI *voi = NULL; diff --git a/dcmqrdb/docs/dcmqrscp.man b/dcmqrdb/docs/dcmqrscp.man index b7b2ddbd..1914ee3f 100644 --- a/dcmqrdb/docs/dcmqrscp.man +++ b/dcmqrdb/docs/dcmqrscp.man @@ -743,6 +743,7 @@ RETIRED_NuclearMedicineImageStorage 1.2.840.10008.5.1.4.1.1.5 RETIRED_UltrasoundImageStorage 1.2.840.10008.5.1.4.1.1.6 UltrasoundImageStorage 1.2.840.10008.5.1.4.1.1.6.1 EnhancedUSVolumeStorage 1.2.840.10008.5.1.4.1.1.6.2 +PhotoacousticImageStorage 1.2.840.10008.5.1.4.1.1.6.3 SecondaryCaptureImageStorage 1.2.840.10008.5.1.4.1.1.7 MultiframeSingleBitSecondaryCaptureImageStorage 1.2.840.10008.5.1.4.1.1.7.1 MultiframeGrayscaleByteSecondaryCaptureImageStorage 1.2.840.10008.5.1.4.1.1.7.2 @@ -754,6 +755,7 @@ DRAFT_WaveformStorage 1.2.840.10008.5.1.4.1.1.9.1 TwelveLeadECGWaveformStorage 1.2.840.10008.5.1.4.1.1.9.1.1 GeneralECGWaveformStorage 1.2.840.10008.5.1.4.1.1.9.1.2 AmbulatoryECGWaveformStorage 1.2.840.10008.5.1.4.1.1.9.1.3 +General32BitECGWaveformStorage 1.2.840.10008.5.1.4.1.1.9.1.4 HemodynamicWaveformStorage 1.2.840.10008.5.1.4.1.1.9.2.1 CardiacElectrophysiologyWaveformStorage 1.2.840.10008.5.1.4.1.1.9.3.1 BasicVoiceAudioWaveformStorage 1.2.840.10008.5.1.4.1.1.9.4.1 @@ -779,6 +781,7 @@ AdvancedBlendingPresentationStateStorage 1.2.840.10008.5.1.4.1.1.11. VolumeRenderingVolumetricPresentationStateStorage 1.2.840.10008.5.1.4.1.1.11.9 SegmentedVolumeRenderingVolumetricPres.StateStorage 1.2.840.10008.5.1.4.1.1.11.10 MultipleVolumeRenderingVolumetricPres.StateStorage 1.2.840.10008.5.1.4.1.1.11.11 +VariableModalityLUTSoftcopyPresentationStateStorage 1.2.840.10008.5.1.4.1.1.11.12 XRayAngiographicImageStorage 1.2.840.10008.5.1.4.1.1.12.1 EnhancedXAImageStorage 1.2.840.10008.5.1.4.1.1.12.1.1 XRayRadiofluoroscopicImageStorage 1.2.840.10008.5.1.4.1.1.12.2 @@ -893,6 +896,9 @@ CArmPhotonElectronRadiationRecordStorage 1.2.840.10008.5.1.4.1.1.481 RoboticRadiationRecordStorage 1.2.840.10008.5.1.4.1.1.481.20 RTRadiationSetDeliveryInstructionStorage 1.2.840.10008.5.1.4.1.1.481.21 RTTreatmentPreparationStorage 1.2.840.10008.5.1.4.1.1.481.22 +EnhancedRTImageStorage 1.2.840.10008.5.1.4.1.1.481.23 +EnhancedContinuousRTImageStorage 1.2.840.10008.5.1.4.1.1.481.24 +RTPatientPositionAcquisitionInstructionStorage 1.2.840.10008.5.1.4.1.1.481.25 DICOS_CTImageStorage 1.2.840.10008.5.1.4.1.1.501.1 DICOS_DigitalXRayImageStorageForPresentation 1.2.840.10008.5.1.4.1.1.501.2.1 DICOS_DigitalXRayImageStorageForProcessing 1.2.840.10008.5.1.4.1.1.501.2.2 @@ -1098,6 +1104,6 @@ profiles \section dcmqrscp_copyright COPYRIGHT -Copyright (C) 1993-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 1993-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmqrdb/etc/dcmqrprf.cfg b/dcmqrdb/etc/dcmqrprf.cfg index efbd8d3f..96badec3 100644 --- a/dcmqrdb/etc/dcmqrprf.cfg +++ b/dcmqrdb/etc/dcmqrprf.cfg @@ -1,5 +1,5 @@ # -# Copyright (C) 2017-2022, OFFIS e.V. +# Copyright (C) 2017-2023, OFFIS e.V. # All rights reserved. See COPYRIGHT file for details. # # This software and supporting documentation were developed by @@ -11,14 +11,20 @@ # # Module: dcmqrdb # -# Author: Jan Schlamelcher +# Author: Jan Schlamelcher, Joerg Riesmeier # # Purpose: Sample storage profiles configuration file for dcmqrscp +# (see "dcmnet/docs/asconfig.txt" for documentation) # # ============================================================================ [[TransferSyntaxes]] # ============================================================================ +# +# Please note that the Storage SCP will prefer the first entry in the selected +# list of transfer syntaxes that is acceptable, i.e. that it matches one of the +# transfer syntaxes proposed by the Storage SCU. +# [Uncompressed] TransferSyntax1 = LocalEndianExplicit @@ -46,6 +52,10 @@ TransferSyntax1 = MPEG2MainProfile@MainLevel # commented out the following line since we do not support transcoding of MPEG2 # #TransferSyntax2 = MPEG2MainProfile@HighLevel +# +# (there are also MPEG2 transfer syntaxes that allow the encapsulated stream +# of encoded pixel data to be split into one or more fragments, see below) +# [MPEG4] TransferSyntax1 = MPEG4HighProfile/Level4.1 @@ -56,6 +66,10 @@ TransferSyntax1 = MPEG4HighProfile/Level4.1 #TransferSyntax3 = MPEG4HighProfile/Level4.2For2DVideo #TransferSyntax4 = MPEG4HighProfile/Level4.2For3DVideo #TransferSyntax5 = MPEG4StereoHighProfile/Level4.2 +# +# (there are also MPEG4 transfer syntaxes that allow the encapsulated stream +# of encoded pixel data to be split into one or more fragments, see below) +# [AnyTransferSyntax] TransferSyntax1 = JPEGBaseline @@ -90,12 +104,19 @@ TransferSyntax29 = MPEG4BDcompatibleHighProfile/Level4.1 TransferSyntax30 = MPEG4HighProfile/Level4.2For2DVideo TransferSyntax31 = MPEG4HighProfile/Level4.2For3DVideo TransferSyntax32 = MPEG4StereoHighProfile/Level4.2 -TransferSyntax33 = HEVCMainProfile/Level5.1 -TransferSyntax34 = HEVCMain10Profile/Level5.1 -TransferSyntax35 = DeflatedLittleEndianExplicit -TransferSyntax36 = LocalEndianExplicit -TransferSyntax37 = OppositeEndianExplicit -TransferSyntax38 = LittleEndianImplicit +TransferSyntax33 = FragmentableMPEG2MainProfile/MainLevel +TransferSyntax34 = FragmentableMPEG2MainProfile/HighLevel +TransferSyntax35 = FragmentableMPEG4HighProfile/Level4.1 +TransferSyntax36 = FragmentableMPEG4BDcompatibleHighProfile/Level4.1 +TransferSyntax37 = FragmentableMPEG4HighProfile/Level4.2For2DVideo +TransferSyntax38 = FragmentableMPEG4HighProfile/Level4.2For3DVideo +TransferSyntax39 = FragmentableMPEG4StereoHighProfile/Level4.2 +TransferSyntax40 = HEVCMainProfile/Level5.1 +TransferSyntax41 = HEVCMain10Profile/Level5.1 +TransferSyntax42 = DeflatedLittleEndianExplicit +TransferSyntax43 = LocalEndianExplicit +TransferSyntax44 = OppositeEndianExplicit +TransferSyntax45 = LittleEndianImplicit # ============================================================================ [[PresentationContexts]] @@ -110,6 +131,9 @@ PresentationContext1 = VerificationSOPClass\Uncompressed # Accept image SOP classes with virtually any transfer syntax we know. # Accept non-image SOP classes uncompressed or with zlib compression only. # +# Please do not add any Storage SOP Class that does not fit into the +# PATIENT-STUDY-SERIES-INSTANCE information model. +# PresentationContext2 = BreastProjectionXRayImageStorageForPresentation\AnyTransferSyntax PresentationContext3 = BreastProjectionXRayImageStorageForProcessing\AnyTransferSyntax PresentationContext4 = BreastTomosynthesisImageStorage\AnyTransferSyntax @@ -123,204 +147,212 @@ PresentationContext11 = DigitalMammographyXRayImageStorageForPresentation\AnyTr PresentationContext12 = DigitalMammographyXRayImageStorageForProcessing\AnyTransferSyntax PresentationContext13 = DigitalXRayImageStorageForPresentation\AnyTransferSyntax PresentationContext14 = DigitalXRayImageStorageForProcessing\AnyTransferSyntax -PresentationContext15 = EnhancedCTImageStorage\AnyTransferSyntax -PresentationContext16 = EnhancedMRColorImageStorage\AnyTransferSyntax -PresentationContext17 = EnhancedMRImageStorage\AnyTransferSyntax -PresentationContext18 = EnhancedPETImageStorage\AnyTransferSyntax -PresentationContext19 = EnhancedUSVolumeStorage\AnyTransferSyntax -PresentationContext20 = EnhancedXAImageStorage\AnyTransferSyntax -PresentationContext21 = EnhancedXRFImageStorage\AnyTransferSyntax -PresentationContext22 = IntravascularOpticalCoherenceTomographyImageStorageForPresentation\AnyTransferSyntax -PresentationContext23 = IntravascularOpticalCoherenceTomographyImageStorageForProcessing\AnyTransferSyntax -PresentationContext24 = LegacyConvertedEnhancedCTImageStorage\AnyTransferSyntax -PresentationContext25 = LegacyConvertedEnhancedMRImageStorage\AnyTransferSyntax -PresentationContext26 = LegacyConvertedEnhancedPETImageStorage\AnyTransferSyntax -PresentationContext27 = MRImageStorage\AnyTransferSyntax -PresentationContext28 = MultiframeGrayscaleByteSecondaryCaptureImageStorage\AnyTransferSyntax -PresentationContext29 = MultiframeGrayscaleWordSecondaryCaptureImageStorage\AnyTransferSyntax -PresentationContext30 = MultiframeSingleBitSecondaryCaptureImageStorage\AnyTransferSyntax -PresentationContext31 = MultiframeTrueColorSecondaryCaptureImageStorage\AnyTransferSyntax -PresentationContext32 = NuclearMedicineImageStorage\AnyTransferSyntax -PresentationContext33 = OphthalmicOpticalCoherenceTomographyEnFaceImageStorage\AnyTransferSyntax -PresentationContext34 = OphthalmicPhotography16BitImageStorage\AnyTransferSyntax -PresentationContext35 = OphthalmicPhotography8BitImageStorage\AnyTransferSyntax -PresentationContext36 = OphthalmicThicknessMapStorage\AnyTransferSyntax -PresentationContext37 = OphthalmicTomographyImageStorage\AnyTransferSyntax -PresentationContext38 = PositronEmissionTomographyImageStorage\AnyTransferSyntax -PresentationContext39 = RTImageStorage\AnyTransferSyntax -PresentationContext40 = SecondaryCaptureImageStorage\AnyTransferSyntax -PresentationContext41 = UltrasoundImageStorage\AnyTransferSyntax -PresentationContext42 = UltrasoundMultiframeImageStorage\AnyTransferSyntax -PresentationContext43 = VLEndoscopicImageStorage\AnyTransferSyntax -PresentationContext44 = VLMicroscopicImageStorage\AnyTransferSyntax -PresentationContext45 = VLPhotographicImageStorage\AnyTransferSyntax -PresentationContext46 = VLSlideCoordinatesMicroscopicImageStorage\AnyTransferSyntax -PresentationContext47 = VLWholeSlideMicroscopyImageStorage\AnyTransferSyntax -PresentationContext48 = VideoEndoscopicImageStorage\AnyTransferSyntax -PresentationContext49 = VideoMicroscopicImageStorage\AnyTransferSyntax -PresentationContext50 = VideoPhotographicImageStorage\AnyTransferSyntax -PresentationContext51 = WideFieldOphthalmicPhotography3DCoordinatesImageStorage\AnyTransferSyntax -PresentationContext52 = WideFieldOphthalmicPhotographyStereographicProjectionImageStorage\AnyTransferSyntax -PresentationContext53 = XRay3DAngiographicImageStorage\AnyTransferSyntax -PresentationContext54 = XRay3DCraniofacialImageStorage\AnyTransferSyntax -PresentationContext55 = XRayAngiographicImageStorage\AnyTransferSyntax -PresentationContext56 = XRayRadiofluoroscopicImageStorage\AnyTransferSyntax +PresentationContext15 = EnhancedContinuousRTImageStorage\AnyTransferSyntax +PresentationContext16 = EnhancedCTImageStorage\AnyTransferSyntax +PresentationContext17 = EnhancedMRColorImageStorage\AnyTransferSyntax +PresentationContext18 = EnhancedMRImageStorage\AnyTransferSyntax +PresentationContext19 = EnhancedPETImageStorage\AnyTransferSyntax +PresentationContext20 = EnhancedRTImageStorage\AnyTransferSyntax +PresentationContext21 = EnhancedUSVolumeStorage\AnyTransferSyntax +PresentationContext22 = EnhancedXAImageStorage\AnyTransferSyntax +PresentationContext23 = EnhancedXRFImageStorage\AnyTransferSyntax +PresentationContext24 = IntravascularOpticalCoherenceTomographyImageStorageForPresentation\AnyTransferSyntax +PresentationContext25 = IntravascularOpticalCoherenceTomographyImageStorageForProcessing\AnyTransferSyntax +PresentationContext26 = LegacyConvertedEnhancedCTImageStorage\AnyTransferSyntax +PresentationContext27 = LegacyConvertedEnhancedMRImageStorage\AnyTransferSyntax +PresentationContext28 = LegacyConvertedEnhancedPETImageStorage\AnyTransferSyntax +PresentationContext29 = MRImageStorage\AnyTransferSyntax +PresentationContext30 = MultiframeGrayscaleByteSecondaryCaptureImageStorage\AnyTransferSyntax +PresentationContext31 = MultiframeGrayscaleWordSecondaryCaptureImageStorage\AnyTransferSyntax +PresentationContext32 = MultiframeSingleBitSecondaryCaptureImageStorage\AnyTransferSyntax +PresentationContext33 = MultiframeTrueColorSecondaryCaptureImageStorage\AnyTransferSyntax +PresentationContext34 = NuclearMedicineImageStorage\AnyTransferSyntax +PresentationContext35 = OphthalmicOpticalCoherenceTomographyEnFaceImageStorage\AnyTransferSyntax +PresentationContext36 = OphthalmicPhotography16BitImageStorage\AnyTransferSyntax +PresentationContext37 = OphthalmicPhotography8BitImageStorage\AnyTransferSyntax +PresentationContext38 = OphthalmicThicknessMapStorage\AnyTransferSyntax +PresentationContext39 = OphthalmicTomographyImageStorage\AnyTransferSyntax +PresentationContext40 = PhotoacousticImageStorage\AnyTransferSyntax +PresentationContext41 = PositronEmissionTomographyImageStorage\AnyTransferSyntax +PresentationContext42 = RTImageStorage\AnyTransferSyntax +PresentationContext43 = SecondaryCaptureImageStorage\AnyTransferSyntax +PresentationContext44 = UltrasoundImageStorage\AnyTransferSyntax +PresentationContext45 = UltrasoundMultiframeImageStorage\AnyTransferSyntax +PresentationContext46 = VLEndoscopicImageStorage\AnyTransferSyntax +PresentationContext47 = VLMicroscopicImageStorage\AnyTransferSyntax +PresentationContext48 = VLPhotographicImageStorage\AnyTransferSyntax +PresentationContext49 = VLSlideCoordinatesMicroscopicImageStorage\AnyTransferSyntax +PresentationContext50 = VLWholeSlideMicroscopyImageStorage\AnyTransferSyntax +PresentationContext51 = VideoEndoscopicImageStorage\AnyTransferSyntax +PresentationContext52 = VideoMicroscopicImageStorage\AnyTransferSyntax +PresentationContext53 = VideoPhotographicImageStorage\AnyTransferSyntax +PresentationContext54 = WideFieldOphthalmicPhotography3DCoordinatesImageStorage\AnyTransferSyntax +PresentationContext55 = WideFieldOphthalmicPhotographyStereographicProjectionImageStorage\AnyTransferSyntax +PresentationContext56 = XRay3DAngiographicImageStorage\AnyTransferSyntax +PresentationContext57 = XRay3DCraniofacialImageStorage\AnyTransferSyntax +PresentationContext58 = XRayAngiographicImageStorage\AnyTransferSyntax +PresentationContext59 = XRayRadiofluoroscopicImageStorage\AnyTransferSyntax # # retired image SOP classes # -PresentationContext57 = RETIRED_HardcopyColorImageStorage\AnyTransferSyntax -PresentationContext58 = RETIRED_HardcopyGrayscaleImageStorage\AnyTransferSyntax -PresentationContext59 = RETIRED_NuclearMedicineImageStorage\AnyTransferSyntax -PresentationContext60 = RETIRED_UltrasoundImageStorage\AnyTransferSyntax -PresentationContext61 = RETIRED_UltrasoundMultiframeImageStorage\AnyTransferSyntax -PresentationContext62 = RETIRED_VLImageStorage\AnyTransferSyntax -PresentationContext63 = RETIRED_VLMultiframeImageStorage\AnyTransferSyntax -PresentationContext64 = RETIRED_XRayAngiographicBiPlaneImageStorage\AnyTransferSyntax +PresentationContext60 = RETIRED_HardcopyColorImageStorage\AnyTransferSyntax +PresentationContext61 = RETIRED_HardcopyGrayscaleImageStorage\AnyTransferSyntax +PresentationContext62 = RETIRED_NuclearMedicineImageStorage\AnyTransferSyntax +PresentationContext63 = RETIRED_UltrasoundImageStorage\AnyTransferSyntax +PresentationContext64 = RETIRED_UltrasoundMultiframeImageStorage\AnyTransferSyntax +PresentationContext65 = RETIRED_VLImageStorage\AnyTransferSyntax +PresentationContext66 = RETIRED_VLMultiframeImageStorage\AnyTransferSyntax +PresentationContext67 = RETIRED_XRayAngiographicBiPlaneImageStorage\AnyTransferSyntax # # the following presentation contexts are for non-image SOP classes # -PresentationContext65 = AcquisitionContextSRStorage\UncompressedOrZlib -PresentationContext66 = AdvancedBlendingPresentationStateStorage\UncompressedOrZlib -PresentationContext67 = AmbulatoryECGWaveformStorage\UncompressedOrZlib -PresentationContext68 = ArterialPulseWaveformStorage\UncompressedOrZlib -PresentationContext69 = AutorefractionMeasurementsStorage\UncompressedOrZlib -PresentationContext70 = BasicStructuredDisplayStorage\UncompressedOrZlib -PresentationContext71 = BasicTextSRStorage\UncompressedOrZlib -PresentationContext72 = BasicVoiceAudioWaveformStorage\UncompressedOrZlib -PresentationContext73 = BlendingSoftcopyPresentationStateStorage\UncompressedOrZlib -PresentationContext74 = BodyPositionWaveformStorage\UncompressedOrZlib -PresentationContext75 = CArmPhotonElectronRadiationRecordStorage\UncompressedOrZlib -PresentationContext76 = CArmPhotonElectronRadiationStorage\UncompressedOrZlib -PresentationContext77 = CTDefinedProcedureProtocolStorage\UncompressedOrZlib -PresentationContext78 = CTPerformedProcedureProtocolStorage\UncompressedOrZlib -PresentationContext79 = CardiacElectrophysiologyWaveformStorage\UncompressedOrZlib -PresentationContext80 = ChestCADSRStorage\UncompressedOrZlib -PresentationContext81 = ColonCADSRStorage\UncompressedOrZlib -PresentationContext82 = ColorSoftcopyPresentationStateStorage\UncompressedOrZlib -PresentationContext83 = CompositingPlanarMPRVolumetricPresentationStateStorage\UncompressedOrZlib -PresentationContext84 = Comprehensive3DSRStorage\UncompressedOrZlib -PresentationContext85 = ComprehensiveSRStorage\UncompressedOrZlib -PresentationContext86 = ContentAssessmentResultsStorage\UncompressedOrZlib -PresentationContext87 = DeformableSpatialRegistrationStorage\UncompressedOrZlib -PresentationContext88 = ElectromyogramWaveformStorage\UncompressedOrZlib -PresentationContext89 = ElectrooculogramWaveformStorage\UncompressedOrZlib -PresentationContext90 = EncapsulatedCDAStorage\UncompressedOrZlib -PresentationContext91 = EncapsulatedMTLStorage\UncompressedOrZlib -PresentationContext92 = EncapsulatedOBJStorage\UncompressedOrZlib -PresentationContext93 = EncapsulatedPDFStorage\UncompressedOrZlib -PresentationContext94 = EncapsulatedSTLStorage\UncompressedOrZlib -PresentationContext95 = EnhancedSRStorage\UncompressedOrZlib -PresentationContext96 = EnhancedXRayRadiationDoseSRStorage\UncompressedOrZlib -PresentationContext97 = ExtensibleSRStorage\UncompressedOrZlib -PresentationContext98 = GeneralAudioWaveformStorage\UncompressedOrZlib -PresentationContext99 = GeneralECGWaveformStorage\UncompressedOrZlib -PresentationContext100 = GenericImplantTemplateStorage\UncompressedOrZlib -PresentationContext101 = GrayscalePlanarMPRVolumetricPresentationStateStorage\UncompressedOrZlib -PresentationContext102 = GrayscaleSoftcopyPresentationStateStorage\UncompressedOrZlib -PresentationContext103 = HangingProtocolStorage\UncompressedOrZlib -PresentationContext104 = HemodynamicWaveformStorage\UncompressedOrZlib -PresentationContext105 = ImplantAssemblyTemplateStorage\UncompressedOrZlib -PresentationContext106 = ImplantTemplateGroupStorage\UncompressedOrZlib -PresentationContext107 = ImplantationPlanSRStorage\UncompressedOrZlib -PresentationContext108 = IntraocularLensCalculationsStorage\UncompressedOrZlib -PresentationContext109 = KeratometryMeasurementsStorage\UncompressedOrZlib -PresentationContext110 = KeyObjectSelectionDocumentStorage\UncompressedOrZlib -PresentationContext111 = LensometryMeasurementsStorage\UncompressedOrZlib -PresentationContext112 = MRSpectroscopyStorage\UncompressedOrZlib -PresentationContext113 = MacularGridThicknessAndVolumeReportStorage\UncompressedOrZlib -PresentationContext114 = MammographyCADSRStorage\UncompressedOrZlib -PresentationContext115 = MicroscopyBulkSimpleAnnotationsStorage\UncompressedOrZlib -PresentationContext116 = MultichannelRespiratoryWaveformStorage\UncompressedOrZlib -PresentationContext117 = MultipleVolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib -PresentationContext118 = OphthalmicAxialMeasurementsStorage\UncompressedOrZlib -PresentationContext119 = OphthalmicOpticalCoherenceTomographyBscanVolumeAnalysisStorage\UncompressedOrZlib -PresentationContext120 = OphthalmicVisualFieldStaticPerimetryMeasurementsStorage\UncompressedOrZlib -PresentationContext121 = ParametricMapStorage\UncompressedOrZlib -PresentationContext122 = PatientRadiationDoseSRStorage\UncompressedOrZlib -PresentationContext123 = PerformedImagingAgentAdministrationSRStorage\UncompressedOrZlib -PresentationContext124 = PlannedImagingAgentAdministrationSRStorage\UncompressedOrZlib -PresentationContext125 = ProcedureLogStorage\UncompressedOrZlib -PresentationContext126 = ProtocolApprovalStorage\UncompressedOrZlib -PresentationContext127 = PseudoColorSoftcopyPresentationStateStorage\UncompressedOrZlib -PresentationContext128 = RTBeamsDeliveryInstructionStorage\UncompressedOrZlib -PresentationContext129 = RTBeamsTreatmentRecordStorage\UncompressedOrZlib -PresentationContext130 = RTBrachyApplicationSetupDeliveryInstructionStorage\UncompressedOrZlib -PresentationContext131 = RTBrachyTreatmentRecordStorage\UncompressedOrZlib -PresentationContext132 = RTDoseStorage\UncompressedOrZlib -PresentationContext133 = RTIonBeamsTreatmentRecordStorage\UncompressedOrZlib -PresentationContext134 = RTIonPlanStorage\UncompressedOrZlib -PresentationContext135 = RTPhysicianIntentStorage\UncompressedOrZlib -PresentationContext136 = RTPlanStorage\UncompressedOrZlib -PresentationContext137 = RTRadiationRecordSetStorage\UncompressedOrZlib -PresentationContext138 = RTRadiationSalvageRecordStorage\UncompressedOrZlib -PresentationContext139 = RTRadiationSetDeliveryInstructionStorage\UncompressedOrZlib -PresentationContext140 = RTRadiationSetStorage\UncompressedOrZlib -PresentationContext141 = RTSegmentAnnotationStorage\UncompressedOrZlib -PresentationContext142 = RTStructureSetStorage\UncompressedOrZlib -PresentationContext143 = RTTreatmentPreparationStorage\UncompressedOrZlib -PresentationContext144 = RTTreatmentSummaryRecordStorage\UncompressedOrZlib -PresentationContext145 = RadiopharmaceuticalRadiationDoseSRStorage\UncompressedOrZlib -PresentationContext146 = RawDataStorage\UncompressedOrZlib -PresentationContext147 = RealWorldValueMappingStorage\UncompressedOrZlib -PresentationContext148 = RespiratoryWaveformStorage\UncompressedOrZlib -PresentationContext149 = RoboticArmRadiationStorage\UncompressedOrZlib -PresentationContext150 = RoboticRadiationRecordStorage\UncompressedOrZlib -PresentationContext151 = RoutineScalpElectroencephalogramWaveformStorage\UncompressedOrZlib -PresentationContext152 = SegmentationStorage\UncompressedOrZlib -PresentationContext153 = SegmentedVolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib -PresentationContext154 = SimplifiedAdultEchoSRStorage\UncompressedOrZlib -PresentationContext155 = SleepElectroencephalogramWaveformStorage\UncompressedOrZlib -PresentationContext156 = SpatialFiducialsStorage\UncompressedOrZlib -PresentationContext157 = SpatialRegistrationStorage\UncompressedOrZlib -PresentationContext158 = SpectaclePrescriptionReportStorage\UncompressedOrZlib -PresentationContext159 = StereometricRelationshipStorage\UncompressedOrZlib -PresentationContext160 = SubjectiveRefractionMeasurementsStorage\UncompressedOrZlib -PresentationContext161 = SurfaceScanMeshStorage\UncompressedOrZlib -PresentationContext162 = SurfaceScanPointCloudStorage\UncompressedOrZlib -PresentationContext163 = SurfaceSegmentationStorage\UncompressedOrZlib -PresentationContext164 = TomotherapeuticRadiationRecordStorage\UncompressedOrZlib -PresentationContext165 = TomotherapeuticRadiationStorage\UncompressedOrZlib -PresentationContext166 = TractographyResultsStorage\UncompressedOrZlib -PresentationContext167 = TwelveLeadECGWaveformStorage\UncompressedOrZlib -PresentationContext168 = VisualAcuityMeasurementsStorage\UncompressedOrZlib -PresentationContext169 = VolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib -PresentationContext170 = XADefinedProcedureProtocolStorage\UncompressedOrZlib -PresentationContext171 = XAPerformedProcedureProtocolStorage\UncompressedOrZlib -PresentationContext172 = XAXRFGrayscaleSoftcopyPresentationStateStorage\UncompressedOrZlib -PresentationContext173 = XRayRadiationDoseSRStorage\UncompressedOrZlib +PresentationContext68 = AcquisitionContextSRStorage\UncompressedOrZlib +PresentationContext69 = AdvancedBlendingPresentationStateStorage\UncompressedOrZlib +PresentationContext70 = AmbulatoryECGWaveformStorage\UncompressedOrZlib +PresentationContext71 = ArterialPulseWaveformStorage\UncompressedOrZlib +PresentationContext72 = AutorefractionMeasurementsStorage\UncompressedOrZlib +PresentationContext73 = BasicStructuredDisplayStorage\UncompressedOrZlib +PresentationContext74 = BasicTextSRStorage\UncompressedOrZlib +PresentationContext75 = BasicVoiceAudioWaveformStorage\UncompressedOrZlib +PresentationContext76 = BlendingSoftcopyPresentationStateStorage\UncompressedOrZlib +PresentationContext77 = BodyPositionWaveformStorage\UncompressedOrZlib +PresentationContext78 = CArmPhotonElectronRadiationRecordStorage\UncompressedOrZlib +PresentationContext79 = CArmPhotonElectronRadiationStorage\UncompressedOrZlib +PresentationContext80 = CTDefinedProcedureProtocolStorage\UncompressedOrZlib +PresentationContext81 = CTPerformedProcedureProtocolStorage\UncompressedOrZlib +PresentationContext82 = CardiacElectrophysiologyWaveformStorage\UncompressedOrZlib +PresentationContext83 = ChestCADSRStorage\UncompressedOrZlib +PresentationContext84 = ColonCADSRStorage\UncompressedOrZlib +PresentationContext85 = ColorPaletteStorage\UncompressedOrZlib +PresentationContext86 = ColorSoftcopyPresentationStateStorage\UncompressedOrZlib +PresentationContext87 = CompositingPlanarMPRVolumetricPresentationStateStorage\UncompressedOrZlib +PresentationContext88 = Comprehensive3DSRStorage\UncompressedOrZlib +PresentationContext89 = ComprehensiveSRStorage\UncompressedOrZlib +PresentationContext90 = ContentAssessmentResultsStorage\UncompressedOrZlib +PresentationContext91 = DeformableSpatialRegistrationStorage\UncompressedOrZlib +PresentationContext92 = ElectromyogramWaveformStorage\UncompressedOrZlib +PresentationContext93 = ElectrooculogramWaveformStorage\UncompressedOrZlib +PresentationContext94 = EncapsulatedCDAStorage\UncompressedOrZlib +PresentationContext95 = EncapsulatedMTLStorage\UncompressedOrZlib +PresentationContext96 = EncapsulatedOBJStorage\UncompressedOrZlib +PresentationContext97 = EncapsulatedPDFStorage\UncompressedOrZlib +PresentationContext98 = EncapsulatedSTLStorage\UncompressedOrZlib +PresentationContext99 = EnhancedSRStorage\UncompressedOrZlib +PresentationContext100 = EnhancedXRayRadiationDoseSRStorage\UncompressedOrZlib +PresentationContext101 = ExtensibleSRStorage\UncompressedOrZlib +PresentationContext102 = General32BitECGWaveformStorage\UncompressedOrZlib +PresentationContext103 = GeneralAudioWaveformStorage\UncompressedOrZlib +PresentationContext104 = GeneralECGWaveformStorage\UncompressedOrZlib +PresentationContext105 = GenericImplantTemplateStorage\UncompressedOrZlib +PresentationContext106 = GrayscalePlanarMPRVolumetricPresentationStateStorage\UncompressedOrZlib +PresentationContext107 = GrayscaleSoftcopyPresentationStateStorage\UncompressedOrZlib +PresentationContext108 = HangingProtocolStorage\UncompressedOrZlib +PresentationContext109 = HemodynamicWaveformStorage\UncompressedOrZlib +PresentationContext110 = ImplantAssemblyTemplateStorage\UncompressedOrZlib +PresentationContext111 = ImplantTemplateGroupStorage\UncompressedOrZlib +PresentationContext112 = ImplantationPlanSRStorage\UncompressedOrZlib +PresentationContext113 = IntraocularLensCalculationsStorage\UncompressedOrZlib +PresentationContext114 = InventoryStorage\UncompressedOrZlib +PresentationContext115 = KeratometryMeasurementsStorage\UncompressedOrZlib +PresentationContext116 = KeyObjectSelectionDocumentStorage\UncompressedOrZlib +PresentationContext117 = LensometryMeasurementsStorage\UncompressedOrZlib +PresentationContext118 = MRSpectroscopyStorage\UncompressedOrZlib +PresentationContext119 = MacularGridThicknessAndVolumeReportStorage\UncompressedOrZlib +PresentationContext120 = MammographyCADSRStorage\UncompressedOrZlib +PresentationContext121 = MicroscopyBulkSimpleAnnotationsStorage\UncompressedOrZlib +PresentationContext122 = MultichannelRespiratoryWaveformStorage\UncompressedOrZlib +PresentationContext123 = MultipleVolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib +PresentationContext124 = OphthalmicAxialMeasurementsStorage\UncompressedOrZlib +PresentationContext125 = OphthalmicOpticalCoherenceTomographyBscanVolumeAnalysisStorage\UncompressedOrZlib +PresentationContext126 = OphthalmicVisualFieldStaticPerimetryMeasurementsStorage\UncompressedOrZlib +PresentationContext127 = ParametricMapStorage\UncompressedOrZlib +PresentationContext128 = PatientRadiationDoseSRStorage\UncompressedOrZlib +PresentationContext129 = PerformedImagingAgentAdministrationSRStorage\UncompressedOrZlib +PresentationContext130 = PlannedImagingAgentAdministrationSRStorage\UncompressedOrZlib +PresentationContext131 = ProcedureLogStorage\UncompressedOrZlib +PresentationContext132 = ProtocolApprovalStorage\UncompressedOrZlib +PresentationContext133 = PseudoColorSoftcopyPresentationStateStorage\UncompressedOrZlib +PresentationContext134 = RTBeamsDeliveryInstructionStorage\UncompressedOrZlib +PresentationContext135 = RTBeamsTreatmentRecordStorage\UncompressedOrZlib +PresentationContext136 = RTBrachyApplicationSetupDeliveryInstructionStorage\UncompressedOrZlib +PresentationContext137 = RTBrachyTreatmentRecordStorage\UncompressedOrZlib +PresentationContext138 = RTDoseStorage\UncompressedOrZlib +PresentationContext139 = RTIonBeamsTreatmentRecordStorage\UncompressedOrZlib +PresentationContext140 = RTIonPlanStorage\UncompressedOrZlib +PresentationContext141 = RTPatientPositionAcquisitionInstructionStorage\UncompressedOrZlib +PresentationContext142 = RTPhysicianIntentStorage\UncompressedOrZlib +PresentationContext143 = RTPlanStorage\UncompressedOrZlib +PresentationContext144 = RTRadiationRecordSetStorage\UncompressedOrZlib +PresentationContext145 = RTRadiationSalvageRecordStorage\UncompressedOrZlib +PresentationContext146 = RTRadiationSetDeliveryInstructionStorage\UncompressedOrZlib +PresentationContext147 = RTRadiationSetStorage\UncompressedOrZlib +PresentationContext148 = RTSegmentAnnotationStorage\UncompressedOrZlib +PresentationContext149 = RTStructureSetStorage\UncompressedOrZlib +PresentationContext150 = RTTreatmentPreparationStorage\UncompressedOrZlib +PresentationContext151 = RTTreatmentSummaryRecordStorage\UncompressedOrZlib +PresentationContext152 = RadiopharmaceuticalRadiationDoseSRStorage\UncompressedOrZlib +PresentationContext153 = RawDataStorage\UncompressedOrZlib +PresentationContext154 = RealWorldValueMappingStorage\UncompressedOrZlib +PresentationContext155 = RespiratoryWaveformStorage\UncompressedOrZlib +PresentationContext156 = RoboticArmRadiationStorage\UncompressedOrZlib +PresentationContext157 = RoboticRadiationRecordStorage\UncompressedOrZlib +PresentationContext158 = RoutineScalpElectroencephalogramWaveformStorage\UncompressedOrZlib +PresentationContext159 = SegmentationStorage\UncompressedOrZlib +PresentationContext160 = SegmentedVolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib +PresentationContext161 = SimplifiedAdultEchoSRStorage\UncompressedOrZlib +PresentationContext162 = SleepElectroencephalogramWaveformStorage\UncompressedOrZlib +PresentationContext163 = SpatialFiducialsStorage\UncompressedOrZlib +PresentationContext164 = SpatialRegistrationStorage\UncompressedOrZlib +PresentationContext165 = SpectaclePrescriptionReportStorage\UncompressedOrZlib +PresentationContext166 = StereometricRelationshipStorage\UncompressedOrZlib +PresentationContext167 = SubjectiveRefractionMeasurementsStorage\UncompressedOrZlib +PresentationContext168 = SurfaceScanMeshStorage\UncompressedOrZlib +PresentationContext169 = SurfaceScanPointCloudStorage\UncompressedOrZlib +PresentationContext170 = SurfaceSegmentationStorage\UncompressedOrZlib +PresentationContext171 = TomotherapeuticRadiationRecordStorage\UncompressedOrZlib +PresentationContext172 = TomotherapeuticRadiationStorage\UncompressedOrZlib +PresentationContext173 = TractographyResultsStorage\UncompressedOrZlib +PresentationContext174 = TwelveLeadECGWaveformStorage\UncompressedOrZlib +PresentationContext175 = VariableModalityLUTSoftcopyPresentationStateStorage\UncompressedOrZlib +PresentationContext176 = VisualAcuityMeasurementsStorage\UncompressedOrZlib +PresentationContext177 = VolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib +PresentationContext178 = XADefinedProcedureProtocolStorage\UncompressedOrZlib +PresentationContext179 = XAPerformedProcedureProtocolStorage\UncompressedOrZlib +PresentationContext180 = XAXRFGrayscaleSoftcopyPresentationStateStorage\UncompressedOrZlib +PresentationContext181 = XRayRadiationDoseSRStorage\UncompressedOrZlib # # retired non-image SOP classes # -PresentationContext174 = RETIRED_StandaloneCurveStorage\UncompressedOrZlib -PresentationContext175 = RETIRED_StandaloneModalityLUTStorage\UncompressedOrZlib -PresentationContext176 = RETIRED_StandaloneOverlayStorage\UncompressedOrZlib -PresentationContext177 = RETIRED_StandalonePETCurveStorage\UncompressedOrZlib -PresentationContext178 = RETIRED_StandaloneVOILUTStorage\UncompressedOrZlib -PresentationContext179 = RETIRED_StoredPrintStorage\UncompressedOrZlib +PresentationContext182 = RETIRED_StandaloneCurveStorage\UncompressedOrZlib +PresentationContext183 = RETIRED_StandaloneModalityLUTStorage\UncompressedOrZlib +PresentationContext184 = RETIRED_StandaloneOverlayStorage\UncompressedOrZlib +PresentationContext185 = RETIRED_StandalonePETCurveStorage\UncompressedOrZlib +PresentationContext186 = RETIRED_StandaloneVOILUTStorage\UncompressedOrZlib +PresentationContext187 = RETIRED_StoredPrintStorage\UncompressedOrZlib # # draft non-image SOP classes # -PresentationContext180 = DRAFT_RTBeamsDeliveryInstructionStorage\UncompressedOrZlib -PresentationContext181 = DRAFT_SRAudioStorage\UncompressedOrZlib -PresentationContext182 = DRAFT_SRComprehensiveStorage\UncompressedOrZlib -PresentationContext183 = DRAFT_SRDetailStorage\UncompressedOrZlib -PresentationContext184 = DRAFT_SRTextStorage\UncompressedOrZlib -PresentationContext185 = DRAFT_WaveformStorage\UncompressedOrZlib +PresentationContext188 = DRAFT_RTBeamsDeliveryInstructionStorage\UncompressedOrZlib +PresentationContext189 = DRAFT_SRAudioStorage\UncompressedOrZlib +PresentationContext190 = DRAFT_SRComprehensiveStorage\UncompressedOrZlib +PresentationContext191 = DRAFT_SRDetailStorage\UncompressedOrZlib +PresentationContext192 = DRAFT_SRTextStorage\UncompressedOrZlib +PresentationContext193 = DRAFT_WaveformStorage\UncompressedOrZlib # # DICOS Storage # -PresentationContext186 = DICOS_CTImageStorage\AnyTransferSyntax -PresentationContext187 = DICOS_DigitalXRayImageStorageForPresentation\AnyTransferSyntax -PresentationContext188 = DICOS_DigitalXRayImageStorageForProcessing\AnyTransferSyntax -PresentationContext189 = DICOS_2DAITStorage\AnyTransferSyntax -PresentationContext190 = DICOS_3DAITStorage\AnyTransferSyntax -PresentationContext191 = DICOS_QuadrupoleResonanceStorage\UncompressedOrZlib -PresentationContext192 = DICOS_ThreatDetectionReportStorage\UncompressedOrZlib +PresentationContext194 = DICOS_CTImageStorage\AnyTransferSyntax +PresentationContext195 = DICOS_DigitalXRayImageStorageForPresentation\AnyTransferSyntax +PresentationContext196 = DICOS_DigitalXRayImageStorageForProcessing\AnyTransferSyntax +PresentationContext197 = DICOS_2DAITStorage\AnyTransferSyntax +PresentationContext198 = DICOS_3DAITStorage\AnyTransferSyntax +PresentationContext199 = DICOS_QuadrupoleResonanceStorage\UncompressedOrZlib +PresentationContext200 = DICOS_ThreatDetectionReportStorage\UncompressedOrZlib # # DICONDE Storage # -PresentationContext193 = DICONDE_EddyCurrentImageStorage\AnyTransferSyntax -PresentationContext194 = DICONDE_EddyCurrentMultiframeImageStorage\AnyTransferSyntax +PresentationContext201 = DICONDE_EddyCurrentImageStorage\AnyTransferSyntax +PresentationContext202 = DICONDE_EddyCurrentMultiframeImageStorage\AnyTransferSyntax # ---------------------------------------------------------------------------- @@ -331,6 +363,9 @@ PresentationContext194 = DICONDE_EddyCurrentMultiframeImageStorage\AnyTransferSy # For Ultrasound, we additionally support RLE. # The retired and standalone SOP classes are not supported with this profile. # +# Please do not add any Storage SOP Class that does not fit into the +# PATIENT-STUDY-SERIES-INSTANCE information model. +# PresentationContext1 = ComputedRadiographyImageStorage\JPEGBaseline PresentationContext2 = ComputedRadiographyImageStorage\JPEGLossless PresentationContext3 = ComputedRadiographyImageStorage\Uncompressed @@ -484,7 +519,6 @@ PresentationContext128 = VideoPhotographicImageStorage\MPEG2 # - Comprehensive3DSRStorage # - ContentAssessmentResultsStorage # - CornealTopographyMapStorage -# - CTDefinedProcedureProtocolStorage # - CTPerformedProcedureProtocolStorage # - DeformableSpatialRegistrationStorage # - DermoscopicPhotographyImageStorage @@ -494,20 +528,21 @@ PresentationContext128 = VideoPhotographicImageStorage\MPEG2 # - EncapsulatedMTLStorage # - EncapsulatedOBJStorage # - EncapsulatedSTLStorage +# - EnhancedContinuousRTImageStorage # - EnhancedMRColorImageStorage # - EnhancedPETImageStorage +# - EnhancedRTImageStorage # - EnhancedUSVolumeStorage # - EnhancedXRayRadiationDoseSRStorage # - ExtensibleSRStorage +# - General32BitECGWaveformStorage # - GeneralAudioWaveformStorage -# - GenericImplantTemplateStorage # - GrayscalePlanarMPRVolumetricPresentationStateStorage -# - ImplantAssemblyTemplateStorage # - ImplantationPlanSRStorage -# - ImplantTemplateGroupStorage # - IntraocularLensCalculationsStorage # - IntravascularOpticalCoherenceTomographyImageStorageForPresentation # - IntravascularOpticalCoherenceTomographyImageStorageForProcessing +# - InventoryStorage # - KeratometryMeasurementsStorage # - LegacyConvertedEnhancedCTImageStorage # - LegacyConvertedEnhancedMRImageStorage @@ -526,8 +561,8 @@ PresentationContext128 = VideoPhotographicImageStorage\MPEG2 # - ParametricMapStorage # - PatientRadiationDoseSRStorage # - PerformedImagingAgentAdministrationSRStorage +# - PhotoacousticImageStorage # - PlannedImagingAgentAdministrationSRStorage -# - ProtocolApprovalStorage # - RadiopharmaceuticalRadiationDoseSRStorage # - RealWorldValueMappingStorage # - RespiratoryWaveformStorage @@ -538,6 +573,7 @@ PresentationContext128 = VideoPhotographicImageStorage\MPEG2 # - RTBrachyApplicationSetupDeliveryInstructionStorage # - RTIonBeamsTreatmentRecordStorage # - RTIonPlanStorage +# - RTPatientPositionAcquisitionInstructionStorage # - RTPhysicianIntentStorage # - RTRadiationRecordSetStorage # - RTRadiationSalvageRecordStorage @@ -557,12 +593,12 @@ PresentationContext128 = VideoPhotographicImageStorage\MPEG2 # - TomotherapeuticRadiationRecordStorage # - TomotherapeuticRadiationStorage # - TractographyResultsStorage +# - VariableModalityLUTSoftcopyPresentationStateStorage # - VisualAcuityMeasurementsStorage # - VLWholeSlideMicroscopyImageStorage # - VolumeRenderingVolumetricPresentationStateStorage # - WideFieldOphthalmicPhotographyStereographicProjectionImageStorage # - WideFieldOphthalmicPhotography3DCoordinatesImageStorage -# - XADefinedProcedureProtocolStorage # - XAPerformedProcedureProtocolStorage # - XAXRFGrayscaleSoftcopyPresentationStateStorage # - XRay3DAngiographicImageStorage @@ -611,186 +647,194 @@ Role10 = DigitalMammographyXRayImageStorageForPresentation\BOTH Role11 = DigitalMammographyXRayImageStorageForProcessing\BOTH Role12 = DigitalXRayImageStorageForPresentation\BOTH Role13 = DigitalXRayImageStorageForProcessing\BOTH -Role14 = EnhancedCTImageStorage\BOTH -Role15 = EnhancedMRColorImageStorage\BOTH -Role16 = EnhancedMRImageStorage\BOTH -Role17 = EnhancedPETImageStorage\BOTH -Role18 = EnhancedUSVolumeStorage\BOTH -Role19 = EnhancedXAImageStorage\BOTH -Role20 = EnhancedXRFImageStorage\BOTH -Role21 = IntravascularOpticalCoherenceTomographyImageStorageForPresentation\BOTH -Role22 = IntravascularOpticalCoherenceTomographyImageStorageForProcessing\BOTH -Role23 = LegacyConvertedEnhancedCTImageStorage\BOTH -Role24 = LegacyConvertedEnhancedMRImageStorage\BOTH -Role25 = LegacyConvertedEnhancedPETImageStorage\BOTH -Role26 = MRImageStorage\BOTH -Role27 = MultiframeGrayscaleByteSecondaryCaptureImageStorage\BOTH -Role28 = MultiframeGrayscaleWordSecondaryCaptureImageStorage\BOTH -Role29 = MultiframeSingleBitSecondaryCaptureImageStorage\BOTH -Role30 = MultiframeTrueColorSecondaryCaptureImageStorage\BOTH -Role31 = NuclearMedicineImageStorage\BOTH -Role32 = OphthalmicOpticalCoherenceTomographyEnFaceImageStorage\BOTH -Role33 = OphthalmicPhotography16BitImageStorage\BOTH -Role34 = OphthalmicPhotography8BitImageStorage\BOTH -Role35 = OphthalmicThicknessMapStorage\BOTH -Role36 = OphthalmicTomographyImageStorage\BOTH -Role37 = PositronEmissionTomographyImageStorage\BOTH -Role38 = RTImageStorage\BOTH -Role39 = SecondaryCaptureImageStorage\BOTH -Role40 = UltrasoundImageStorage\BOTH -Role41 = UltrasoundMultiframeImageStorage\BOTH -Role42 = VLEndoscopicImageStorage\BOTH -Role43 = VLMicroscopicImageStorage\BOTH -Role44 = VLPhotographicImageStorage\BOTH -Role45 = VLSlideCoordinatesMicroscopicImageStorage\BOTH -Role46 = VLWholeSlideMicroscopyImageStorage\BOTH -Role47 = VideoEndoscopicImageStorage\BOTH -Role48 = VideoMicroscopicImageStorage\BOTH -Role49 = VideoPhotographicImageStorage\BOTH -Role50 = WideFieldOphthalmicPhotography3DCoordinatesImageStorage\BOTH -Role51 = WideFieldOphthalmicPhotographyStereographicProjectionImageStorage\BOTH -Role52 = XRay3DAngiographicImageStorage\BOTH -Role53 = XRay3DCraniofacialImageStorage\BOTH -Role54 = XRayAngiographicImageStorage\BOTH -Role55 = XRayRadiofluoroscopicImageStorage\BOTH -Role56 = RETIRED_HardcopyColorImageStorage\BOTH -Role57 = RETIRED_HardcopyGrayscaleImageStorage\BOTH -Role58 = RETIRED_NuclearMedicineImageStorage\BOTH -Role59 = RETIRED_UltrasoundImageStorage\BOTH -Role60 = RETIRED_UltrasoundMultiframeImageStorage\BOTH -Role61 = RETIRED_VLImageStorage\BOTH -Role62 = RETIRED_VLMultiframeImageStorage\BOTH -Role63 = RETIRED_XRayAngiographicBiPlaneImageStorage\BOTH -Role64 = AcquisitionContextSRStorage\BOTH -Role65 = AdvancedBlendingPresentationStateStorage\BOTH -Role66 = AmbulatoryECGWaveformStorage\BOTH -Role67 = ArterialPulseWaveformStorage\BOTH -Role68 = AutorefractionMeasurementsStorage\BOTH -Role69 = BasicStructuredDisplayStorage\BOTH -Role70 = BasicTextSRStorage\BOTH -Role71 = BasicVoiceAudioWaveformStorage\BOTH -Role72 = BlendingSoftcopyPresentationStateStorage\BOTH -Role73 = BodyPositionWaveformStorage\BOTH -Role74 = CArmPhotonElectronRadiationRecordStorage\BOTH -Role75 = CArmPhotonElectronRadiationStorage\BOTH -Role76 = CTDefinedProcedureProtocolStorage\BOTH -Role77 = CTPerformedProcedureProtocolStorage\BOTH -Role78 = CardiacElectrophysiologyWaveformStorage\BOTH -Role79 = ChestCADSRStorage\BOTH -Role80 = ColonCADSRStorage\BOTH -Role81 = ColorSoftcopyPresentationStateStorage\BOTH -Role82 = CompositingPlanarMPRVolumetricPresentationStateStorage\BOTH -Role83 = Comprehensive3DSRStorage\BOTH -Role84 = ComprehensiveSRStorage\BOTH -Role85 = ContentAssessmentResultsStorage\BOTH -Role86 = DeformableSpatialRegistrationStorage\BOTH -Role87 = ElectromyogramWaveformStorage\BOTH -Role88 = ElectrooculogramWaveformStorage\BOTH -Role89 = EncapsulatedCDAStorage\BOTH -Role90 = EncapsulatedMTLStorage\BOTH -Role91 = EncapsulatedOBJStorage\BOTH -Role92 = EncapsulatedPDFStorage\BOTH -Role93 = EncapsulatedSTLStorage\BOTH -Role94 = EnhancedSRStorage\BOTH -Role95 = EnhancedXRayRadiationDoseSRStorage\BOTH -Role96 = ExtensibleSRStorage\BOTH -Role97 = GeneralAudioWaveformStorage\BOTH -Role98 = GeneralECGWaveformStorage\BOTH -Role99 = GenericImplantTemplateStorage\BOTH -Role100 = GrayscalePlanarMPRVolumetricPresentationStateStorage\BOTH -Role101 = GrayscaleSoftcopyPresentationStateStorage\BOTH -Role102 = HangingProtocolStorage\BOTH -Role103 = HemodynamicWaveformStorage\BOTH -Role104 = ImplantAssemblyTemplateStorage\BOTH -Role105 = ImplantTemplateGroupStorage\BOTH -Role106 = ImplantationPlanSRStorage\BOTH -Role107 = IntraocularLensCalculationsStorage\BOTH -Role108 = KeratometryMeasurementsStorage\BOTH -Role109 = KeyObjectSelectionDocumentStorage\BOTH -Role110 = LensometryMeasurementsStorage\BOTH -Role111 = MRSpectroscopyStorage\BOTH -Role112 = MacularGridThicknessAndVolumeReportStorage\BOTH -Role113 = MammographyCADSRStorage\BOTH -Role114 = MicroscopyBulkSimpleAnnotationsStorage\BOTH -Role115 = MultichannelRespiratoryWaveformStorage\BOTH -Role116 = MultipleVolumeRenderingVolumetricPresentationStateStorage\BOTH -Role117 = OphthalmicAxialMeasurementsStorage\BOTH -Role118 = OphthalmicOpticalCoherenceTomographyBscanVolumeAnalysisStorage\BOTH -Role119 = OphthalmicVisualFieldStaticPerimetryMeasurementsStorage\BOTH -Role120 = ParametricMapStorage\BOTH -Role121 = PatientRadiationDoseSRStorage\BOTH -Role122 = PerformedImagingAgentAdministrationSRStorage\BOTH -Role123 = PlannedImagingAgentAdministrationSRStorage\BOTH -Role124 = ProcedureLogStorage\BOTH -Role125 = ProtocolApprovalStorage\BOTH -Role126 = PseudoColorSoftcopyPresentationStateStorage\BOTH -Role127 = RTBeamsDeliveryInstructionStorage\BOTH -Role128 = RTBeamsTreatmentRecordStorage\BOTH -Role129 = RTBrachyApplicationSetupDeliveryInstructionStorage\BOTH -Role130 = RTBrachyTreatmentRecordStorage\BOTH -Role131 = RTDoseStorage\BOTH -Role132 = RTIonBeamsTreatmentRecordStorage\BOTH -Role133 = RTIonPlanStorage\BOTH -Role134 = RTPhysicianIntentStorage\BOTH -Role135 = RTPlanStorage\BOTH -Role136 = RTRadiationRecordSetStorage\BOTH -Role137 = RTRadiationSalvageRecordStorage\BOTH -Role138 = RTRadiationSetDeliveryInstructionStorage\BOTH -Role139 = RTRadiationSetStorage\BOTH -Role140 = RTSegmentAnnotationStorage\BOTH -Role141 = RTStructureSetStorage\BOTH -Role142 = RTTreatmentPreparationStorage\BOTH -Role143 = RTTreatmentSummaryRecordStorage\BOTH -Role144 = RadiopharmaceuticalRadiationDoseSRStorage\BOTH -Role145 = RawDataStorage\BOTH -Role146 = RealWorldValueMappingStorage\BOTH -Role147 = RespiratoryWaveformStorage\BOTH -Role148 = RoboticArmRadiationStorage\BOTH -Role149 = RoboticRadiationRecordStorage\BOTH -Role150 = RoutineScalpElectroencephalogramWaveformStorage\BOTH -Role151 = SegmentationStorage\BOTH -Role152 = SegmentedVolumeRenderingVolumetricPresentationStateStorage\BOTH -Role153 = SimplifiedAdultEchoSRStorage\BOTH -Role154 = SleepElectroencephalogramWaveformStorage\BOTH -Role155 = SpatialFiducialsStorage\BOTH -Role156 = SpatialRegistrationStorage\BOTH -Role157 = SpectaclePrescriptionReportStorage\BOTH -Role158 = StereometricRelationshipStorage\BOTH -Role159 = SubjectiveRefractionMeasurementsStorage\BOTH -Role160 = SurfaceScanMeshStorage\BOTH -Role161 = SurfaceScanPointCloudStorage\BOTH -Role162 = SurfaceSegmentationStorage\BOTH -Role163 = TomotherapeuticRadiationRecordStorage\BOTH -Role164 = TomotherapeuticRadiationStorage\BOTH -Role165 = TractographyResultsStorage\BOTH -Role166 = TwelveLeadECGWaveformStorage\BOTH -Role167 = VisualAcuityMeasurementsStorage\BOTH -Role168 = VolumeRenderingVolumetricPresentationStateStorage\BOTH -Role169 = XADefinedProcedureProtocolStorage\BOTH -Role170 = XAPerformedProcedureProtocolStorage\BOTH -Role171 = XAXRFGrayscaleSoftcopyPresentationStateStorage\BOTH -Role172 = XRayRadiationDoseSRStorage\BOTH -Role173 = RETIRED_StandaloneCurveStorage\BOTH -Role174 = RETIRED_StandaloneModalityLUTStorage\BOTH -Role175 = RETIRED_StandaloneOverlayStorage\BOTH -Role176 = RETIRED_StandalonePETCurveStorage\BOTH -Role177 = RETIRED_StandaloneVOILUTStorage\BOTH -Role178 = RETIRED_StoredPrintStorage\BOTH -Role179 = DRAFT_RTBeamsDeliveryInstructionStorage\BOTH -Role180 = DRAFT_SRAudioStorage\BOTH -Role181 = DRAFT_SRComprehensiveStorage\BOTH -Role182 = DRAFT_SRDetailStorage\BOTH -Role183 = DRAFT_SRTextStorage\BOTH -Role184 = DRAFT_WaveformStorage\BOTH -Role185 = DICOS_CTImageStorage\BOTH -Role186 = DICOS_DigitalXRayImageStorageForPresentation\BOTH -Role187 = DICOS_DigitalXRayImageStorageForProcessing\BOTH -Role188 = DICOS_2DAITStorage\BOTH -Role189 = DICOS_3DAITStorage\BOTH -Role190 = DICOS_QuadrupoleResonanceStorage\BOTH -Role191 = DICOS_ThreatDetectionReportStorage\BOTH -Role192 = DICONDE_EddyCurrentImageStorage\BOTH -Role193 = DICONDE_EddyCurrentMultiframeImageStorage\BOTH +Role14 = EnhancedContinuousRTImageStorage\BOTH +Role15 = EnhancedCTImageStorage\BOTH +Role16 = EnhancedMRColorImageStorage\BOTH +Role17 = EnhancedMRImageStorage\BOTH +Role18 = EnhancedPETImageStorage\BOTH +Role19 = EnhancedRTImageStorage\BOTH +Role20 = EnhancedUSVolumeStorage\BOTH +Role21 = EnhancedXAImageStorage\BOTH +Role22 = EnhancedXRFImageStorage\BOTH +Role23 = IntravascularOpticalCoherenceTomographyImageStorageForPresentation\BOTH +Role24 = IntravascularOpticalCoherenceTomographyImageStorageForProcessing\BOTH +Role25 = LegacyConvertedEnhancedCTImageStorage\BOTH +Role26 = LegacyConvertedEnhancedMRImageStorage\BOTH +Role27 = LegacyConvertedEnhancedPETImageStorage\BOTH +Role28 = MRImageStorage\BOTH +Role29 = MultiframeGrayscaleByteSecondaryCaptureImageStorage\BOTH +Role30 = MultiframeGrayscaleWordSecondaryCaptureImageStorage\BOTH +Role31 = MultiframeSingleBitSecondaryCaptureImageStorage\BOTH +Role32 = MultiframeTrueColorSecondaryCaptureImageStorage\BOTH +Role33 = NuclearMedicineImageStorage\BOTH +Role34 = OphthalmicOpticalCoherenceTomographyEnFaceImageStorage\BOTH +Role35 = OphthalmicPhotography16BitImageStorage\BOTH +Role36 = OphthalmicPhotography8BitImageStorage\BOTH +Role37 = OphthalmicThicknessMapStorage\BOTH +Role38 = OphthalmicTomographyImageStorage\BOTH +Role39 = PhotoacousticImageStorage\BOTH +Role40 = PositronEmissionTomographyImageStorage\BOTH +Role41 = RTImageStorage\BOTH +Role42 = SecondaryCaptureImageStorage\BOTH +Role43 = UltrasoundImageStorage\BOTH +Role44 = UltrasoundMultiframeImageStorage\BOTH +Role45 = VLEndoscopicImageStorage\BOTH +Role46 = VLMicroscopicImageStorage\BOTH +Role47 = VLPhotographicImageStorage\BOTH +Role48 = VLSlideCoordinatesMicroscopicImageStorage\BOTH +Role49 = VLWholeSlideMicroscopyImageStorage\BOTH +Role50 = VideoEndoscopicImageStorage\BOTH +Role51 = VideoMicroscopicImageStorage\BOTH +Role52 = VideoPhotographicImageStorage\BOTH +Role53 = WideFieldOphthalmicPhotography3DCoordinatesImageStorage\BOTH +Role54 = WideFieldOphthalmicPhotographyStereographicProjectionImageStorage\BOTH +Role55 = XRay3DAngiographicImageStorage\BOTH +Role56 = XRay3DCraniofacialImageStorage\BOTH +Role57 = XRayAngiographicImageStorage\BOTH +Role58 = XRayRadiofluoroscopicImageStorage\BOTH +Role59 = RETIRED_HardcopyColorImageStorage\BOTH +Role60 = RETIRED_HardcopyGrayscaleImageStorage\BOTH +Role61 = RETIRED_NuclearMedicineImageStorage\BOTH +Role62 = RETIRED_UltrasoundImageStorage\BOTH +Role63 = RETIRED_UltrasoundMultiframeImageStorage\BOTH +Role64 = RETIRED_VLImageStorage\BOTH +Role65 = RETIRED_VLMultiframeImageStorage\BOTH +Role66 = RETIRED_XRayAngiographicBiPlaneImageStorage\BOTH +Role67 = AcquisitionContextSRStorage\BOTH +Role68 = AdvancedBlendingPresentationStateStorage\BOTH +Role69 = AmbulatoryECGWaveformStorage\BOTH +Role70 = ArterialPulseWaveformStorage\BOTH +Role71 = AutorefractionMeasurementsStorage\BOTH +Role72 = BasicStructuredDisplayStorage\BOTH +Role73 = BasicTextSRStorage\BOTH +Role74 = BasicVoiceAudioWaveformStorage\BOTH +Role75 = BlendingSoftcopyPresentationStateStorage\BOTH +Role76 = BodyPositionWaveformStorage\BOTH +Role77 = CArmPhotonElectronRadiationRecordStorage\BOTH +Role78 = CArmPhotonElectronRadiationStorage\BOTH +Role79 = CTDefinedProcedureProtocolStorage\BOTH +Role80 = CTPerformedProcedureProtocolStorage\BOTH +Role81 = CardiacElectrophysiologyWaveformStorage\BOTH +Role82 = ChestCADSRStorage\BOTH +Role83 = ColonCADSRStorage\BOTH +Role84 = ColorPaletteStorage\BOTH +Role85 = ColorSoftcopyPresentationStateStorage\BOTH +Role86 = CompositingPlanarMPRVolumetricPresentationStateStorage\BOTH +Role87 = Comprehensive3DSRStorage\BOTH +Role88 = ComprehensiveSRStorage\BOTH +Role89 = ContentAssessmentResultsStorage\BOTH +Role90 = DeformableSpatialRegistrationStorage\BOTH +Role91 = ElectromyogramWaveformStorage\BOTH +Role92 = ElectrooculogramWaveformStorage\BOTH +Role93 = EncapsulatedCDAStorage\BOTH +Role94 = EncapsulatedMTLStorage\BOTH +Role95 = EncapsulatedOBJStorage\BOTH +Role96 = EncapsulatedPDFStorage\BOTH +Role97 = EncapsulatedSTLStorage\BOTH +Role98 = EnhancedSRStorage\BOTH +Role99 = EnhancedXRayRadiationDoseSRStorage\BOTH +Role100 = ExtensibleSRStorage\BOTH +Role101 = General32BitECGWaveformStorage\BOTH +Role102 = GeneralAudioWaveformStorage\BOTH +Role103 = GeneralECGWaveformStorage\BOTH +Role104 = GenericImplantTemplateStorage\BOTH +Role105 = GrayscalePlanarMPRVolumetricPresentationStateStorage\BOTH +Role106 = GrayscaleSoftcopyPresentationStateStorage\BOTH +Role107 = HangingProtocolStorage\BOTH +Role108 = HemodynamicWaveformStorage\BOTH +Role109 = ImplantAssemblyTemplateStorage\BOTH +Role110 = ImplantTemplateGroupStorage\BOTH +Role111 = ImplantationPlanSRStorage\BOTH +Role112 = IntraocularLensCalculationsStorage\BOTH +Role113 = InventoryStorage\BOTH +Role114 = KeratometryMeasurementsStorage\BOTH +Role115 = KeyObjectSelectionDocumentStorage\BOTH +Role116 = LensometryMeasurementsStorage\BOTH +Role117 = MRSpectroscopyStorage\BOTH +Role118 = MacularGridThicknessAndVolumeReportStorage\BOTH +Role119 = MammographyCADSRStorage\BOTH +Role120 = MicroscopyBulkSimpleAnnotationsStorage\BOTH +Role121 = MultichannelRespiratoryWaveformStorage\BOTH +Role122 = MultipleVolumeRenderingVolumetricPresentationStateStorage\BOTH +Role123 = OphthalmicAxialMeasurementsStorage\BOTH +Role124 = OphthalmicOpticalCoherenceTomographyBscanVolumeAnalysisStorage\BOTH +Role125 = OphthalmicVisualFieldStaticPerimetryMeasurementsStorage\BOTH +Role126 = ParametricMapStorage\BOTH +Role127 = PatientRadiationDoseSRStorage\BOTH +Role128 = PerformedImagingAgentAdministrationSRStorage\BOTH +Role129 = PlannedImagingAgentAdministrationSRStorage\BOTH +Role130 = ProcedureLogStorage\BOTH +Role131 = ProtocolApprovalStorage\BOTH +Role132 = PseudoColorSoftcopyPresentationStateStorage\BOTH +Role133 = RTBeamsDeliveryInstructionStorage\BOTH +Role134 = RTBeamsTreatmentRecordStorage\BOTH +Role135 = RTBrachyApplicationSetupDeliveryInstructionStorage\BOTH +Role136 = RTBrachyTreatmentRecordStorage\BOTH +Role137 = RTDoseStorage\BOTH +Role138 = RTIonBeamsTreatmentRecordStorage\BOTH +Role139 = RTIonPlanStorage\BOTH +Role140 = RTPatientPositionAcquisitionInstructionStorage\BOTH +Role141 = RTPhysicianIntentStorage\BOTH +Role142 = RTPlanStorage\BOTH +Role143 = RTRadiationRecordSetStorage\BOTH +Role144 = RTRadiationSalvageRecordStorage\BOTH +Role145 = RTRadiationSetDeliveryInstructionStorage\BOTH +Role146 = RTRadiationSetStorage\BOTH +Role147 = RTSegmentAnnotationStorage\BOTH +Role148 = RTStructureSetStorage\BOTH +Role149 = RTTreatmentPreparationStorage\BOTH +Role150 = RTTreatmentSummaryRecordStorage\BOTH +Role151 = RadiopharmaceuticalRadiationDoseSRStorage\BOTH +Role152 = RawDataStorage\BOTH +Role153 = RealWorldValueMappingStorage\BOTH +Role154 = RespiratoryWaveformStorage\BOTH +Role155 = RoboticArmRadiationStorage\BOTH +Role156 = RoboticRadiationRecordStorage\BOTH +Role157 = RoutineScalpElectroencephalogramWaveformStorage\BOTH +Role158 = SegmentationStorage\BOTH +Role159 = SegmentedVolumeRenderingVolumetricPresentationStateStorage\BOTH +Role160 = SimplifiedAdultEchoSRStorage\BOTH +Role161 = SleepElectroencephalogramWaveformStorage\BOTH +Role162 = SpatialFiducialsStorage\BOTH +Role163 = SpatialRegistrationStorage\BOTH +Role164 = SpectaclePrescriptionReportStorage\BOTH +Role165 = StereometricRelationshipStorage\BOTH +Role166 = SubjectiveRefractionMeasurementsStorage\BOTH +Role167 = SurfaceScanMeshStorage\BOTH +Role168 = SurfaceScanPointCloudStorage\BOTH +Role169 = SurfaceSegmentationStorage\BOTH +Role170 = TomotherapeuticRadiationRecordStorage\BOTH +Role171 = TomotherapeuticRadiationStorage\BOTH +Role172 = TractographyResultsStorage\BOTH +Role173 = TwelveLeadECGWaveformStorage\BOTH +Role174 = VariableModalityLUTSoftcopyPresentationStateStorage\BOTH +Role175 = VisualAcuityMeasurementsStorage\BOTH +Role176 = VolumeRenderingVolumetricPresentationStateStorage\BOTH +Role177 = XADefinedProcedureProtocolStorage\BOTH +Role178 = XAPerformedProcedureProtocolStorage\BOTH +Role179 = XAXRFGrayscaleSoftcopyPresentationStateStorage\BOTH +Role180 = XRayRadiationDoseSRStorage\BOTH +Role181 = RETIRED_StandaloneCurveStorage\BOTH +Role182 = RETIRED_StandaloneModalityLUTStorage\BOTH +Role183 = RETIRED_StandaloneOverlayStorage\BOTH +Role184 = RETIRED_StandalonePETCurveStorage\BOTH +Role185 = RETIRED_StandaloneVOILUTStorage\BOTH +Role186 = RETIRED_StoredPrintStorage\BOTH +Role187 = DRAFT_RTBeamsDeliveryInstructionStorage\BOTH +Role188 = DRAFT_SRAudioStorage\BOTH +Role189 = DRAFT_SRComprehensiveStorage\BOTH +Role190 = DRAFT_SRDetailStorage\BOTH +Role191 = DRAFT_SRTextStorage\BOTH +Role192 = DRAFT_WaveformStorage\BOTH +Role193 = DICOS_CTImageStorage\BOTH +Role194 = DICOS_DigitalXRayImageStorageForPresentation\BOTH +Role195 = DICOS_DigitalXRayImageStorageForProcessing\BOTH +Role196 = DICOS_2DAITStorage\BOTH +Role197 = DICOS_3DAITStorage\BOTH +Role198 = DICOS_QuadrupoleResonanceStorage\BOTH +Role199 = DICOS_ThreatDetectionReportStorage\BOTH +Role200 = DICONDE_EddyCurrentImageStorage\BOTH +Role201 = DICONDE_EddyCurrentMultiframeImageStorage\BOTH # ============================================================================ [[Profiles]] diff --git a/dcmqrdb/include/dcmtk/dcmqrdb/dcmqrsrv.h b/dcmqrdb/include/dcmtk/dcmqrdb/dcmqrsrv.h index 3c4a9099..24bdef93 100644 --- a/dcmqrdb/include/dcmtk/dcmqrdb/dcmqrsrv.h +++ b/dcmqrdb/include/dcmtk/dcmqrdb/dcmqrsrv.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1993-2017, OFFIS e.V. + * Copyright (C) 1993-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -107,10 +107,10 @@ private: */ OFCondition negotiateAssociation(T_ASC_Association * assoc); - OFCondition refuseAssociation(T_ASC_Association ** assoc, CTN_RefuseReason reason); + OFCondition refuseAssociation(T_ASC_Association ** pAssoc, CTN_RefuseReason reason); OFCondition handleAssociation( - T_ASC_Association * assoc, + T_ASC_Association ** assoc, OFBool correctUIDPadding); OFCondition echoSCP( diff --git a/dcmqrdb/libsrc/dcmqrdbi.cc b/dcmqrdb/libsrc/dcmqrdbi.cc index 991a42c5..ea56c56f 100644 --- a/dcmqrdb/libsrc/dcmqrdbi.cc +++ b/dcmqrdb/libsrc/dcmqrdbi.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1993-2022, OFFIS e.V. + * Copyright (C) 1993-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -3257,7 +3257,12 @@ OFCondition DcmQueryRetrieveIndexDatabaseHandle::makeNewStoreFileName( if (m==NULL) m = "XX"; sprintf(prefix, "%s_", m); // unsigned int seed = fnamecreator.hashString(SOPInstanceUID); - unsigned int seed = (unsigned int)time(NULL); + + // Make seed static so that multiple/concurrent calls to this method + // will not use a seed that is initialized by the same time. Instead, + // rely on a seed that is updated by each call to makeFilename below, thus + // resulting in more "randomness" when called within the same second. + static unsigned int seed = (unsigned int)time(NULL); newImageFileName[0]=0; // return empty string in case of error if (! fnamecreator.makeFilename(seed, handle_->storageArea, prefix, ".dcm", filename)) return QR_EC_IndexDatabaseError; diff --git a/dcmqrdb/libsrc/dcmqrsrv.cc b/dcmqrdb/libsrc/dcmqrsrv.cc index f5f9df66..b95439c0 100644 --- a/dcmqrdb/libsrc/dcmqrsrv.cc +++ b/dcmqrdb/libsrc/dcmqrsrv.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1993-2022, OFFIS e.V. + * Copyright (C) 1993-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -205,13 +205,19 @@ OFCondition DcmQueryRetrieveSCP::dispatch(T_ASC_Association *assoc, OFBool corre } -OFCondition DcmQueryRetrieveSCP::handleAssociation(T_ASC_Association * assoc, OFBool correctUIDPadding) +OFCondition DcmQueryRetrieveSCP::handleAssociation(T_ASC_Association ** pAssoc, OFBool correctUIDPadding) { OFCondition cond = EC_Normal; DIC_NODENAME peerHostName; DIC_AE peerAETitle; DIC_AE myAETitle; OFString temp_str; + T_ASC_Association * assoc; + + if (pAssoc == NULL) { + return EC_IllegalParameter; + } + assoc = *pAssoc; ASC_getPresentationAddresses(assoc->params, peerHostName, sizeof(peerHostName), NULL, 0); ASC_getAPTitles(assoc->params, peerAETitle, sizeof(peerAETitle), myAETitle, sizeof(myAETitle), NULL, 0); @@ -236,7 +242,7 @@ OFCondition DcmQueryRetrieveSCP::handleAssociation(T_ASC_Association * assoc, OF if (cond.bad()) { DCMQRDB_ERROR("Cannot Drop Association: " << DimseCondition::dump(temp_str, cond)); } - cond = ASC_destroyAssociation(&assoc); + cond = ASC_destroyAssociation(pAssoc); if (cond.bad()) { DCMQRDB_ERROR("Cannot Destroy Association: " << DimseCondition::dump(temp_str, cond)); } @@ -1096,7 +1102,7 @@ OFCondition DcmQueryRetrieveSCP::waitForAssociation(T_ASC_Network * theNet) if (options_.singleProcess_) { /* don't spawn a sub-process to handle the association */ - cond = handleAssociation(assoc, options_.correctUIDPadding_); + cond = handleAssociation(&assoc, options_.correctUIDPadding_); } #ifdef HAVE_FORK else @@ -1118,7 +1124,7 @@ OFCondition DcmQueryRetrieveSCP::waitForAssociation(T_ASC_Network * theNet) else { /* child process, handle the association */ - cond = handleAssociation(assoc, options_.correctUIDPadding_); + cond = handleAssociation(&assoc, options_.correctUIDPadding_); /* the child process is done so exit */ exit(0); } diff --git a/dcmrt/apps/Makefile.dep b/dcmrt/apps/Makefile.dep index 1c20d65f..d8d645cd 100644 --- a/dcmrt/apps/Makefile.dep +++ b/dcmrt/apps/Makefile.dep @@ -16,6 +16,10 @@ drtdump.o: drtdump.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/offile.h \ ../../ofstd/include/dcmtk/ofstd/ofstd.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/oflimits.h \ ../../config/include/dcmtk/config/arith.h \ ../../ofstd/include/dcmtk/ofstd/oferror.h \ @@ -34,7 +38,6 @@ drtdump.o: drtdump.cc ../../config/include/dcmtk/config/osconfig.h \ ../../oflog/include/dcmtk/oflog/appender.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -57,10 +60,7 @@ drtdump.o: drtdump.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -123,16 +123,20 @@ drtdump.o: drtdump.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ + ../include/dcmtk/dcmrt/seq/drtars.h ../include/dcmtk/dcmrt/seq/drtarms.h \ ../include/dcmtk/dcmrt/seq/drtbrs.h \ ../include/dcmtk/dcmrt/seq/drtbrcss.h \ + ../include/dcmtk/dcmrt/seq/drtcttcs.h \ ../include/dcmtk/dcmrt/seq/drtcsis.h \ ../include/dcmtk/dcmrt/seq/drtcsrs.h \ ../include/dcmtk/dcmrt/seq/drtcctus.h \ ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \ + ../include/dcmtk/dcmrt/seq/drtidcs.h \ ../include/dcmtk/dcmrt/seq/drtpics.h \ ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \ ../include/dcmtk/dcmrt/seq/drtois.h \ ../include/dcmtk/dcmrt/seq/drtporcs.h \ + ../include/dcmtk/dcmrt/seq/drtudis.h \ ../include/dcmtk/dcmrt/seq/drtcsas.h \ ../include/dcmtk/dcmrt/seq/drtdvhs.h \ ../include/dcmtk/dcmrt/seq/drtdvrrs.h \ @@ -150,8 +154,9 @@ drtdump.o: drtdump.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtiais.h \ ../include/dcmtk/dcmrt/seq/drtiseis.h \ ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \ - ../include/dcmtk/dcmrt/seq/drtmls.h ../include/dcmtk/dcmrt/seq/drtoas.h \ - ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtopis.h \ + ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \ + ../include/dcmtk/dcmrt/seq/drtnmas.h \ + ../include/dcmtk/dcmrt/seq/drtopis.h \ ../include/dcmtk/dcmrt/seq/drtpbcs.h \ ../include/dcmtk/dcmrt/seq/drtpsics.h \ ../include/dcmtk/dcmrt/seq/drtpscs.h \ @@ -163,19 +168,22 @@ drtdump.o: drtdump.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtrsos.h \ ../include/dcmtk/dcmrt/seq/drtporis.h \ ../include/dcmtk/dcmrt/seq/drtprsis.h \ - ../include/dcmtk/dcmrt/seq/drtpsss.h \ + ../include/dcmtk/dcmrt/seq/drtplos.h \ + ../include/dcmtk/dcmrt/seq/drtpros.h \ + ../include/dcmtk/dcmrt/seq/drtrims.h \ + ../include/dcmtk/dcmrt/seq/drtrsss.h \ + ../include/dcmtk/dcmrt/seq/drttscs.h \ + ../include/dcmtk/dcmrt/seq/drtpass.h \ + ../include/dcmtk/dcmrt/seq/drtpasms.h \ ../include/dcmtk/dcmrt/seq/drtpdecs.h \ ../include/dcmtk/dcmrt/seq/drtdias.h \ ../include/dcmtk/dcmrt/seq/drtpdeds.h \ - ../include/dcmtk/dcmrt/seq/drtpcs.h ../include/dcmtk/dcmrt/seq/drtrcs.h \ - ../include/dcmtk/dcmrt/seq/drtcs.h ../include/dcmtk/dcmrt/seq/drtcis.h \ - ../include/dcmtk/dcmrt/seq/drtrdros.h \ + ../include/dcmtk/dcmrt/seq/drtpcs.h \ ../include/dcmtk/dcmrt/seq/drtrwvms.h \ ../include/dcmtk/dcmrt/seq/drtqds.h \ ../include/dcmtk/dcmrt/seq/drtrppcs.h \ - ../include/dcmtk/dcmrt/seq/drtrfors.h \ - ../include/dcmtk/dcmrt/seq/drtrsts.h \ - ../include/dcmtk/dcmrt/seq/drtrses.h ../include/dcmtk/dcmrt/seq/drtris.h \ + ../include/dcmtk/dcmrt/seq/drtrvcs.h \ + ../include/dcmtk/dcmrt/seq/drtrdps.h ../include/dcmtk/dcmrt/seq/drtris.h \ ../include/dcmtk/dcmrt/seq/drtrpphs.h \ ../include/dcmtk/dcmrt/seq/drtdimrs.h \ ../include/dcmtk/dcmrt/seq/drtdirs.h \ @@ -183,15 +191,15 @@ drtdump.o: drtdump.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \ ../include/dcmtk/dcmrt/seq/drtrps.h \ ../include/dcmtk/dcmrt/seq/drtrppss.h \ - ../include/dcmtk/dcmrt/seq/drtrrtps.h \ + ../include/dcmtk/dcmrt/seq/drtrpprs.h \ + ../include/dcmtk/dcmrt/seq/drtrtps1.h \ ../include/dcmtk/dcmrt/seq/drtrfgs.h \ - ../include/dcmtk/dcmrt/seq/drtrbs2.h \ + ../include/dcmtk/dcmrt/seq/drtrbs1.h \ ../include/dcmtk/dcmrt/seq/drtrcps.h \ - ../include/dcmtk/dcmrt/seq/drtrbas2.h \ + ../include/dcmtk/dcmrt/seq/drtrbas1.h \ ../include/dcmtk/dcmrt/seq/drtrsers.h \ - ../include/dcmtk/dcmrt/seq/drtrsrs.h \ - ../include/dcmtk/dcmrt/seq/drtrsss.h ../include/dcmtk/dcmrt/seq/drtrss.h \ - ../include/dcmtk/dcmrt/seq/drtrtrs2.h \ + ../include/dcmtk/dcmrt/seq/drtrsrs.h ../include/dcmtk/dcmrt/seq/drtrss.h \ + ../include/dcmtk/dcmrt/seq/drtrtrs1.h \ ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \ ../include/dcmtk/dcmrt/seq/drtrrpcs.h \ ../include/dcmtk/dcmrt/seq/drtrpcs.h \ @@ -201,48 +209,61 @@ drtdump.o: drtdump.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtspgis.h \ ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \ ../include/dcmtk/dcmrt/seq/drtssrcs.h \ - ../include/dcmtk/dcmrt/seq/drtssrs.h \ - ../include/dcmtk/dcmrt/seq/drtscris.h \ - ../include/dcmtk/dcmrt/seq/drtudis.h ../include/dcmtk/dcmrt/drtimage.h \ + ../include/dcmtk/dcmrt/seq/drtscris.h ../include/dcmtk/dcmrt/drtimage.h \ ../include/dcmtk/dcmrt/seq/drtcbars.h \ ../include/dcmtk/dcmrt/seq/drtads.h ../include/dcmtk/dcmrt/seq/drtbas.h \ - ../include/dcmtk/dcmrt/seq/drtds.h ../include/dcmtk/dcmrt/seq/drtes.h \ - ../include/dcmtk/dcmrt/seq/drtas5.h ../include/dcmtk/dcmrt/seq/drtags.h \ - ../include/dcmtk/dcmrt/seq/drtblds5.h \ - ../include/dcmtk/dcmrt/seq/drtbl5.h ../include/dcmtk/dcmrt/seq/drtgas.h \ + ../include/dcmtk/dcmrt/seq/drtds.h ../include/dcmtk/dcmrt/seq/drteblds.h \ + ../include/dcmtk/dcmrt/seq/drtdtcs.h \ + ../include/dcmtk/dcmrt/seq/drtfbdds.h \ + ../include/dcmtk/dcmrt/seq/drtpbdds.h \ + ../include/dcmtk/dcmrt/seq/drtpbdos.h ../include/dcmtk/dcmrt/seq/drtes.h \ + ../include/dcmtk/dcmrt/seq/drtas2.h ../include/dcmtk/dcmrt/seq/drtags.h \ + ../include/dcmtk/dcmrt/seq/drtblds2.h \ + ../include/dcmtk/dcmrt/seq/drtbl2.h \ + ../include/dcmtk/dcmrt/seq/drteblos.h \ + ../include/dcmtk/dcmrt/seq/drtrbdgs.h \ + ../include/dcmtk/dcmrt/seq/drtgas4.h \ ../include/dcmtk/dcmrt/seq/drtpfms.h ../include/dcmtk/dcmrt/seq/drtfms.h \ + ../include/dcmtk/dcmrt/seq/drtmls.h \ ../include/dcmtk/dcmrt/seq/drtmacds.h \ - ../include/dcmtk/dcmrt/seq/drtcss.h ../include/dcmtk/dcmrt/seq/drtrims.h \ - ../include/dcmtk/dcmrt/seq/drtrrtps5.h \ + ../include/dcmtk/dcmrt/seq/drtcss.h \ + ../include/dcmtk/dcmrt/seq/drtrtps4.h \ ../include/dcmtk/dcmrt/seq/drtsis.h ../include/dcmtk/dcmrt/seq/drtsins.h \ ../include/dcmtk/dcmrt/seq/drtvls.h ../include/dcmtk/dcmrt/drtplan.h \ ../include/dcmtk/dcmrt/seq/drtass.h ../include/dcmtk/dcmrt/seq/drtbads.h \ ../include/dcmtk/dcmrt/seq/drtchs.h ../include/dcmtk/dcmrt/seq/drtbcps.h \ ../include/dcmtk/dcmrt/seq/drtbrdrs.h \ ../include/dcmtk/dcmrt/seq/drtcshs.h \ - ../include/dcmtk/dcmrt/seq/drtrris9.h ../include/dcmtk/dcmrt/seq/drtbs.h \ + ../include/dcmtk/dcmrt/seq/drtrris3.h ../include/dcmtk/dcmrt/seq/drtbs.h \ ../include/dcmtk/dcmrt/seq/drtas1.h \ ../include/dcmtk/dcmrt/seq/drtblds1.h \ - ../include/dcmtk/dcmrt/seq/drtbl2.h ../include/dcmtk/dcmrt/seq/drtcos.h \ + ../include/dcmtk/dcmrt/seq/drtbl1.h ../include/dcmtk/dcmrt/seq/drtcos.h \ ../include/dcmtk/dcmrt/seq/drtcps.h \ ../include/dcmtk/dcmrt/seq/drtbldps.h \ ../include/dcmtk/dcmrt/seq/drtrdrs1.h \ ../include/dcmtk/dcmrt/seq/drtbvcps.h \ ../include/dcmtk/dcmrt/seq/drtrds.h ../include/dcmtk/dcmrt/seq/drtwps.h \ + ../include/dcmtk/dcmrt/seq/drtdfss.h \ + ../include/dcmtk/dcmrt/seq/drtgas2.h \ ../include/dcmtk/dcmrt/seq/drtpvis.h \ ../include/dcmtk/dcmrt/seq/drtrbos1.h \ ../include/dcmtk/dcmrt/seq/drtrris1.h ../include/dcmtk/dcmrt/seq/drtws.h \ ../include/dcmtk/dcmrt/seq/drtdrs.h ../include/dcmtk/dcmrt/seq/drtfgs.h \ - ../include/dcmtk/dcmrt/seq/drtrbs8.h \ - ../include/dcmtk/dcmrt/seq/drtrbas8.h \ - ../include/dcmtk/dcmrt/seq/drtrdrs8.h \ + ../include/dcmtk/dcmrt/seq/drtrbs3.h \ + ../include/dcmtk/dcmrt/seq/drtdccs.h \ + ../include/dcmtk/dcmrt/seq/drtrdcks.h \ + ../include/dcmtk/dcmrt/seq/drtrbas2.h \ + ../include/dcmtk/dcmrt/seq/drtrdrs3.h \ ../include/dcmtk/dcmrt/seq/drtpss.h ../include/dcmtk/dcmrt/seq/drtfds.h \ ../include/dcmtk/dcmrt/seq/drtmss.h ../include/dcmtk/dcmrt/seq/drtrsis.h \ ../include/dcmtk/dcmrt/seq/drtsds.h ../include/dcmtk/dcmrt/seq/drtshds.h \ - ../include/dcmtk/dcmrt/seq/drtrrtps3.h \ - ../include/dcmtk/dcmrt/seq/drtss.h ../include/dcmtk/dcmrt/seq/drttts.h \ + ../include/dcmtk/dcmrt/seq/drtrtps2.h ../include/dcmtk/dcmrt/seq/drtss.h \ + ../include/dcmtk/dcmrt/seq/drttts.h \ ../include/dcmtk/dcmrt/seq/drtbldts.h \ - ../include/dcmtk/dcmrt/seq/drttms9.h ../include/dcmtk/dcmrt/drtstrct.h \ + ../include/dcmtk/dcmrt/seq/drttms1.h ../include/dcmtk/dcmrt/drtstrct.h \ + ../include/dcmtk/dcmrt/seq/drtpsss.h ../include/dcmtk/dcmrt/seq/drtrcs.h \ + ../include/dcmtk/dcmrt/seq/drtcs.h ../include/dcmtk/dcmrt/seq/drtcis.h \ + ../include/dcmtk/dcmrt/seq/drtsppcs.h \ ../include/dcmtk/dcmrt/seq/drtrros.h \ ../include/dcmtk/dcmrt/seq/drtrpps.h \ ../include/dcmtk/dcmrt/seq/drtrecs.h \ @@ -250,48 +271,71 @@ drtdump.o: drtdump.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtsptcs.h \ ../include/dcmtk/dcmrt/seq/drtrrs.h \ ../include/dcmtk/dcmrt/seq/drtrrros.h \ - ../include/dcmtk/dcmrt/seq/drtspccs.h ../include/dcmtk/dcmrt/drttreat.h \ + ../include/dcmtk/dcmrt/seq/drtspccs.h \ + ../include/dcmtk/dcmrt/seq/drttrccs.h \ + ../include/dcmtk/dcmrt/seq/drttrtcs.h \ + ../include/dcmtk/dcmrt/seq/drtrfors.h \ + ../include/dcmtk/dcmrt/seq/drtrsts.h \ + ../include/dcmtk/dcmrt/seq/drtrses.h \ + ../include/dcmtk/dcmrt/seq/drtssrs.h \ + ../include/dcmtk/dcmrt/seq/drtcvis.h \ + ../include/dcmtk/dcmrt/seq/drtdcvs.h \ + ../include/dcmtk/dcmrt/seq/drtcvdas.h \ + ../include/dcmtk/dcmrt/seq/drtafcs.h \ + ../include/dcmtk/dcmrt/seq/drtancs.h \ + ../include/dcmtk/dcmrt/seq/drtscvs.h \ + ../include/dcmtk/dcmrt/seq/drtcvcss.h \ + ../include/dcmtk/dcmrt/seq/drtrdsis.h \ + ../include/dcmtk/dcmrt/seq/drtecvs.h \ + ../include/dcmtk/dcmrt/seq/drtecvis.h \ + ../include/dcmtk/dcmrt/seq/drtosirs.h \ + ../include/dcmtk/dcmrt/seq/drtrdais.h ../include/dcmtk/dcmrt/drttreat.h \ ../include/dcmtk/dcmrt/seq/drtfgss.h \ ../include/dcmtk/dcmrt/seq/drtfsss.h \ - ../include/dcmtk/dcmrt/seq/drtrrtps4.h \ - ../include/dcmtk/dcmrt/seq/drtrtrs4.h \ + ../include/dcmtk/dcmrt/seq/drtrtps3.h \ + ../include/dcmtk/dcmrt/seq/drtrtrs2.h \ ../include/dcmtk/dcmrt/seq/drttscds.h \ ../include/dcmtk/dcmrt/seq/drttsmds.h ../include/dcmtk/dcmrt/drtionpl.h \ - ../include/dcmtk/dcmrt/seq/drtibs.h ../include/dcmtk/dcmrt/seq/drtas6.h \ + ../include/dcmtk/dcmrt/seq/drtibs.h ../include/dcmtk/dcmrt/seq/drtas3.h \ ../include/dcmtk/dcmrt/seq/drtddps.h \ + ../include/dcmtk/dcmrt/seq/drtgas5.h \ ../include/dcmtk/dcmrt/seq/drtiblds.h \ ../include/dcmtk/dcmrt/seq/drtibls.h ../include/dcmtk/dcmrt/seq/drtbss.h \ ../include/dcmtk/dcmrt/seq/drticps.h \ ../include/dcmtk/dcmrt/seq/drtiwps.h \ - ../include/dcmtk/dcmrt/seq/drtlsds6.h \ - ../include/dcmtk/dcmrt/seq/drtrmss6.h \ - ../include/dcmtk/dcmrt/seq/drtrshs6.h \ - ../include/dcmtk/dcmrt/seq/drtrdrs6.h \ + ../include/dcmtk/dcmrt/seq/drtlsds1.h \ + ../include/dcmtk/dcmrt/seq/drtrmss1.h \ + ../include/dcmtk/dcmrt/seq/drtrshs1.h \ + ../include/dcmtk/dcmrt/seq/drtrdrs2.h \ ../include/dcmtk/dcmrt/seq/drtircs.h ../include/dcmtk/dcmrt/seq/drtiws.h \ ../include/dcmtk/dcmrt/seq/drtlsds.h ../include/dcmtk/dcmrt/seq/drtrms.h \ ../include/dcmtk/dcmrt/seq/drtrshs.h \ - ../include/dcmtk/dcmrt/seq/drtrbos6.h \ - ../include/dcmtk/dcmrt/seq/drtrris6.h \ + ../include/dcmtk/dcmrt/seq/drtrbos2.h \ + ../include/dcmtk/dcmrt/seq/drtrris2.h \ ../include/dcmtk/dcmrt/seq/drtsns.h ../include/dcmtk/dcmrt/seq/drtitts.h \ ../include/dcmtk/dcmrt/drtiontr.h ../include/dcmtk/dcmrt/seq/drtcdrs.h \ ../include/dcmtk/dcmrt/seq/drtmdrs.h \ - ../include/dcmtk/dcmrt/seq/drttms0.h \ + ../include/dcmtk/dcmrt/seq/drttms2.h \ ../include/dcmtk/dcmrt/seq/drttsibs.h \ - ../include/dcmtk/dcmrt/seq/drtas7.h \ + ../include/dcmtk/dcmrt/seq/drtas4.h \ ../include/dcmtk/dcmrt/seq/drtbldls.h \ ../include/dcmtk/dcmrt/seq/drtdddps.h \ + ../include/dcmtk/dcmrt/seq/drtgas6.h \ ../include/dcmtk/dcmrt/seq/drticpds.h \ ../include/dcmtk/dcmrt/seq/drtcpas.h \ - ../include/dcmtk/dcmrt/seq/drtlsds7.h ../include/dcmtk/dcmrt/seq/drtos.h \ - ../include/dcmtk/dcmrt/seq/drtrmss7.h \ - ../include/dcmtk/dcmrt/seq/drtrshs7.h \ + ../include/dcmtk/dcmrt/seq/drtlsds2.h ../include/dcmtk/dcmrt/seq/drtos.h \ + ../include/dcmtk/dcmrt/seq/drtrmss2.h \ + ../include/dcmtk/dcmrt/seq/drtrshs2.h \ + ../include/dcmtk/dcmrt/seq/drtmttcs.h \ + ../include/dcmtk/dcmrt/seq/drtttrcs.h \ ../include/dcmtk/dcmrt/seq/drtrbls.h \ + ../include/dcmtk/dcmrt/seq/drtrbss.h \ ../include/dcmtk/dcmrt/seq/drtrcos.h \ ../include/dcmtk/dcmrt/seq/drtrlsds.h \ ../include/dcmtk/dcmrt/seq/drtrrms.h \ ../include/dcmtk/dcmrt/seq/drtrrshs.h \ ../include/dcmtk/dcmrt/seq/drtrsns.h ../include/dcmtk/dcmrt/seq/drtrws.h \ - ../include/dcmtk/dcmrt/seq/drtrbos7.h \ + ../include/dcmtk/dcmrt/seq/drtrbos3.h \ ../include/dcmtk/dcmrt/seq/drtrcdrs.h \ ../include/dcmtk/dcmrt/seq/drtrmdrs.h \ ../include/dcmtk/dcmrt/seq/drtrvis.h diff --git a/dcmrt/apps/drtdump.cc b/dcmrt/apps/drtdump.cc index 52b024b8..c41df107 100644 --- a/dcmrt/apps/drtdump.cc +++ b/dcmrt/apps/drtdump.cc @@ -1,13 +1,13 @@ /* * - * Copyright (c) 2010-2021, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (c) 2010-2022, OFFIS e.V. and ICSMED AG, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Test read and write methods of DICOM RT classes * * Generated manually * File created on 2010-05-10 - * Last modified on 2012-10-09 by Riesmeier + * Last modified on 2023-01-27 by Riesmeier * */ @@ -409,11 +409,11 @@ int main(int argc, char *argv[]) cmd.setOptionColumns(LONGCOL, SHORTCOL); cmd.setParamColumn(LONGCOL + SHORTCOL + 4); - cmd.addParam("drtfile-in", "DICOM RT input filename to be dumped", OFCmdParam::PM_MultiMandatory); + cmd.addParam("drtfile-in", "DICOM RT input filename to be dumped\n(\"-\" for stdin)", OFCmdParam::PM_MultiMandatory); cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2); - cmd.addOption("--help", "-h", "print this help text and exit", OFCommandLine::AF_Exclusive); - cmd.addOption("--version", "print version information and exit", OFCommandLine::AF_Exclusive); + cmd.addOption("--help", "-h", "print this help text and exit", OFCommandLine::AF_Exclusive); + cmd.addOption("--version", "print version information and exit", OFCommandLine::AF_Exclusive); OFLog::addOptions(cmd); cmd.addGroup("input options:"); diff --git a/dcmrt/docs/drtdump.man b/dcmrt/docs/drtdump.man index 3bc5527b..bf42b395 100644 --- a/dcmrt/docs/drtdump.man +++ b/dcmrt/docs/drtdump.man @@ -30,7 +30,7 @@ with a particular transfer syntax. \section drtdump_parameters PARAMETERS \verbatim -drtfile-in DICOM RT input filename to be dumped +drtfile-in DICOM RT input filename to be dumped ("-" for stdin) \endverbatim \section drtdump_options OPTIONS @@ -181,7 +181,7 @@ It is an error if no data dictionary can be loaded. \section drtdump_copyright COPYRIGHT -Copyright (C) 2010-2022 by OFFIS e.V. and ICSMED AG, Escherweg 2, 26121 +Copyright (C) 2010-2023 by OFFIS e.V. and ICSMED AG, Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmrt/include/dcmtk/dcmrt/drmimage.h b/dcmrt/include/dcmtk/dcmrt/drmimage.h index f41d7f36..b2885c26 100644 --- a/dcmrt/include/dcmtk/dcmrt/drmimage.h +++ b/dcmrt/include/dcmtk/dcmrt/drmimage.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2022, OFFIS e.V. + * Copyright (C) 2012-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -71,11 +71,18 @@ public: /** Get the DicomImage instance for this RT Image. * @return the DicomImage instance for this RT Image, may be NULL! */ - DicomImage *getImage() { return image_; } + DicomImage *getImage() + { + return image_; + } + /** Get the DicomImage instance for this RT Image. * @return the DicomImage instance for this RT Image, may be NULL! */ - const DicomImage *getImage() const { return image_; } + const DicomImage *getImage() const + { + return image_; + } /** Get the number of pixels in one row * @return number of pixels in one row diff --git a/dcmrt/include/dcmtk/dcmrt/drtdose.h b/dcmrt/include/dcmtk/dcmrt/drtdose.h index 8c53e2ba..4b734b61 100644 --- a/dcmrt/include/dcmtk/dcmrt/drtdose.h +++ b/dcmrt/include/dcmtk/dcmrt/drtdose.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTDoseIOD * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -19,7 +19,9 @@ #include "dcmtk/dcmrt/drttypes.h" // module-specific helper class #include "dcmtk/dcmrt/seq/drtadcs.h" // for AdmittingDiagnosesCodeSequence +#include "dcmtk/dcmrt/seq/drtars.h" // for AnatomicRegionSequence #include "dcmtk/dcmrt/seq/drtbrs.h" // for BreedRegistrationSequence +#include "dcmtk/dcmrt/seq/drtcttcs.h" // for ClinicalTrialTimePointTypeCodeSequence #include "dcmtk/dcmrt/seq/drtcsis.h" // for CodingSchemeIdentificationSequence #include "dcmtk/dcmrt/seq/drtcctus.h" // for ConsentForClinicalTrialUseSequence #include "dcmtk/dcmrt/seq/drtcpis.h" // for ConsultingPhysicianIdentificationSequence @@ -36,13 +38,13 @@ #include "dcmtk/dcmrt/seq/drtgpis.h" // for GroupOfPatientsIdentificationSequence #include "dcmtk/dcmrt/seq/drthsdrs.h" // for HL7StructuredDocumentReferenceSequence #include "dcmtk/dcmrt/seq/drtiis.h" // for IconImageSequence +#include "dcmtk/dcmrt/seq/drtidcs.h" // for InstitutionalDepartmentTypeCodeSequence #include "dcmtk/dcmrt/seq/drtians.h" // for IssuerOfAccessionNumberSequence #include "dcmtk/dcmrt/seq/drtiais.h" // for IssuerOfAdmissionIDSequence #include "dcmtk/dcmrt/seq/drtipiqs.h" // for IssuerOfPatientIDQualifiersSequence #include "dcmtk/dcmrt/seq/drtiseis.h" // for IssuerOfServiceEpisodeIDSequence #include "dcmtk/dcmrt/seq/drtmps.h" // for MACParametersSequence #include "dcmtk/dcmrt/seq/drtmris.h" // for MappingResourceIdentificationSequence -#include "dcmtk/dcmrt/seq/drtmls.h" // for ModalityLUTSequence #include "dcmtk/dcmrt/seq/drtois.h" // for OperatorIdentificationSequence #include "dcmtk/dcmrt/seq/drtoas.h" // for OriginalAttributesSequence #include "dcmtk/dcmrt/seq/drtopis.h" // for OtherPatientIDsSequence @@ -52,24 +54,25 @@ #include "dcmtk/dcmrt/seq/drtppcs.h" // for PerformedProtocolCodeSequence #include "dcmtk/dcmrt/seq/drtporis.h" // for PhysiciansOfRecordIdentificationSequence #include "dcmtk/dcmrt/seq/drtprsis.h" // for PhysiciansReadingStudyIdentificationSequence -#include "dcmtk/dcmrt/seq/drtpsss.h" // for PredecessorStructureSetSequence +#include "dcmtk/dcmrt/seq/drtplos.h" // for PlanOverviewSequence +#include "dcmtk/dcmrt/seq/drtpass.h" // for PrimaryAnatomicStructureSequence #include "dcmtk/dcmrt/seq/drtpdecs.h" // for PrivateDataElementCharacteristicsSequence #include "dcmtk/dcmrt/seq/drtpcs.h" // for ProcedureCodeSequence -#include "dcmtk/dcmrt/seq/drtrcs.h" // for ROIContourSequence -#include "dcmtk/dcmrt/seq/drtrdros.h" // for RTDoseROISequence #include "dcmtk/dcmrt/seq/drtrwvms.h" // for RealWorldValueMappingSequence #include "dcmtk/dcmrt/seq/drtrppcs.h" // for ReasonForPerformedProcedureCodeSequence -#include "dcmtk/dcmrt/seq/drtrfors.h" // for ReferencedFrameOfReferenceSequence +#include "dcmtk/dcmrt/seq/drtrvcs.h" // for ReasonForVisitCodeSequence +#include "dcmtk/dcmrt/seq/drtrdps.h" // for ReferencedDefinedProtocolSequence #include "dcmtk/dcmrt/seq/drtris.h" // for ReferencedInstanceSequence #include "dcmtk/dcmrt/seq/drtrpphs.h" // for ReferencedPatientPhotoSequence #include "dcmtk/dcmrt/seq/drtrps.h" // for ReferencedPatientSequence #include "dcmtk/dcmrt/seq/drtrppss.h" // for ReferencedPerformedProcedureStepSequence -#include "dcmtk/dcmrt/seq/drtrrtps.h" // for ReferencedRTPlanSequence +#include "dcmtk/dcmrt/seq/drtrpprs.h" // for ReferencedPerformedProtocolSequence +#include "dcmtk/dcmrt/seq/drtrtps1.h" // for ReferencedRTPlanSequence #include "dcmtk/dcmrt/seq/drtrsers.h" // for ReferencedSeriesSequence #include "dcmtk/dcmrt/seq/drtrsrs.h" // for ReferencedSpatialRegistrationSequence #include "dcmtk/dcmrt/seq/drtrsss.h" // for ReferencedStructureSetSequence #include "dcmtk/dcmrt/seq/drtrss.h" // for ReferencedStudySequence -#include "dcmtk/dcmrt/seq/drtrtrs2.h" // for ReferencedTreatmentRecordSequence +#include "dcmtk/dcmrt/seq/drtrtrs1.h" // for ReferencedTreatmentRecordSequence #include "dcmtk/dcmrt/seq/drtrpis.h" // for ReferringPhysicianIdentificationSequence #include "dcmtk/dcmrt/seq/drtras.h" // for RequestAttributesSequence #include "dcmtk/dcmrt/seq/drtrscs.h" // for RequestingServiceCodeSequence @@ -77,7 +80,6 @@ #include "dcmtk/dcmrt/seq/drtspgis.h" // for SourcePatientGroupIdentificationSequence #include "dcmtk/dcmrt/seq/drtscs.h" // for StrainCodeSequence #include "dcmtk/dcmrt/seq/drtsss.h" // for StrainStockSequence -#include "dcmtk/dcmrt/seq/drtssrs.h" // for StructureSetROISequence #include "dcmtk/dcmrt/seq/drtscris.h" // for StudiesContainingOtherReferencedInstancesSequence #include "dcmtk/dcmrt/seq/drtudis.h" // for UDISequence @@ -223,30 +225,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFBool isMultiFrameModulePresent(const OFBool complete = OFFalse); - /** check whether OverlayPlaneModule (U) is present. - * By default, a module is reported as being present if at least one attribute - * from this module has a non-empty value. - * @param complete check for all mandatory attributes of this module if enabled - * @return OFTrue if module is present, OFFalse otherwise - */ - virtual OFBool isOverlayPlaneModulePresent(const OFBool complete = OFFalse); - - /** check whether MultiFrameOverlayModule (U) is present. - * By default, a module is reported as being present if at least one attribute - * from this module has a non-empty value. - * @param complete check for all mandatory attributes of this module if enabled - * @return OFTrue if module is present, OFFalse otherwise - */ - virtual OFBool isMultiFrameOverlayModulePresent(const OFBool complete = OFFalse); - - /** check whether ModalityLUTModule (U) is present. - * By default, a module is reported as being present if at least one attribute - * from this module has a non-empty value. - * @param complete check for all mandatory attributes of this module if enabled - * @return OFTrue if module is present, OFFalse otherwise - */ - virtual OFBool isModalityLUTModulePresent(const OFBool complete = OFFalse); - /** check whether RTDVHModule (U) is present. * By default, a module is reported as being present if at least one attribute * from this module has a non-empty value. @@ -255,30 +233,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFBool isRTDVHModulePresent(const OFBool complete = OFFalse); - /** check whether StructureSetModule (C) is present. - * By default, a module is reported as being present if at least one attribute - * from this module has a non-empty value. - * @param complete check for all mandatory attributes of this module if enabled - * @return OFTrue if module is present, OFFalse otherwise - */ - virtual OFBool isStructureSetModulePresent(const OFBool complete = OFFalse); - - /** check whether ROIContourModule (C) is present. - * By default, a module is reported as being present if at least one attribute - * from this module has a non-empty value. - * @param complete check for all mandatory attributes of this module if enabled - * @return OFTrue if module is present, OFFalse otherwise - */ - virtual OFBool isROIContourModulePresent(const OFBool complete = OFFalse); - - /** check whether RTDoseROIModule (C) is present. - * By default, a module is reported as being present if at least one attribute - * from this module has a non-empty value. - * @param complete check for all mandatory attributes of this module if enabled - * @return OFTrue if module is present, OFFalse otherwise - */ - virtual OFBool isRTDoseROIModulePresent(const OFBool complete = OFFalse); - /** check whether CommonInstanceReferenceModule (U) is present. * By default, a module is reported as being present if at least one attribute * from this module has a non-empty value. @@ -304,41 +258,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFCondition getAccessionNumber(OFString &value, const signed long pos = 0) const; - /** get AcquisitionDate (0008,0022) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition getAcquisitionDate(OFString &value, const signed long pos = 0) const; - - /** get AcquisitionDateTime (0008,002a) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition getAcquisitionDateTime(OFString &value, const signed long pos = 0) const; - - /** get AcquisitionNumber (0020,0012) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition getAcquisitionNumber(OFString &value, const signed long pos = 0) const; - - /** get AcquisitionNumber (0020,0012) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition getAcquisitionNumber(Sint32 &value, const unsigned long pos = 0) const; - - /** get AcquisitionTime (0008,0032) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition getAcquisitionTime(OFString &value, const signed long pos = 0) const; - /** get AdditionalPatientHistory (0010,21b0) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -374,6 +293,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFCondition getAuthorizationEquipmentCertificationNumber(OFString &value, const signed long pos = 0) const; + /** get BarcodeValue (2200,0005) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getBarcodeValue(OFString &value, const signed long pos = 0) const; + /** get BitsAllocated (0028,0100) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1) @@ -611,6 +537,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFCondition getDeviceSerialNumber(OFString &value, const signed long pos = 0) const; + /** get DeviceUID (0018,1002) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getDeviceUID(OFString &value, const signed long pos = 0) const; + /** get DoseComment (3004,0006) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -653,6 +586,20 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFCondition getDoseUnits(OFString &value, const signed long pos = 0) const; + /** get EncapsulatedPixelDataValueTotalLength (7fe0,0003) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getEncapsulatedPixelDataValueTotalLength(Uint64 &value, const unsigned long pos = 0) const; + + /** get EntityLongLabel (3010,0038) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getEntityLongLabel(OFString &value, const signed long pos = 0) const; + /** get EthnicGroup (0010,2160) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -660,6 +607,20 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFCondition getEthnicGroup(OFString &value, const signed long pos = 0) const; + /** get ExtendedOffsetTable (7fe0,0001) + * @param value reference to variable in which the value should be stored + * @param count stores number of items in the result array (if not NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getExtendedOffsetTable(Uint64 *&value, unsigned long *count = NULL) const; + + /** get ExtendedOffsetTableLengths (7fe0,0002) + * @param value reference to variable in which the value should be stored + * @param count stores number of items in the result array (if not NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getExtendedOffsetTableLengths(Uint64 *&value, unsigned long *count = NULL) const; + /** get FrameIncrementPointer (0028,0009) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -736,12 +697,12 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFCondition getImageComments(OFString &value, const signed long pos = 0) const; - /** get ImageFrameOrigin (60xx,0051) + /** get ImageLaterality (0020,0062) * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) + * @param pos index of the value to get (0..vm-1), -1 for all components * @return status, EC_Normal if successful, an error code otherwise */ - virtual OFCondition getImageFrameOrigin(Uint16 &value, const unsigned long pos = 0) const; + virtual OFCondition getImageLaterality(OFString &value, const signed long pos = 0) const; /** get ImageOrientationPatient (0020,0037) * @param value reference to variable in which the value should be stored @@ -790,20 +751,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFCondition getImageType(OFString &value, const signed long pos = 0) const; - /** get ImagesInAcquisition (0020,1002) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition getImagesInAcquisition(OFString &value, const signed long pos = 0) const; - - /** get ImagesInAcquisition (0020,1002) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition getImagesInAcquisition(Sint32 &value, const unsigned long pos = 0) const; - /** get InstanceCoercionDateTime (0008,0015) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -846,6 +793,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFCondition getInstanceNumber(Sint32 &value, const unsigned long pos = 0) const; + /** get InstanceOriginStatus (0400,0600) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getInstanceOriginStatus(OFString &value, const signed long pos = 0) const; + /** get InstitutionAddress (0008,0081) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -867,13 +821,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFCondition getInstitutionalDepartmentName(OFString &value, const signed long pos = 0) const; - /** get IrradiationEventUID (0008,3010) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition getIrradiationEventUID(OFString &value, const signed long pos = 0) const; - /** get IssuerOfPatientID (0010,0021) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -957,6 +904,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFCondition getManufacturer(OFString &value, const signed long pos = 0) const; + /** get ManufacturerDeviceClassUID (0018,100b) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getManufacturerDeviceClassUID(OFString &value, const signed long pos = 0) const; + /** get ManufacturerModelName (0008,1090) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -1047,20 +1001,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFCondition getNumberOfFrames(Sint32 &value, const unsigned long pos = 0) const; - /** get NumberOfFramesInOverlay (60xx,0015) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition getNumberOfFramesInOverlay(OFString &value, const signed long pos = 0) const; - - /** get NumberOfFramesInOverlay (60xx,0015) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition getNumberOfFramesInOverlay(Sint32 &value, const unsigned long pos = 0) const; - /** get Occupation (0010,2180) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -1089,69 +1029,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFCondition getOtherPatientNames(OFString &value, const signed long pos = 0) const; - /** get OverlayBitPosition (60xx,0102) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition getOverlayBitPosition(Uint16 &value, const unsigned long pos = 0) const; - - /** get OverlayBitsAllocated (60xx,0100) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition getOverlayBitsAllocated(Uint16 &value, const unsigned long pos = 0) const; - - /** get OverlayColumns (60xx,0011) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition getOverlayColumns(Uint16 &value, const unsigned long pos = 0) const; - - /** get OverlayDescription (60xx,0022) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition getOverlayDescription(OFString &value, const signed long pos = 0) const; - - /** get OverlayLabel (60xx,1500) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition getOverlayLabel(OFString &value, const signed long pos = 0) const; - - /** get OverlayOrigin (60xx,0050) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition getOverlayOrigin(Sint16 &value, const unsigned long pos = 0) const; - - /** get OverlayRows (60xx,0010) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition getOverlayRows(Uint16 &value, const unsigned long pos = 0) const; - - /** get OverlaySubtype (60xx,0045) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition getOverlaySubtype(OFString &value, const signed long pos = 0) const; - - /** get OverlayType (60xx,0040) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition getOverlayType(OFString &value, const signed long pos = 0) const; - /** get PatientAge (0010,1010) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -1473,47 +1350,12 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFCondition getQueryRetrieveView(OFString &value, const signed long pos = 0) const; - /** get ROIArea (60xx,1301) + /** get ReasonForVisit (0032,1066) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components * @return status, EC_Normal if successful, an error code otherwise */ - virtual OFCondition getROIArea(OFString &value, const signed long pos = 0) const; - - /** get ROIArea (60xx,1301) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition getROIArea(Sint32 &value, const unsigned long pos = 0) const; - - /** get ROIMean (60xx,1302) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition getROIMean(OFString &value, const signed long pos = 0) const; - - /** get ROIMean (60xx,1302) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition getROIMean(Float64 &value, const unsigned long pos = 0) const; - - /** get ROIStandardDeviation (60xx,1303) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition getROIStandardDeviation(OFString &value, const signed long pos = 0) const; - - /** get ROIStandardDeviation (60xx,1303) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition getROIStandardDeviation(Float64 &value, const unsigned long pos = 0) const; + virtual OFCondition getReasonForVisit(OFString &value, const signed long pos = 0) const; /** get RecognizableVisualFeatures (0028,0302) * @param value reference to variable in which the value should be stored @@ -1550,40 +1392,12 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFCondition getRelatedGeneralSOPClassUID(OFString &value, const signed long pos = 0) const; - /** get RescaleIntercept (0028,1052) + /** get RequestingService (0032,1033) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components * @return status, EC_Normal if successful, an error code otherwise */ - virtual OFCondition getRescaleIntercept(OFString &value, const signed long pos = 0) const; - - /** get RescaleIntercept (0028,1052) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition getRescaleIntercept(Float64 &value, const unsigned long pos = 0) const; - - /** get RescaleSlope (0028,1053) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition getRescaleSlope(OFString &value, const signed long pos = 0) const; - - /** get RescaleSlope (0028,1053) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition getRescaleSlope(Float64 &value, const unsigned long pos = 0) const; - - /** get RescaleType (0028,1054) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition getRescaleType(OFString &value, const signed long pos = 0) const; + virtual OFCondition getRequestingService(OFString &value, const signed long pos = 0) const; /** get ResponsibleOrganization (0010,2299) * @param value reference to variable in which the value should be stored @@ -1760,6 +1574,20 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFCondition getSoftwareVersions(OFString &value, const signed long pos = 0) const; + /** get SpacingBetweenSlices (0018,0088) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getSpacingBetweenSlices(OFString &value, const signed long pos = 0) const; + + /** get SpacingBetweenSlices (0018,0088) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getSpacingBetweenSlices(Float64 &value, const unsigned long pos = 0) const; + /** get SpatialResolution (0018,1050) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -1823,41 +1651,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFCondition getStrainNomenclature(OFString &value, const signed long pos = 0) const; - /** get StructureSetDate (3006,0008) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition getStructureSetDate(OFString &value, const signed long pos = 0) const; - - /** get StructureSetDescription (3006,0006) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition getStructureSetDescription(OFString &value, const signed long pos = 0) const; - - /** get StructureSetLabel (3006,0002) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition getStructureSetLabel(OFString &value, const signed long pos = 0) const; - - /** get StructureSetName (3006,0004) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition getStructureSetName(OFString &value, const signed long pos = 0) const; - - /** get StructureSetTime (3006,0009) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition getStructureSetTime(OFString &value, const signed long pos = 0) const; - /** get StudyDate (0008,0020) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -1900,19 +1693,33 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFCondition getTimeOfLastCalibration(OFString &value, const signed long pos = 0) const; - /** get TimezoneOffsetFromUTC (0008,0201) + /** get TimezoneOffsetFromUTC (0008,0201) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getTimezoneOffsetFromUTC(OFString &value, const signed long pos = 0) const; + + /** get TissueHeterogeneityCorrection (3004,0014) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getTissueHeterogeneityCorrection(OFString &value, const signed long pos = 0) const; + + /** get TreatmentSessionUID (300a,0700) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components * @return status, EC_Normal if successful, an error code otherwise */ - virtual OFCondition getTimezoneOffsetFromUTC(OFString &value, const signed long pos = 0) const; + virtual OFCondition getTreatmentSessionUID(OFString &value, const signed long pos = 0) const; - /** get TissueHeterogeneityCorrection (3004,0014) + /** get TypeOfPatientID (0010,0022) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components * @return status, EC_Normal if successful, an error code otherwise */ - virtual OFCondition getTissueHeterogeneityCorrection(OFString &value, const signed long pos = 0) const; + virtual OFCondition getTypeOfPatientID(OFString &value, const signed long pos = 0) const; // --- get pixel data element --- @@ -1942,6 +1749,18 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD const DRTAdmittingDiagnosesCodeSequence &getAdmittingDiagnosesCodeSequence() const { return AdmittingDiagnosesCodeSequence; } + /** get AnatomicRegionSequence (0008,2218) + * @return reference to sequence element + */ + DRTAnatomicRegionSequence &getAnatomicRegionSequence() + { return AnatomicRegionSequence; } + + /** get AnatomicRegionSequence (0008,2218) + * @return const reference to sequence element + */ + const DRTAnatomicRegionSequence &getAnatomicRegionSequence() const + { return AnatomicRegionSequence; } + /** get BreedRegistrationSequence (0010,2294) * @return reference to sequence element */ @@ -1954,6 +1773,18 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD const DRTBreedRegistrationSequence &getBreedRegistrationSequence() const { return BreedRegistrationSequence; } + /** get ClinicalTrialTimePointTypeCodeSequence (0012,0054) + * @return reference to sequence element + */ + DRTClinicalTrialTimePointTypeCodeSequence &getClinicalTrialTimePointTypeCodeSequence() + { return ClinicalTrialTimePointTypeCodeSequence; } + + /** get ClinicalTrialTimePointTypeCodeSequence (0012,0054) + * @return const reference to sequence element + */ + const DRTClinicalTrialTimePointTypeCodeSequence &getClinicalTrialTimePointTypeCodeSequence() const + { return ClinicalTrialTimePointTypeCodeSequence; } + /** get CodingSchemeIdentificationSequence (0008,0110) * @return reference to sequence element */ @@ -2146,6 +1977,18 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD const DRTIconImageSequence &getIconImageSequence() const { return IconImageSequence; } + /** get InstitutionalDepartmentTypeCodeSequence (0008,1041) + * @return reference to sequence element + */ + DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() + { return InstitutionalDepartmentTypeCodeSequence; } + + /** get InstitutionalDepartmentTypeCodeSequence (0008,1041) + * @return const reference to sequence element + */ + const DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() const + { return InstitutionalDepartmentTypeCodeSequence; } + /** get IssuerOfAccessionNumberSequence (0008,0051) * @return reference to sequence element */ @@ -2218,18 +2061,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD const DRTMappingResourceIdentificationSequence &getMappingResourceIdentificationSequence() const { return MappingResourceIdentificationSequence; } - /** get ModalityLUTSequence (0028,3000) - * @return reference to sequence element - */ - DRTModalityLUTSequence &getModalityLUTSequence() - { return ModalityLUTSequence; } - - /** get ModalityLUTSequence (0028,3000) - * @return const reference to sequence element - */ - const DRTModalityLUTSequence &getModalityLUTSequence() const - { return ModalityLUTSequence; } - /** get OperatorIdentificationSequence (0008,1072) * @return reference to sequence element */ @@ -2338,17 +2169,29 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD const DRTPhysiciansReadingStudyIdentificationSequence &getPhysiciansReadingStudyIdentificationSequence() const { return PhysiciansReadingStudyIdentificationSequence; } - /** get PredecessorStructureSetSequence (3006,0018) + /** get PlanOverviewSequence (300c,0116) + * @return reference to sequence element + */ + DRTPlanOverviewSequence &getPlanOverviewSequence() + { return PlanOverviewSequence; } + + /** get PlanOverviewSequence (300c,0116) + * @return const reference to sequence element + */ + const DRTPlanOverviewSequence &getPlanOverviewSequence() const + { return PlanOverviewSequence; } + + /** get PrimaryAnatomicStructureSequence (0008,2228) * @return reference to sequence element */ - DRTPredecessorStructureSetSequence &getPredecessorStructureSetSequence() - { return PredecessorStructureSetSequence; } + DRTPrimaryAnatomicStructureSequence &getPrimaryAnatomicStructureSequence() + { return PrimaryAnatomicStructureSequence; } - /** get PredecessorStructureSetSequence (3006,0018) + /** get PrimaryAnatomicStructureSequence (0008,2228) * @return const reference to sequence element */ - const DRTPredecessorStructureSetSequence &getPredecessorStructureSetSequence() const - { return PredecessorStructureSetSequence; } + const DRTPrimaryAnatomicStructureSequence &getPrimaryAnatomicStructureSequence() const + { return PrimaryAnatomicStructureSequence; } /** get PrivateDataElementCharacteristicsSequence (0008,0300) * @return reference to sequence element @@ -2374,30 +2217,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD const DRTProcedureCodeSequence &getProcedureCodeSequence() const { return ProcedureCodeSequence; } - /** get ROIContourSequence (3006,0039) - * @return reference to sequence element - */ - DRTROIContourSequence &getROIContourSequence() - { return ROIContourSequence; } - - /** get ROIContourSequence (3006,0039) - * @return const reference to sequence element - */ - const DRTROIContourSequence &getROIContourSequence() const - { return ROIContourSequence; } - - /** get RTDoseROISequence (3004,0010) - * @return reference to sequence element - */ - DRTRTDoseROISequence &getRTDoseROISequence() - { return RTDoseROISequence; } - - /** get RTDoseROISequence (3004,0010) - * @return const reference to sequence element - */ - const DRTRTDoseROISequence &getRTDoseROISequence() const - { return RTDoseROISequence; } - /** get RealWorldValueMappingSequence (0040,9096) * @return reference to sequence element */ @@ -2422,17 +2241,29 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD const DRTReasonForPerformedProcedureCodeSequence &getReasonForPerformedProcedureCodeSequence() const { return ReasonForPerformedProcedureCodeSequence; } - /** get ReferencedFrameOfReferenceSequence (3006,0010) + /** get ReasonForVisitCodeSequence (0032,1067) + * @return reference to sequence element + */ + DRTReasonForVisitCodeSequence &getReasonForVisitCodeSequence() + { return ReasonForVisitCodeSequence; } + + /** get ReasonForVisitCodeSequence (0032,1067) + * @return const reference to sequence element + */ + const DRTReasonForVisitCodeSequence &getReasonForVisitCodeSequence() const + { return ReasonForVisitCodeSequence; } + + /** get ReferencedDefinedProtocolSequence (0018,990c) * @return reference to sequence element */ - DRTReferencedFrameOfReferenceSequence &getReferencedFrameOfReferenceSequence() - { return ReferencedFrameOfReferenceSequence; } + DRTReferencedDefinedProtocolSequence &getReferencedDefinedProtocolSequence() + { return ReferencedDefinedProtocolSequence; } - /** get ReferencedFrameOfReferenceSequence (3006,0010) + /** get ReferencedDefinedProtocolSequence (0018,990c) * @return const reference to sequence element */ - const DRTReferencedFrameOfReferenceSequence &getReferencedFrameOfReferenceSequence() const - { return ReferencedFrameOfReferenceSequence; } + const DRTReferencedDefinedProtocolSequence &getReferencedDefinedProtocolSequence() const + { return ReferencedDefinedProtocolSequence; } /** get ReferencedInstanceSequence (0008,114a) * @return reference to sequence element @@ -2482,6 +2313,18 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD const DRTReferencedPerformedProcedureStepSequence &getReferencedPerformedProcedureStepSequence() const { return ReferencedPerformedProcedureStepSequence; } + /** get ReferencedPerformedProtocolSequence (0018,990d) + * @return reference to sequence element + */ + DRTReferencedPerformedProtocolSequence &getReferencedPerformedProtocolSequence() + { return ReferencedPerformedProtocolSequence; } + + /** get ReferencedPerformedProtocolSequence (0018,990d) + * @return const reference to sequence element + */ + const DRTReferencedPerformedProtocolSequence &getReferencedPerformedProtocolSequence() const + { return ReferencedPerformedProtocolSequence; } + /** get ReferencedRTPlanSequence (300c,0002) * @return reference to sequence element */ @@ -2638,18 +2481,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD const DRTStrainStockSequence &getStrainStockSequence() const { return StrainStockSequence; } - /** get StructureSetROISequence (3006,0020) - * @return reference to sequence element - */ - DRTStructureSetROISequence &getStructureSetROISequence() - { return StructureSetROISequence; } - - /** get StructureSetROISequence (3006,0020) - * @return const reference to sequence element - */ - const DRTStructureSetROISequence &getStructureSetROISequence() const - { return StructureSetROISequence; } - /** get StudiesContainingOtherReferencedInstancesSequence (0008,1200) * @return reference to sequence element */ @@ -2683,34 +2514,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFCondition setAccessionNumber(const OFString &value, const OFBool check = OFTrue); - /** set AcquisitionDate (0008,0022) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (DA) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition setAcquisitionDate(const OFString &value, const OFBool check = OFTrue); - - /** set AcquisitionDateTime (0008,002a) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition setAcquisitionDateTime(const OFString &value, const OFBool check = OFTrue); - - /** set AcquisitionNumber (0020,0012) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition setAcquisitionNumber(const OFString &value, const OFBool check = OFTrue); - - /** set AcquisitionTime (0008,0032) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (TM) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition setAcquisitionTime(const OFString &value, const OFBool check = OFTrue); - /** set AdditionalPatientHistory (0010,21b0) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (LT) and VM (1) if enabled @@ -2746,6 +2549,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFCondition setAuthorizationEquipmentCertificationNumber(const OFString &value, const OFBool check = OFTrue); + /** set BarcodeValue (2200,0005) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setBarcodeValue(const OFString &value, const OFBool check = OFTrue); + /** set BitsAllocated (0028,0100) * @param value value to be set (should be valid for this VR) * @param pos index of the value to be set (0..vm-1), vm=1 @@ -2963,6 +2773,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFCondition setDeviceSerialNumber(const OFString &value, const OFBool check = OFTrue); + /** set DeviceUID (0018,1002) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setDeviceUID(const OFString &value, const OFBool check = OFTrue); + /** set DoseComment (3004,0006) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled @@ -2998,6 +2815,20 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFCondition setDoseUnits(const OFString &value, const OFBool check = OFTrue); + /** set EncapsulatedPixelDataValueTotalLength (7fe0,0003) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setEncapsulatedPixelDataValueTotalLength(const Uint64 value, const unsigned long pos = 0); + + /** set EntityLongLabel (3010,0038) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setEntityLongLabel(const OFString &value, const OFBool check = OFTrue); + /** set EthnicGroup (0010,2160) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled @@ -3005,6 +2836,20 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFCondition setEthnicGroup(const OFString &value, const OFBool check = OFTrue); + /** set ExtendedOffsetTable (7fe0,0001) + * @param value array value to be set (data is copied) + * @param count number of items in the array + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setExtendedOffsetTable(const Uint64 *value, const unsigned long count); + + /** set ExtendedOffsetTableLengths (7fe0,0002) + * @param value array value to be set (data is copied) + * @param count number of items in the array + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setExtendedOffsetTableLengths(const Uint64 *value, const unsigned long count); + /** set FrameIncrementPointer (0028,0009) * @param value value to be set (possibly multi-valued) or "" for no value * @param check check 'value' for conformance with VR (AT) and VM (1-n) if enabled @@ -3068,12 +2913,12 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFCondition setImageComments(const OFString &value, const OFBool check = OFTrue); - /** set ImageFrameOrigin (60xx,0051) - * @param value value to be set (should be valid for this VR) - * @param pos index of the value to be set (0..vm-1), vm=1 + /** set ImageLaterality (0020,0062) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled * @return status, EC_Normal if successful, an error code otherwise */ - virtual OFCondition setImageFrameOrigin(const Uint16 value, const unsigned long pos = 0); + virtual OFCondition setImageLaterality(const OFString &value, const OFBool check = OFTrue); /** set ImageOrientationPatient (0020,0037) * @param value value to be set (possibly multi-valued) or "" for no value @@ -3096,13 +2941,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFCondition setImageType(const OFString &value, const OFBool check = OFTrue); - /** set ImagesInAcquisition (0020,1002) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition setImagesInAcquisition(const OFString &value, const OFBool check = OFTrue); - /** set InstanceCoercionDateTime (0008,0015) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled @@ -3138,6 +2976,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFCondition setInstanceNumber(const OFString &value, const OFBool check = OFTrue); + /** set InstanceOriginStatus (0400,0600) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setInstanceOriginStatus(const OFString &value, const OFBool check = OFTrue); + /** set InstitutionAddress (0008,0081) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (ST) and VM (1) if enabled @@ -3159,13 +3004,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFCondition setInstitutionalDepartmentName(const OFString &value, const OFBool check = OFTrue); - /** set IrradiationEventUID (0008,3010) - * @param value value to be set (possibly multi-valued) or "" for no value - * @param check check 'value' for conformance with VR (UI) and VM (1-n) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition setIrradiationEventUID(const OFString &value, const OFBool check = OFTrue); - /** set IssuerOfPatientID (0010,0021) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled @@ -3236,6 +3074,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFCondition setManufacturer(const OFString &value, const OFBool check = OFTrue); + /** set ManufacturerDeviceClassUID (0018,100b) + * @param value value to be set (possibly multi-valued) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1-n) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setManufacturerDeviceClassUID(const OFString &value, const OFBool check = OFTrue); + /** set ManufacturerModelName (0008,1090) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled @@ -3292,13 +3137,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFCondition setNumberOfFrames(const OFString &value, const OFBool check = OFTrue); - /** set NumberOfFramesInOverlay (60xx,0015) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition setNumberOfFramesInOverlay(const OFString &value, const OFBool check = OFTrue); - /** set Occupation (0010,2180) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled @@ -3327,69 +3165,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFCondition setOtherPatientNames(const OFString &value, const OFBool check = OFTrue); - /** set OverlayBitPosition (60xx,0102) - * @param value value to be set (should be valid for this VR) - * @param pos index of the value to be set (0..vm-1), vm=1 - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition setOverlayBitPosition(const Uint16 value, const unsigned long pos = 0); - - /** set OverlayBitsAllocated (60xx,0100) - * @param value value to be set (should be valid for this VR) - * @param pos index of the value to be set (0..vm-1), vm=1 - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition setOverlayBitsAllocated(const Uint16 value, const unsigned long pos = 0); - - /** set OverlayColumns (60xx,0011) - * @param value value to be set (should be valid for this VR) - * @param pos index of the value to be set (0..vm-1), vm=1 - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition setOverlayColumns(const Uint16 value, const unsigned long pos = 0); - - /** set OverlayDescription (60xx,0022) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition setOverlayDescription(const OFString &value, const OFBool check = OFTrue); - - /** set OverlayLabel (60xx,1500) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition setOverlayLabel(const OFString &value, const OFBool check = OFTrue); - - /** set OverlayOrigin (60xx,0050) - * @param value value to be set (should be valid for this VR) - * @param pos index of the value to be set (0..vm-1), vm=2 - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition setOverlayOrigin(const Sint16 value, const unsigned long pos = 0); - - /** set OverlayRows (60xx,0010) - * @param value value to be set (should be valid for this VR) - * @param pos index of the value to be set (0..vm-1), vm=1 - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition setOverlayRows(const Uint16 value, const unsigned long pos = 0); - - /** set OverlaySubtype (60xx,0045) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition setOverlaySubtype(const OFString &value, const OFBool check = OFTrue); - - /** set OverlayType (60xx,0040) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition setOverlayType(const OFString &value, const OFBool check = OFTrue); - /** set PatientAge (0010,1010) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (AS) and VM (1) if enabled @@ -3670,26 +3445,12 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFCondition setQueryRetrieveView(const OFString &value, const OFBool check = OFTrue); - /** set ROIArea (60xx,1301) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition setROIArea(const OFString &value, const OFBool check = OFTrue); - - /** set ROIMean (60xx,1302) + /** set ReasonForVisit (0032,1066) * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition setROIMean(const OFString &value, const OFBool check = OFTrue); - - /** set ROIStandardDeviation (60xx,1303) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled + * @param check check 'value' for conformance with VR (UT) and VM (1) if enabled * @return status, EC_Normal if successful, an error code otherwise */ - virtual OFCondition setROIStandardDeviation(const OFString &value, const OFBool check = OFTrue); + virtual OFCondition setReasonForVisit(const OFString &value, const OFBool check = OFTrue); /** set RecognizableVisualFeatures (0028,0302) * @param value value to be set (single value only) or "" for no value @@ -3726,26 +3487,12 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFCondition setRelatedGeneralSOPClassUID(const OFString &value, const OFBool check = OFTrue); - /** set RescaleIntercept (0028,1052) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition setRescaleIntercept(const OFString &value, const OFBool check = OFTrue); - - /** set RescaleSlope (0028,1053) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition setRescaleSlope(const OFString &value, const OFBool check = OFTrue); - - /** set RescaleType (0028,1054) + /** set RequestingService (0032,1033) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled * @return status, EC_Normal if successful, an error code otherwise */ - virtual OFCondition setRescaleType(const OFString &value, const OFBool check = OFTrue); + virtual OFCondition setRequestingService(const OFString &value, const OFBool check = OFTrue); /** set ResponsibleOrganization (0010,2299) * @param value value to be set (single value only) or "" for no value @@ -3901,6 +3648,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFCondition setSoftwareVersions(const OFString &value, const OFBool check = OFTrue); + /** set SpacingBetweenSlices (0018,0088) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setSpacingBetweenSlices(const OFString &value, const OFBool check = OFTrue); + /** set SpatialResolution (0018,1050) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled @@ -3957,41 +3711,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFCondition setStrainNomenclature(const OFString &value, const OFBool check = OFTrue); - /** set StructureSetDate (3006,0008) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (DA) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition setStructureSetDate(const OFString &value, const OFBool check = OFTrue); - - /** set StructureSetDescription (3006,0006) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (ST) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition setStructureSetDescription(const OFString &value, const OFBool check = OFTrue); - - /** set StructureSetLabel (3006,0002) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition setStructureSetLabel(const OFString &value, const OFBool check = OFTrue); - - /** set StructureSetName (3006,0004) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition setStructureSetName(const OFString &value, const OFBool check = OFTrue); - - /** set StructureSetTime (3006,0009) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (TM) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - virtual OFCondition setStructureSetTime(const OFString &value, const OFBool check = OFTrue); - /** set StudyDate (0008,0020) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (DA) and VM (1) if enabled @@ -4048,9 +3767,19 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD */ virtual OFCondition setTissueHeterogeneityCorrection(const OFString &value, const OFBool check = OFTrue); - // --- all other attributes (without get/set methods) --- + /** set TreatmentSessionUID (300a,0700) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setTreatmentSessionUID(const OFString &value, const OFBool check = OFTrue); - // - OverlayData (60xx,3000) + /** set TypeOfPatientID (0010,0022) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setTypeOfPatientID(const OFString &value, const OFBool check = OFTrue); protected: @@ -4082,6 +3811,8 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD DcmLongString IssuerOfPatientID; /// IssuerOfPatientIDQualifiersSequence (0010,0024) vr=SQ, vm=1, type=3 DRTIssuerOfPatientIDQualifiersSequence IssuerOfPatientIDQualifiersSequence; + /// TypeOfPatientID (0010,0022) vr=CS, vm=1, type=3 + DcmCodeString TypeOfPatientID; /// PatientBirthDate (0010,0030) vr=DA, vm=1, type=2 DcmDate PatientBirthDate; /// PatientBirthDateInAlternativeCalendar (0010,0033) vr=LO, vm=1, type=3 @@ -4200,6 +3931,8 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD DcmPersonName NameOfPhysiciansReadingStudy; /// PhysiciansReadingStudyIdentificationSequence (0008,1062) vr=SQ, vm=1, type=3 DRTPhysiciansReadingStudyIdentificationSequence PhysiciansReadingStudyIdentificationSequence; + /// RequestingService (0032,1033) vr=LO, vm=1, type=3 + DcmLongString RequestingService; /// RequestingServiceCodeSequence (0032,1034) vr=SQ, vm=1, type=3 DRTRequestingServiceCodeSequence RequestingServiceCodeSequence; /// ReferencedStudySequence (0008,1110) vr=SQ, vm=1, type=3 @@ -4249,6 +3982,10 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD DcmLongString AdmissionID; /// IssuerOfAdmissionIDSequence (0038,0014) vr=SQ, vm=1, type=3 DRTIssuerOfAdmissionIDSequence IssuerOfAdmissionIDSequence; + /// ReasonForVisit (0032,1066) vr=UT, vm=1, type=3 + DcmUnlimitedText ReasonForVisit; + /// ReasonForVisitCodeSequence (0032,1067) vr=SQ, vm=1, type=3 + DRTReasonForVisitCodeSequence ReasonForVisitCodeSequence; /// ServiceEpisodeID (0038,0060) vr=LO, vm=1, type=3 DcmLongString ServiceEpisodeID; /// IssuerOfServiceEpisodeIDSequence (0038,0064) vr=SQ, vm=1, type=3 @@ -4264,6 +4001,8 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD DcmLongString ClinicalTrialTimePointID; /// ClinicalTrialTimePointDescription (0012,0051) vr=ST, vm=1, type=3 DcmShortText ClinicalTrialTimePointDescription; + /// ClinicalTrialTimePointTypeCodeSequence (0012,0054) vr=SQ, vm=1, type=3 + DRTClinicalTrialTimePointTypeCodeSequence ClinicalTrialTimePointTypeCodeSequence; /// LongitudinalTemporalOffsetFromEvent (0012,0052) vr=FD, vm=1, type=3 DcmFloatingPointDouble LongitudinalTemporalOffsetFromEvent; /// LongitudinalTemporalEventType (0012,0053) vr=CS, vm=1, type=1C @@ -4311,6 +4050,8 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD DRTPerformedProtocolCodeSequence PerformedProtocolCodeSequence; /// CommentsOnThePerformedProcedureStep (0040,0280) vr=ST, vm=1, type=3 DcmShortText CommentsOnThePerformedProcedureStep; + /// TreatmentSessionUID (300a,0700) vr=UI, vm=1, type=3 + DcmUniqueIdentifier TreatmentSessionUID; // --- ClinicalTrialSeriesModule (U) --- @@ -4340,8 +4081,12 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD DcmShortString StationName; /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3 DcmLongString InstitutionalDepartmentName; + /// InstitutionalDepartmentTypeCodeSequence (0008,1041) vr=SQ, vm=1, type=3 + DRTInstitutionalDepartmentTypeCodeSequence InstitutionalDepartmentTypeCodeSequence; /// ManufacturerModelName (0008,1090) vr=LO, vm=1, type=3 DcmLongString ManufacturerModelName; + /// ManufacturerDeviceClassUID (0018,100b) vr=UI, vm=1-n, type=3 + DcmUniqueIdentifier ManufacturerDeviceClassUID; /// DeviceSerialNumber (0018,1000) vr=LO, vm=1, type=3 DcmLongString DeviceSerialNumber; /// SoftwareVersions (0018,1020) vr=LO, vm=1-n, type=3 @@ -4350,6 +4095,8 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD DcmLongString GantryID; /// UDISequence (0018,100a) vr=SQ, vm=1, type=3 DRTUDISequence UDISequence; + /// DeviceUID (0018,1002) vr=UI, vm=1, type=3 + DcmUniqueIdentifier DeviceUID; /// SpatialResolution (0018,1050) vr=DS, vm=1, type=3 DcmDecimalString SpatialResolution; /// DateOfLastCalibration (0018,1200) vr=DA, vm=1-n, type=3 @@ -4362,7 +4109,7 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD // --- GeneralImageModule (C) --- // InstanceNumber (0020,0013) vr=IS, vm=1, type=2 - // - also defined in: RTDoseModule, StructureSetModule, SOPCommonModule + // - also defined in: RTDoseModule, SOPCommonModule // DcmIntegerString InstanceNumber; /// PatientOrientation (0020,0020) vr=CS, vm=2, type=2C DcmCodeString PatientOrientation; @@ -4374,16 +4121,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD // DcmTime ContentTime; /// ImageType (0008,0008) vr=CS, vm=2-n, type=3 DcmCodeString ImageType; - /// AcquisitionNumber (0020,0012) vr=IS, vm=1, type=3 - DcmIntegerString AcquisitionNumber; - /// AcquisitionDate (0008,0022) vr=DA, vm=1, type=3 - DcmDate AcquisitionDate; - /// AcquisitionTime (0008,0032) vr=TM, vm=1, type=3 - DcmTime AcquisitionTime; - /// AcquisitionDateTime (0008,002a) vr=DT, vm=1, type=3 - DcmDateTime AcquisitionDateTime; - /// ImagesInAcquisition (0020,1002) vr=IS, vm=1, type=3 - DcmIntegerString ImagesInAcquisition; /// ImageComments (0020,4000) vr=LT, vm=1, type=3 DcmLongText ImageComments; /// QualityControlImage (0028,0300) vr=CS, vm=1, type=3 @@ -4402,10 +4139,14 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD DRTIconImageSequence IconImageSequence; /// PresentationLUTShape (2050,0020) vr=CS, vm=1, type=3 DcmCodeString PresentationLUTShape; - /// IrradiationEventUID (0008,3010) vr=UI, vm=1-n, type=3 - DcmUniqueIdentifier IrradiationEventUID; /// RealWorldValueMappingSequence (0040,9096) vr=SQ, vm=1, type=3 DRTRealWorldValueMappingSequence RealWorldValueMappingSequence; + /// ImageLaterality (0020,0062) vr=CS, vm=1, type=3 + DcmCodeString ImageLaterality; + /// AnatomicRegionSequence (0008,2218) vr=SQ, vm=1, type=3 + DRTAnatomicRegionSequence AnatomicRegionSequence; + /// PrimaryAnatomicStructureSequence (0008,2228) vr=SQ, vm=1, type=3 + DRTPrimaryAnatomicStructureSequence PrimaryAnatomicStructureSequence; // --- ImagePlaneModule (C) --- @@ -4417,6 +4158,8 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD DcmDecimalString ImagePositionPatient; /// SliceThickness (0018,0050) vr=DS, vm=1, type=2 DcmDecimalString SliceThickness; + /// SpacingBetweenSlices (0018,0088) vr=DS, vm=1, type=3 + DcmDecimalString SpacingBetweenSlices; /// SliceLocation (0020,1041) vr=DS, vm=1, type=3 DcmDecimalString SliceLocation; @@ -4474,6 +4217,10 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD DcmUniversalResourceIdentifierOrLocator PixelDataProviderURL; /// PixelPaddingRangeLimit (0028,0121) vr=US/SS, vm=1, type=1C DcmUnsignedShort PixelPaddingRangeLimit; + /// ExtendedOffsetTable (7fe0,0001) vr=OV, vm=1, type=3 + DcmOther64bitVeryLong ExtendedOffsetTable; + /// ExtendedOffsetTableLengths (7fe0,0002) vr=OV, vm=1, type=1C + DcmOther64bitVeryLong ExtendedOffsetTableLengths; // --- MultiFrameModule (C) --- @@ -4483,53 +4230,8 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD DcmAttributeTag FrameIncrementPointer; /// StereoPairsPresent (0022,0028) vr=CS, vm=1, type=3 DcmCodeString StereoPairsPresent; - - // --- OverlayPlaneModule (U) --- - - /// OverlayRows (60xx,0010) vr=US, vm=1, type=1 - DcmUnsignedShort OverlayRows; - /// OverlayColumns (60xx,0011) vr=US, vm=1, type=1 - DcmUnsignedShort OverlayColumns; - /// OverlayType (60xx,0040) vr=CS, vm=1, type=1 - DcmCodeString OverlayType; - /// OverlayOrigin (60xx,0050) vr=SS, vm=2, type=1 - DcmSignedShort OverlayOrigin; - /// OverlayBitsAllocated (60xx,0100) vr=US, vm=1, type=1 - DcmUnsignedShort OverlayBitsAllocated; - /// OverlayBitPosition (60xx,0102) vr=US, vm=1, type=1 - DcmUnsignedShort OverlayBitPosition; - /// OverlayData (60xx,3000) vr=OB/OW, vm=1, type=1 - DcmOtherByteOtherWord OverlayData; - /// OverlayDescription (60xx,0022) vr=LO, vm=1, type=3 - DcmLongString OverlayDescription; - /// OverlaySubtype (60xx,0045) vr=LO, vm=1, type=3 - DcmLongString OverlaySubtype; - /// OverlayLabel (60xx,1500) vr=LO, vm=1, type=3 - DcmLongString OverlayLabel; - /// ROIArea (60xx,1301) vr=IS, vm=1, type=3 - DcmIntegerString ROIArea; - /// ROIMean (60xx,1302) vr=DS, vm=1, type=3 - DcmDecimalString ROIMean; - /// ROIStandardDeviation (60xx,1303) vr=DS, vm=1, type=3 - DcmDecimalString ROIStandardDeviation; - - // --- MultiFrameOverlayModule (U) --- - - /// NumberOfFramesInOverlay (60xx,0015) vr=IS, vm=1, type=1 - DcmIntegerString NumberOfFramesInOverlay; - /// ImageFrameOrigin (60xx,0051) vr=US, vm=1, type=3 - DcmUnsignedShort ImageFrameOrigin; - - // --- ModalityLUTModule (U) --- - - /// ModalityLUTSequence (0028,3000) vr=SQ, vm=1, type=1C - DRTModalityLUTSequence ModalityLUTSequence; - /// RescaleIntercept (0028,1052) vr=DS, vm=1, type=1C - DcmDecimalString RescaleIntercept; - /// RescaleSlope (0028,1053) vr=DS, vm=1, type=1C - DcmDecimalString RescaleSlope; - /// RescaleType (0028,1054) vr=LO, vm=1, type=1C - DcmLongString RescaleType; + /// EncapsulatedPixelDataValueTotalLength (7fe0,0003) vr=UV, vm=1, type=3 + DcmUnsigned64bitVeryLong EncapsulatedPixelDataValueTotalLength; // --- RTDoseModule (M) --- @@ -4566,8 +4268,10 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD /// ReferencedSpatialRegistrationSequence (0070,0404) vr=SQ, vm=1, type=2C DRTReferencedSpatialRegistrationSequence ReferencedSpatialRegistrationSequence; /// InstanceNumber (0020,0013) vr=IS, vm=1, type=3 - /// - also defined in: GeneralImageModule, StructureSetModule, SOPCommonModule + /// - also defined in: GeneralImageModule, SOPCommonModule DcmIntegerString InstanceNumber; + /// EntityLongLabel (3010,0038) vr=LO, vm=1, type=3 + DcmLongString EntityLongLabel; /// DoseComment (3004,0006) vr=LO, vm=1, type=3 DcmLongString DoseComment; /// NormalizationPoint (3004,0008) vr=DS, vm=3, type=3 @@ -4588,6 +4292,8 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD DRTDerivationCodeSequence DerivationCodeSequence; /// ReferencedInstanceSequence (0008,114a) vr=SQ, vm=1, type=3 DRTReferencedInstanceSequence ReferencedInstanceSequence; + /// PlanOverviewSequence (300c,0116) vr=SQ, vm=1, type=1C + DRTPlanOverviewSequence PlanOverviewSequence; // --- RTDVHModule (U) --- @@ -4600,38 +4306,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD /// DVHSequence (3004,0050) vr=SQ, vm=1, type=1 DRTDVHSequence DVHSequence; - // --- StructureSetModule (C) --- - - /// StructureSetLabel (3006,0002) vr=SH, vm=1, type=1 - DcmShortString StructureSetLabel; - /// StructureSetName (3006,0004) vr=LO, vm=1, type=3 - DcmLongString StructureSetName; - /// StructureSetDescription (3006,0006) vr=ST, vm=1, type=3 - DcmShortText StructureSetDescription; - // InstanceNumber (0020,0013) vr=IS, vm=1, type=3 - // - also defined in: GeneralImageModule, RTDoseModule, SOPCommonModule - // DcmIntegerString InstanceNumber; - /// StructureSetDate (3006,0008) vr=DA, vm=1, type=2 - DcmDate StructureSetDate; - /// StructureSetTime (3006,0009) vr=TM, vm=1, type=2 - DcmTime StructureSetTime; - /// ReferencedFrameOfReferenceSequence (3006,0010) vr=SQ, vm=1, type=3 - DRTReferencedFrameOfReferenceSequence ReferencedFrameOfReferenceSequence; - /// StructureSetROISequence (3006,0020) vr=SQ, vm=1, type=1 - DRTStructureSetROISequence StructureSetROISequence; - /// PredecessorStructureSetSequence (3006,0018) vr=SQ, vm=1, type=3 - DRTPredecessorStructureSetSequence PredecessorStructureSetSequence; - - // --- ROIContourModule (C) --- - - /// ROIContourSequence (3006,0039) vr=SQ, vm=1, type=1 - DRTROIContourSequence ROIContourSequence; - - // --- RTDoseROIModule (C) --- - - /// RTDoseROISequence (3004,0010) vr=SQ, vm=1, type=1 - DRTRTDoseROISequence RTDoseROISequence; - // --- SOPCommonModule (M) --- /// SOPClassUID (0008,0016) vr=UI, vm=1, type=1 @@ -4663,7 +4337,7 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD /// ContributingEquipmentSequence (0018,a001) vr=SQ, vm=1, type=3 DRTContributingEquipmentSequence ContributingEquipmentSequence; // InstanceNumber (0020,0013) vr=IS, vm=1, type=3 - // - also defined in: GeneralImageModule, RTDoseModule, StructureSetModule + // - also defined in: GeneralImageModule, RTDoseModule // DcmIntegerString InstanceNumber; /// SOPInstanceStatus (0100,0410) vr=CS, vm=1, type=3 DcmCodeString SOPInstanceStatus; @@ -4693,6 +4367,14 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD DcmCodeString ContentQualification; /// PrivateDataElementCharacteristicsSequence (0008,0300) vr=SQ, vm=1, type=3 DRTPrivateDataElementCharacteristicsSequence PrivateDataElementCharacteristicsSequence; + /// InstanceOriginStatus (0400,0600) vr=CS, vm=1, type=3 + DcmCodeString InstanceOriginStatus; + /// BarcodeValue (2200,0005) vr=LT, vm=1, type=3 + DcmLongText BarcodeValue; + /// ReferencedDefinedProtocolSequence (0018,990c) vr=SQ, vm=1, type=1C + DRTReferencedDefinedProtocolSequence ReferencedDefinedProtocolSequence; + /// ReferencedPerformedProtocolSequence (0018,990d) vr=SQ, vm=1, type=1C + DRTReferencedPerformedProtocolSequence ReferencedPerformedProtocolSequence; // --- CommonInstanceReferenceModule (U) --- diff --git a/dcmrt/include/dcmtk/dcmrt/drtimage.h b/dcmrt/include/dcmtk/dcmrt/drtimage.h index 2c45d766..0c322107 100644 --- a/dcmrt/include/dcmtk/dcmrt/drtimage.h +++ b/dcmrt/include/dcmtk/dcmrt/drtimage.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2021, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTImageIOD * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -19,7 +19,9 @@ #include "dcmtk/dcmrt/drttypes.h" // module-specific helper class #include "dcmtk/dcmrt/seq/drtadcs.h" // for AdmittingDiagnosesCodeSequence +#include "dcmtk/dcmrt/seq/drtars.h" // for AnatomicRegionSequence #include "dcmtk/dcmrt/seq/drtbrs.h" // for BreedRegistrationSequence +#include "dcmtk/dcmrt/seq/drtcttcs.h" // for ClinicalTrialTimePointTypeCodeSequence #include "dcmtk/dcmrt/seq/drtcsis.h" // for CodingSchemeIdentificationSequence #include "dcmtk/dcmrt/seq/drtcctus.h" // for ConsentForClinicalTrialUseSequence #include "dcmtk/dcmrt/seq/drtcpis.h" // for ConsultingPhysicianIdentificationSequence @@ -33,6 +35,7 @@ #include "dcmtk/dcmrt/seq/drtds.h" // for DeviceSequence #include "dcmtk/dcmrt/seq/drtdss.h" // for DigitalSignaturesSequence #include "dcmtk/dcmrt/seq/drteas.h" // for EncryptedAttributesSequence +#include "dcmtk/dcmrt/seq/drteblds.h" // for EnhancedRTBeamLimitingDeviceSequence #include "dcmtk/dcmrt/seq/drtes.h" // for ExposureSequence #include "dcmtk/dcmrt/seq/drtfms.h" // for FluenceMapSequence #include "dcmtk/dcmrt/seq/drtfes.h" // for FrameExtractionSequence @@ -40,6 +43,7 @@ #include "dcmtk/dcmrt/seq/drtgpis.h" // for GroupOfPatientsIdentificationSequence #include "dcmtk/dcmrt/seq/drthsdrs.h" // for HL7StructuredDocumentReferenceSequence #include "dcmtk/dcmrt/seq/drtiis.h" // for IconImageSequence +#include "dcmtk/dcmrt/seq/drtidcs.h" // for InstitutionalDepartmentTypeCodeSequence #include "dcmtk/dcmrt/seq/drtians.h" // for IssuerOfAccessionNumberSequence #include "dcmtk/dcmrt/seq/drtiais.h" // for IssuerOfAdmissionIDSequence #include "dcmtk/dcmrt/seq/drtipiqs.h" // for IssuerOfPatientIDQualifiersSequence @@ -57,16 +61,20 @@ #include "dcmtk/dcmrt/seq/drtppcs.h" // for PerformedProtocolCodeSequence #include "dcmtk/dcmrt/seq/drtporis.h" // for PhysiciansOfRecordIdentificationSequence #include "dcmtk/dcmrt/seq/drtprsis.h" // for PhysiciansReadingStudyIdentificationSequence +#include "dcmtk/dcmrt/seq/drtpass.h" // for PrimaryAnatomicStructureSequence #include "dcmtk/dcmrt/seq/drtpdecs.h" // for PrivateDataElementCharacteristicsSequence #include "dcmtk/dcmrt/seq/drtpcs.h" // for ProcedureCodeSequence #include "dcmtk/dcmrt/seq/drtrwvms.h" // for RealWorldValueMappingSequence #include "dcmtk/dcmrt/seq/drtrppcs.h" // for ReasonForPerformedProcedureCodeSequence +#include "dcmtk/dcmrt/seq/drtrvcs.h" // for ReasonForVisitCodeSequence +#include "dcmtk/dcmrt/seq/drtrdps.h" // for ReferencedDefinedProtocolSequence #include "dcmtk/dcmrt/seq/drtrims.h" // for ReferencedImageSequence #include "dcmtk/dcmrt/seq/drtris.h" // for ReferencedInstanceSequence #include "dcmtk/dcmrt/seq/drtrpphs.h" // for ReferencedPatientPhotoSequence #include "dcmtk/dcmrt/seq/drtrps.h" // for ReferencedPatientSequence #include "dcmtk/dcmrt/seq/drtrppss.h" // for ReferencedPerformedProcedureStepSequence -#include "dcmtk/dcmrt/seq/drtrrtps5.h" // for ReferencedRTPlanSequence +#include "dcmtk/dcmrt/seq/drtrpprs.h" // for ReferencedPerformedProtocolSequence +#include "dcmtk/dcmrt/seq/drtrtps4.h" // for ReferencedRTPlanSequence #include "dcmtk/dcmrt/seq/drtrsers.h" // for ReferencedSeriesSequence #include "dcmtk/dcmrt/seq/drtrss.h" // for ReferencedStudySequence #include "dcmtk/dcmrt/seq/drtrpis.h" // for ReferringPhysicianIdentificationSequence @@ -82,7 +90,6 @@ #include "dcmtk/dcmrt/seq/drtudis.h" // for UDISequence #include "dcmtk/dcmrt/seq/drtvls.h" // for VOILUTSequence -#include /** Interface class for RTImageIOD * @note Because of its many member variables, an instance of this class requires quite @@ -304,6 +311,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD */ virtual OFCondition getAcquisitionDateTime(OFString &value, const signed long pos = 0) const; + /** get AcquisitionDuration (0018,9073) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getAcquisitionDuration(Float64 &value, const unsigned long pos = 0) const; + /** get AcquisitionNumber (0020,0012) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -325,6 +339,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD */ virtual OFCondition getAcquisitionTime(OFString &value, const signed long pos = 0) const; + /** get AcquisitionUID (0008,0017) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getAcquisitionUID(OFString &value, const signed long pos = 0) const; + /** get ActualFrameDuration (0018,1242) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -381,6 +402,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD */ virtual OFCondition getAuthorizationEquipmentCertificationNumber(OFString &value, const signed long pos = 0) const; + /** get BarcodeValue (2200,0005) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getBarcodeValue(OFString &value, const signed long pos = 0) const; + /** get BeamLimitingDeviceAngle (300a,0120) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -743,6 +771,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD */ virtual OFCondition getDeviceSerialNumber(OFString &value, const signed long pos = 0) const; + /** get DeviceUID (0018,1002) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getDeviceUID(OFString &value, const signed long pos = 0) const; + /** get EffectiveDuration (0018,0072) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -757,6 +792,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD */ virtual OFCondition getEffectiveDuration(Float64 &value, const unsigned long pos = 0) const; + /** get EncapsulatedPixelDataValueTotalLength (7fe0,0003) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getEncapsulatedPixelDataValueTotalLength(Uint64 &value, const unsigned long pos = 0) const; + /** get EndCumulativeMetersetWeight (300c,0009) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -771,6 +813,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD */ virtual OFCondition getEndCumulativeMetersetWeight(Float64 &value, const unsigned long pos = 0) const; + /** get EnhancedRTBeamLimitingDeviceDefinitionFlag (3008,00a3) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getEnhancedRTBeamLimitingDeviceDefinitionFlag(OFString &value, const signed long pos = 0) const; + /** get EthnicGroup (0010,2160) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -799,6 +848,20 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD */ virtual OFCondition getExposureTimeInms(Float64 &value, const unsigned long pos = 0) const; + /** get ExtendedOffsetTable (7fe0,0001) + * @param value reference to variable in which the value should be stored + * @param count stores number of items in the result array (if not NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getExtendedOffsetTable(Uint64 *&value, unsigned long *count = NULL) const; + + /** get ExtendedOffsetTableLengths (7fe0,0002) + * @param value reference to variable in which the value should be stored + * @param count stores number of items in the result array (if not NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getExtendedOffsetTableLengths(Uint64 *&value, unsigned long *count = NULL) const; + /** get FractionNumber (3002,0029) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -938,6 +1001,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD */ virtual OFCondition getImageComments(OFString &value, const signed long pos = 0) const; + /** get ImageLaterality (0020,0062) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getImageLaterality(OFString &value, const signed long pos = 0) const; + /** get ImagePlanePixelSpacing (3002,0011) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -1035,6 +1105,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD */ virtual OFCondition getInstanceNumber(Sint32 &value, const unsigned long pos = 0) const; + /** get InstanceOriginStatus (0400,0600) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getInstanceOriginStatus(OFString &value, const signed long pos = 0) const; + /** get InstitutionAddress (0008,0081) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -1166,6 +1243,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD */ virtual OFCondition getManufacturer(OFString &value, const signed long pos = 0) const; + /** get ManufacturerDeviceClassUID (0018,100b) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getManufacturerDeviceClassUID(OFString &value, const signed long pos = 0) const; + /** get ManufacturerModelName (0008,1090) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -1745,6 +1829,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD */ virtual OFCondition getRadiationMachineSSD(Float64 &value, const unsigned long pos = 0) const; + /** get ReasonForVisit (0032,1066) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getReasonForVisit(OFString &value, const signed long pos = 0) const; + /** get RecognizableVisualFeatures (0028,0302) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -1829,6 +1920,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD */ virtual OFCondition getReportedValuesOrigin(OFString &value, const signed long pos = 0) const; + /** get RequestingService (0032,1033) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getRequestingService(OFString &value, const signed long pos = 0) const; + /** get RescaleIntercept (0028,1052) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -2277,6 +2375,20 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD */ virtual OFCondition getTimezoneOffsetFromUTC(OFString &value, const signed long pos = 0) const; + /** get TreatmentSessionUID (300a,0700) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getTreatmentSessionUID(OFString &value, const signed long pos = 0) const; + + /** get TypeOfPatientID (0010,0022) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getTypeOfPatientID(OFString &value, const signed long pos = 0) const; + /** get VOILUTFunction (0028,1056) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -2393,6 +2505,18 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD const DRTAdmittingDiagnosesCodeSequence &getAdmittingDiagnosesCodeSequence() const { return AdmittingDiagnosesCodeSequence; } + /** get AnatomicRegionSequence (0008,2218) + * @return reference to sequence element + */ + DRTAnatomicRegionSequence &getAnatomicRegionSequence() + { return AnatomicRegionSequence; } + + /** get AnatomicRegionSequence (0008,2218) + * @return const reference to sequence element + */ + const DRTAnatomicRegionSequence &getAnatomicRegionSequence() const + { return AnatomicRegionSequence; } + /** get BreedRegistrationSequence (0010,2294) * @return reference to sequence element */ @@ -2405,6 +2529,18 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD const DRTBreedRegistrationSequence &getBreedRegistrationSequence() const { return BreedRegistrationSequence; } + /** get ClinicalTrialTimePointTypeCodeSequence (0012,0054) + * @return reference to sequence element + */ + DRTClinicalTrialTimePointTypeCodeSequence &getClinicalTrialTimePointTypeCodeSequence() + { return ClinicalTrialTimePointTypeCodeSequence; } + + /** get ClinicalTrialTimePointTypeCodeSequence (0012,0054) + * @return const reference to sequence element + */ + const DRTClinicalTrialTimePointTypeCodeSequence &getClinicalTrialTimePointTypeCodeSequence() const + { return ClinicalTrialTimePointTypeCodeSequence; } + /** get CodingSchemeIdentificationSequence (0008,0110) * @return reference to sequence element */ @@ -2561,6 +2697,18 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD const DRTEncryptedAttributesSequence &getEncryptedAttributesSequence() const { return EncryptedAttributesSequence; } + /** get EnhancedRTBeamLimitingDeviceSequence (3008,00a1) + * @return reference to sequence element + */ + DRTEnhancedRTBeamLimitingDeviceSequence &getEnhancedRTBeamLimitingDeviceSequence() + { return EnhancedRTBeamLimitingDeviceSequence; } + + /** get EnhancedRTBeamLimitingDeviceSequence (3008,00a1) + * @return const reference to sequence element + */ + const DRTEnhancedRTBeamLimitingDeviceSequence &getEnhancedRTBeamLimitingDeviceSequence() const + { return EnhancedRTBeamLimitingDeviceSequence; } + /** get ExposureSequence (3002,0030) * @return reference to sequence element */ @@ -2645,6 +2793,18 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD const DRTIconImageSequence &getIconImageSequence() const { return IconImageSequence; } + /** get InstitutionalDepartmentTypeCodeSequence (0008,1041) + * @return reference to sequence element + */ + DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() + { return InstitutionalDepartmentTypeCodeSequence; } + + /** get InstitutionalDepartmentTypeCodeSequence (0008,1041) + * @return const reference to sequence element + */ + const DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() const + { return InstitutionalDepartmentTypeCodeSequence; } + /** get IssuerOfAccessionNumberSequence (0008,0051) * @return reference to sequence element */ @@ -2849,6 +3009,18 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD const DRTPhysiciansReadingStudyIdentificationSequence &getPhysiciansReadingStudyIdentificationSequence() const { return PhysiciansReadingStudyIdentificationSequence; } + /** get PrimaryAnatomicStructureSequence (0008,2228) + * @return reference to sequence element + */ + DRTPrimaryAnatomicStructureSequence &getPrimaryAnatomicStructureSequence() + { return PrimaryAnatomicStructureSequence; } + + /** get PrimaryAnatomicStructureSequence (0008,2228) + * @return const reference to sequence element + */ + const DRTPrimaryAnatomicStructureSequence &getPrimaryAnatomicStructureSequence() const + { return PrimaryAnatomicStructureSequence; } + /** get PrivateDataElementCharacteristicsSequence (0008,0300) * @return reference to sequence element */ @@ -2897,6 +3069,30 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD const DRTReasonForPerformedProcedureCodeSequence &getReasonForPerformedProcedureCodeSequence() const { return ReasonForPerformedProcedureCodeSequence; } + /** get ReasonForVisitCodeSequence (0032,1067) + * @return reference to sequence element + */ + DRTReasonForVisitCodeSequence &getReasonForVisitCodeSequence() + { return ReasonForVisitCodeSequence; } + + /** get ReasonForVisitCodeSequence (0032,1067) + * @return const reference to sequence element + */ + const DRTReasonForVisitCodeSequence &getReasonForVisitCodeSequence() const + { return ReasonForVisitCodeSequence; } + + /** get ReferencedDefinedProtocolSequence (0018,990c) + * @return reference to sequence element + */ + DRTReferencedDefinedProtocolSequence &getReferencedDefinedProtocolSequence() + { return ReferencedDefinedProtocolSequence; } + + /** get ReferencedDefinedProtocolSequence (0018,990c) + * @return const reference to sequence element + */ + const DRTReferencedDefinedProtocolSequence &getReferencedDefinedProtocolSequence() const + { return ReferencedDefinedProtocolSequence; } + /** get ReferencedImageSequence (0008,1140) * @return reference to sequence element */ @@ -2957,6 +3153,18 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD const DRTReferencedPerformedProcedureStepSequence &getReferencedPerformedProcedureStepSequence() const { return ReferencedPerformedProcedureStepSequence; } + /** get ReferencedPerformedProtocolSequence (0018,990d) + * @return reference to sequence element + */ + DRTReferencedPerformedProtocolSequence &getReferencedPerformedProtocolSequence() + { return ReferencedPerformedProtocolSequence; } + + /** get ReferencedPerformedProtocolSequence (0018,990d) + * @return const reference to sequence element + */ + const DRTReferencedPerformedProtocolSequence &getReferencedPerformedProtocolSequence() const + { return ReferencedPerformedProtocolSequence; } + /** get ReferencedRTPlanSequence (300c,0002) * @return reference to sequence element */ @@ -3160,6 +3368,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD */ virtual OFCondition setAcquisitionDateTime(const OFString &value, const OFBool check = OFTrue); + /** set AcquisitionDuration (0018,9073) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setAcquisitionDuration(const Float64 value, const unsigned long pos = 0); + /** set AcquisitionNumber (0020,0012) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled @@ -3174,6 +3389,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD */ virtual OFCondition setAcquisitionTime(const OFString &value, const OFBool check = OFTrue); + /** set AcquisitionUID (0008,0017) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setAcquisitionUID(const OFString &value, const OFBool check = OFTrue); + /** set ActualFrameDuration (0018,1242) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled @@ -3223,6 +3445,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD */ virtual OFCondition setAuthorizationEquipmentCertificationNumber(const OFString &value, const OFBool check = OFTrue); + /** set BarcodeValue (2200,0005) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setBarcodeValue(const OFString &value, const OFBool check = OFTrue); + /** set BeamLimitingDeviceAngle (300a,0120) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled @@ -3524,6 +3753,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD */ virtual OFCondition setDeviceSerialNumber(const OFString &value, const OFBool check = OFTrue); + /** set DeviceUID (0018,1002) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setDeviceUID(const OFString &value, const OFBool check = OFTrue); + /** set EffectiveDuration (0018,0072) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled @@ -3531,6 +3767,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD */ virtual OFCondition setEffectiveDuration(const OFString &value, const OFBool check = OFTrue); + /** set EncapsulatedPixelDataValueTotalLength (7fe0,0003) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setEncapsulatedPixelDataValueTotalLength(const Uint64 value, const unsigned long pos = 0); + /** set EndCumulativeMetersetWeight (300c,0009) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled @@ -3538,6 +3781,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD */ virtual OFCondition setEndCumulativeMetersetWeight(const OFString &value, const OFBool check = OFTrue); + /** set EnhancedRTBeamLimitingDeviceDefinitionFlag (3008,00a3) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setEnhancedRTBeamLimitingDeviceDefinitionFlag(const OFString &value, const OFBool check = OFTrue); + /** set EthnicGroup (0010,2160) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled @@ -3559,6 +3809,20 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD */ virtual OFCondition setExposureTimeInms(const Float64 value, const unsigned long pos = 0); + /** set ExtendedOffsetTable (7fe0,0001) + * @param value array value to be set (data is copied) + * @param count number of items in the array + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setExtendedOffsetTable(const Uint64 *value, const unsigned long count); + + /** set ExtendedOffsetTableLengths (7fe0,0002) + * @param value array value to be set (data is copied) + * @param count number of items in the array + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setExtendedOffsetTableLengths(const Uint64 *value, const unsigned long count); + /** set FractionNumber (3002,0029) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled @@ -3657,6 +3921,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD */ virtual OFCondition setImageComments(const OFString &value, const OFBool check = OFTrue); + /** set ImageLaterality (0020,0062) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setImageLaterality(const OFString &value, const OFBool check = OFTrue); + /** set ImagePlanePixelSpacing (3002,0011) * @param value value to be set (possibly multi-valued) or "" for no value * @param check check 'value' for conformance with VR (DS) and VM (2) if enabled @@ -3720,6 +3991,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD */ virtual OFCondition setInstanceNumber(const OFString &value, const OFBool check = OFTrue); + /** set InstanceOriginStatus (0400,0600) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setInstanceOriginStatus(const OFString &value, const OFBool check = OFTrue); + /** set InstitutionAddress (0008,0081) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (ST) and VM (1) if enabled @@ -3825,6 +4103,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD */ virtual OFCondition setManufacturer(const OFString &value, const OFBool check = OFTrue); + /** set ManufacturerDeviceClassUID (0018,100b) + * @param value value to be set (possibly multi-valued) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1-n) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setManufacturerDeviceClassUID(const OFString &value, const OFBool check = OFTrue); + /** set ManufacturerModelName (0008,1090) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled @@ -4294,6 +4579,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD */ virtual OFCondition setRadiationMachineSSD(const OFString &value, const OFBool check = OFTrue); + /** set ReasonForVisit (0032,1066) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setReasonForVisit(const OFString &value, const OFBool check = OFTrue); + /** set RecognizableVisualFeatures (0028,0302) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled @@ -4357,6 +4649,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD */ virtual OFCondition setReportedValuesOrigin(const OFString &value, const OFBool check = OFTrue); + /** set RequestingService (0032,1033) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setRequestingService(const OFString &value, const OFBool check = OFTrue); + /** set RescaleIntercept (0028,1052) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled @@ -4714,6 +5013,20 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD */ virtual OFCondition setTimezoneOffsetFromUTC(const OFString &value, const OFBool check = OFTrue); + /** set TreatmentSessionUID (300a,0700) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setTreatmentSessionUID(const OFString &value, const OFBool check = OFTrue); + + /** set TypeOfPatientID (0010,0022) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setTypeOfPatientID(const OFString &value, const OFBool check = OFTrue); + /** set VOILUTFunction (0028,1056) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled @@ -4786,6 +5099,8 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD DcmLongString IssuerOfPatientID; /// IssuerOfPatientIDQualifiersSequence (0010,0024) vr=SQ, vm=1, type=3 DRTIssuerOfPatientIDQualifiersSequence IssuerOfPatientIDQualifiersSequence; + /// TypeOfPatientID (0010,0022) vr=CS, vm=1, type=3 + DcmCodeString TypeOfPatientID; /// PatientBirthDate (0010,0030) vr=DA, vm=1, type=2 DcmDate PatientBirthDate; /// PatientBirthDateInAlternativeCalendar (0010,0033) vr=LO, vm=1, type=3 @@ -4904,6 +5219,8 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD DcmPersonName NameOfPhysiciansReadingStudy; /// PhysiciansReadingStudyIdentificationSequence (0008,1062) vr=SQ, vm=1, type=3 DRTPhysiciansReadingStudyIdentificationSequence PhysiciansReadingStudyIdentificationSequence; + /// RequestingService (0032,1033) vr=LO, vm=1, type=3 + DcmLongString RequestingService; /// RequestingServiceCodeSequence (0032,1034) vr=SQ, vm=1, type=3 DRTRequestingServiceCodeSequence RequestingServiceCodeSequence; /// ReferencedStudySequence (0008,1110) vr=SQ, vm=1, type=3 @@ -4953,6 +5270,10 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD DcmLongString AdmissionID; /// IssuerOfAdmissionIDSequence (0038,0014) vr=SQ, vm=1, type=3 DRTIssuerOfAdmissionIDSequence IssuerOfAdmissionIDSequence; + /// ReasonForVisit (0032,1066) vr=UT, vm=1, type=3 + DcmUnlimitedText ReasonForVisit; + /// ReasonForVisitCodeSequence (0032,1067) vr=SQ, vm=1, type=3 + DRTReasonForVisitCodeSequence ReasonForVisitCodeSequence; /// ServiceEpisodeID (0038,0060) vr=LO, vm=1, type=3 DcmLongString ServiceEpisodeID; /// IssuerOfServiceEpisodeIDSequence (0038,0064) vr=SQ, vm=1, type=3 @@ -4968,6 +5289,8 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD DcmLongString ClinicalTrialTimePointID; /// ClinicalTrialTimePointDescription (0012,0051) vr=ST, vm=1, type=3 DcmShortText ClinicalTrialTimePointDescription; + /// ClinicalTrialTimePointTypeCodeSequence (0012,0054) vr=SQ, vm=1, type=3 + DRTClinicalTrialTimePointTypeCodeSequence ClinicalTrialTimePointTypeCodeSequence; /// LongitudinalTemporalOffsetFromEvent (0012,0052) vr=FD, vm=1, type=3 DcmFloatingPointDouble LongitudinalTemporalOffsetFromEvent; /// LongitudinalTemporalEventType (0012,0053) vr=CS, vm=1, type=1C @@ -5015,6 +5338,8 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD DRTPerformedProtocolCodeSequence PerformedProtocolCodeSequence; /// CommentsOnThePerformedProcedureStep (0040,0280) vr=ST, vm=1, type=3 DcmShortText CommentsOnThePerformedProcedureStep; + /// TreatmentSessionUID (300a,0700) vr=UI, vm=1, type=3 + DcmUniqueIdentifier TreatmentSessionUID; // --- ClinicalTrialSeriesModule (U) --- @@ -5044,8 +5369,12 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD DcmShortString StationName; /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3 DcmLongString InstitutionalDepartmentName; + /// InstitutionalDepartmentTypeCodeSequence (0008,1041) vr=SQ, vm=1, type=3 + DRTInstitutionalDepartmentTypeCodeSequence InstitutionalDepartmentTypeCodeSequence; /// ManufacturerModelName (0008,1090) vr=LO, vm=1, type=3 DcmLongString ManufacturerModelName; + /// ManufacturerDeviceClassUID (0018,100b) vr=UI, vm=1-n, type=3 + DcmUniqueIdentifier ManufacturerDeviceClassUID; /// DeviceSerialNumber (0018,1000) vr=LO, vm=1, type=3 DcmLongString DeviceSerialNumber; /// SoftwareVersions (0018,1020) vr=LO, vm=1-n, type=3 @@ -5054,6 +5383,8 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD DcmLongString GantryID; /// UDISequence (0018,100a) vr=SQ, vm=1, type=3 DRTUDISequence UDISequence; + /// DeviceUID (0018,1002) vr=UI, vm=1, type=3 + DcmUniqueIdentifier DeviceUID; /// SpatialResolution (0018,1050) vr=DS, vm=1, type=3 DcmDecimalString SpatialResolution; /// DateOfLastCalibration (0018,1200) vr=DA, vm=1-n, type=3 @@ -5063,6 +5394,25 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD /// PixelPaddingValue (0028,0120) vr=US/SS, vm=1, type=1C DcmUnsignedShort PixelPaddingValue; + // --- GeneralAcquisitionModule (M) --- + + /// AcquisitionUID (0008,0017) vr=UI, vm=1, type=3 + DcmUniqueIdentifier AcquisitionUID; + /// AcquisitionNumber (0020,0012) vr=IS, vm=1, type=3 + DcmIntegerString AcquisitionNumber; + /// AcquisitionDate (0008,0022) vr=DA, vm=1, type=3 + DcmDate AcquisitionDate; + /// AcquisitionTime (0008,0032) vr=TM, vm=1, type=3 + DcmTime AcquisitionTime; + /// AcquisitionDateTime (0008,002a) vr=DT, vm=1, type=3 + DcmDateTime AcquisitionDateTime; + /// AcquisitionDuration (0018,9073) vr=FD, vm=1, type=3 + DcmFloatingPointDouble AcquisitionDuration; + /// ImagesInAcquisition (0020,1002) vr=IS, vm=1, type=3 + DcmIntegerString ImagesInAcquisition; + /// IrradiationEventUID (0008,3010) vr=UI, vm=1-n, type=3 + DcmUniqueIdentifier IrradiationEventUID; + // --- GeneralImageModule (M) --- /// InstanceNumber (0020,0013) vr=IS, vm=1, type=2 @@ -5077,16 +5427,6 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD // ImageType (0008,0008) vr=CS, vm=2-n, type=3 // - also defined in: RTImageModule // DcmCodeString ImageType; - /// AcquisitionNumber (0020,0012) vr=IS, vm=1, type=3 - DcmIntegerString AcquisitionNumber; - /// AcquisitionDate (0008,0022) vr=DA, vm=1, type=3 - DcmDate AcquisitionDate; - /// AcquisitionTime (0008,0032) vr=TM, vm=1, type=3 - DcmTime AcquisitionTime; - /// AcquisitionDateTime (0008,002a) vr=DT, vm=1, type=3 - DcmDateTime AcquisitionDateTime; - /// ImagesInAcquisition (0020,1002) vr=IS, vm=1, type=3 - DcmIntegerString ImagesInAcquisition; /// ImageComments (0020,4000) vr=LT, vm=1, type=3 DcmLongText ImageComments; /// QualityControlImage (0028,0300) vr=CS, vm=1, type=3 @@ -5105,10 +5445,14 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD DRTIconImageSequence IconImageSequence; /// PresentationLUTShape (2050,0020) vr=CS, vm=1, type=3 DcmCodeString PresentationLUTShape; - /// IrradiationEventUID (0008,3010) vr=UI, vm=1-n, type=3 - DcmUniqueIdentifier IrradiationEventUID; /// RealWorldValueMappingSequence (0040,9096) vr=SQ, vm=1, type=3 DRTRealWorldValueMappingSequence RealWorldValueMappingSequence; + /// ImageLaterality (0020,0062) vr=CS, vm=1, type=3 + DcmCodeString ImageLaterality; + /// AnatomicRegionSequence (0008,2218) vr=SQ, vm=1, type=3 + DRTAnatomicRegionSequence AnatomicRegionSequence; + /// PrimaryAnatomicStructureSequence (0008,2228) vr=SQ, vm=1, type=3 + DRTPrimaryAnatomicStructureSequence PrimaryAnatomicStructureSequence; // --- GeneralReferenceModule (U) --- @@ -5179,6 +5523,10 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD DcmUniversalResourceIdentifierOrLocator PixelDataProviderURL; /// PixelPaddingRangeLimit (0028,0121) vr=US/SS, vm=1, type=1C DcmUnsignedShort PixelPaddingRangeLimit; + /// ExtendedOffsetTable (7fe0,0001) vr=OV, vm=1, type=3 + DcmOther64bitVeryLong ExtendedOffsetTable; + /// ExtendedOffsetTableLengths (7fe0,0002) vr=OV, vm=1, type=1C + DcmOther64bitVeryLong ExtendedOffsetTableLengths; // --- ContrastBolusModule (C) --- @@ -5242,6 +5590,8 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD DcmAttributeTag FrameIncrementPointer; /// StereoPairsPresent (0022,0028) vr=CS, vm=1, type=3 DcmCodeString StereoPairsPresent; + /// EncapsulatedPixelDataValueTotalLength (7fe0,0003) vr=UV, vm=1, type=3 + DcmUnsigned64bitVeryLong EncapsulatedPixelDataValueTotalLength; // --- DeviceModule (U) --- @@ -5307,6 +5657,10 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD DcmDecimalString RadiationMachineSSD; /// RTImageSID (3002,0026) vr=DS, vm=1, type=2 DcmDecimalString RTImageSID; + /// EnhancedRTBeamLimitingDeviceDefinitionFlag (3008,00a3) vr=CS, vm=1, type=3 + DcmCodeString EnhancedRTBeamLimitingDeviceDefinitionFlag; + /// EnhancedRTBeamLimitingDeviceSequence (3008,00a1) vr=SQ, vm=1, type=1C + DRTEnhancedRTBeamLimitingDeviceSequence EnhancedRTBeamLimitingDeviceSequence; /// SourceToReferenceObjectDistance (3002,0028) vr=DS, vm=1, type=3 DcmDecimalString SourceToReferenceObjectDistance; /// ReferencedRTPlanSequence (300c,0002) vr=SQ, vm=1, type=3 @@ -5454,6 +5808,14 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD DcmCodeString ContentQualification; /// PrivateDataElementCharacteristicsSequence (0008,0300) vr=SQ, vm=1, type=3 DRTPrivateDataElementCharacteristicsSequence PrivateDataElementCharacteristicsSequence; + /// InstanceOriginStatus (0400,0600) vr=CS, vm=1, type=3 + DcmCodeString InstanceOriginStatus; + /// BarcodeValue (2200,0005) vr=LT, vm=1, type=3 + DcmLongText BarcodeValue; + /// ReferencedDefinedProtocolSequence (0018,990c) vr=SQ, vm=1, type=1C + DRTReferencedDefinedProtocolSequence ReferencedDefinedProtocolSequence; + /// ReferencedPerformedProtocolSequence (0018,990d) vr=SQ, vm=1, type=1C + DRTReferencedPerformedProtocolSequence ReferencedPerformedProtocolSequence; // --- CommonInstanceReferenceModule (U) --- diff --git a/dcmrt/include/dcmtk/dcmrt/drtionpl.h b/dcmrt/include/dcmtk/dcmrt/drtionpl.h index 3701f2bf..8c4ae554 100644 --- a/dcmrt/include/dcmtk/dcmrt/drtionpl.h +++ b/dcmrt/include/dcmtk/dcmrt/drtionpl.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTIonPlanIOD * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -20,6 +20,7 @@ #include "dcmtk/dcmrt/drttypes.h" // module-specific helper class #include "dcmtk/dcmrt/seq/drtadcs.h" // for AdmittingDiagnosesCodeSequence #include "dcmtk/dcmrt/seq/drtbrs.h" // for BreedRegistrationSequence +#include "dcmtk/dcmrt/seq/drtcttcs.h" // for ClinicalTrialTimePointTypeCodeSequence #include "dcmtk/dcmrt/seq/drtcsis.h" // for CodingSchemeIdentificationSequence #include "dcmtk/dcmrt/seq/drtcctus.h" // for ConsentForClinicalTrialUseSequence #include "dcmtk/dcmrt/seq/drtcpis.h" // for ConsultingPhysicianIdentificationSequence @@ -35,6 +36,7 @@ #include "dcmtk/dcmrt/seq/drtgms.h" // for GeneticModificationsSequence #include "dcmtk/dcmrt/seq/drtgpis.h" // for GroupOfPatientsIdentificationSequence #include "dcmtk/dcmrt/seq/drthsdrs.h" // for HL7StructuredDocumentReferenceSequence +#include "dcmtk/dcmrt/seq/drtidcs.h" // for InstitutionalDepartmentTypeCodeSequence #include "dcmtk/dcmrt/seq/drtibs.h" // for IonBeamSequence #include "dcmtk/dcmrt/seq/drtitts.h" // for IonToleranceTableSequence #include "dcmtk/dcmrt/seq/drtians.h" // for IssuerOfAccessionNumberSequence @@ -56,13 +58,16 @@ #include "dcmtk/dcmrt/seq/drtpdecs.h" // for PrivateDataElementCharacteristicsSequence #include "dcmtk/dcmrt/seq/drtpcs.h" // for ProcedureCodeSequence #include "dcmtk/dcmrt/seq/drtrppcs.h" // for ReasonForPerformedProcedureCodeSequence +#include "dcmtk/dcmrt/seq/drtrvcs.h" // for ReasonForVisitCodeSequence +#include "dcmtk/dcmrt/seq/drtrdps.h" // for ReferencedDefinedProtocolSequence #include "dcmtk/dcmrt/seq/drtrds.h" // for ReferencedDoseSequence #include "dcmtk/dcmrt/seq/drtrims.h" // for ReferencedImageSequence #include "dcmtk/dcmrt/seq/drtris.h" // for ReferencedInstanceSequence #include "dcmtk/dcmrt/seq/drtrpphs.h" // for ReferencedPatientPhotoSequence #include "dcmtk/dcmrt/seq/drtrps.h" // for ReferencedPatientSequence #include "dcmtk/dcmrt/seq/drtrppss.h" // for ReferencedPerformedProcedureStepSequence -#include "dcmtk/dcmrt/seq/drtrrtps3.h" // for ReferencedRTPlanSequence +#include "dcmtk/dcmrt/seq/drtrpprs.h" // for ReferencedPerformedProtocolSequence +#include "dcmtk/dcmrt/seq/drtrtps2.h" // for ReferencedRTPlanSequence #include "dcmtk/dcmrt/seq/drtrsers.h" // for ReferencedSeriesSequence #include "dcmtk/dcmrt/seq/drtrsss.h" // for ReferencedStructureSetSequence #include "dcmtk/dcmrt/seq/drtrss.h" // for ReferencedStudySequence @@ -76,6 +81,7 @@ #include "dcmtk/dcmrt/seq/drtscs.h" // for StrainCodeSequence #include "dcmtk/dcmrt/seq/drtsss.h" // for StrainStockSequence #include "dcmtk/dcmrt/seq/drtscris.h" // for StudiesContainingOtherReferencedInstancesSequence +#include "dcmtk/dcmrt/seq/drttscs.h" // for TreatmentSiteCodeSequence #include "dcmtk/dcmrt/seq/drtudis.h" // for UDISequence @@ -303,6 +309,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD */ virtual OFCondition getAuthorizationEquipmentCertificationNumber(OFString &value, const signed long pos = 0) const; + /** get BarcodeValue (2200,0005) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getBarcodeValue(OFString &value, const signed long pos = 0) const; + /** get ClinicalTrialCoordinatingCenterName (0012,0060) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -450,6 +463,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD */ virtual OFCondition getDeviceSerialNumber(OFString &value, const signed long pos = 0) const; + /** get DeviceUID (0018,1002) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getDeviceUID(OFString &value, const signed long pos = 0) const; + /** get EthnicGroup (0010,2160) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -520,6 +540,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD */ virtual OFCondition getInstanceNumber(Sint32 &value, const unsigned long pos = 0) const; + /** get InstanceOriginStatus (0400,0600) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getInstanceOriginStatus(OFString &value, const signed long pos = 0) const; + /** get InstitutionAddress (0008,0081) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -583,6 +610,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD */ virtual OFCondition getManufacturer(OFString &value, const signed long pos = 0) const; + /** get ManufacturerDeviceClassUID (0018,100b) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getManufacturerDeviceClassUID(OFString &value, const signed long pos = 0) const; + /** get ManufacturerModelName (0008,1090) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -954,6 +988,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD */ virtual OFCondition getRTPlanTime(OFString &value, const signed long pos = 0) const; + /** get ReasonForVisit (0032,1066) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getReasonForVisit(OFString &value, const signed long pos = 0) const; + /** get ReferringPhysicianName (0008,0090) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -968,6 +1009,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD */ virtual OFCondition getRelatedGeneralSOPClassUID(OFString &value, const signed long pos = 0) const; + /** get RequestingService (0032,1033) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getRequestingService(OFString &value, const signed long pos = 0) const; + /** get ResponsibleOrganization (0010,2299) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -1220,12 +1268,26 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD */ virtual OFCondition getTreatmentProtocols(OFString &value, const signed long pos = 0) const; - /** get TreatmentSites (300a,000b) + /** get TreatmentSessionUID (300a,0700) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components * @return status, EC_Normal if successful, an error code otherwise */ - virtual OFCondition getTreatmentSites(OFString &value, const signed long pos = 0) const; + virtual OFCondition getTreatmentSessionUID(OFString &value, const signed long pos = 0) const; + + /** get TreatmentSite (3010,0077) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getTreatmentSite(OFString &value, const signed long pos = 0) const; + + /** get TypeOfPatientID (0010,0022) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getTypeOfPatientID(OFString &value, const signed long pos = 0) const; // --- get DICOM sequence attributes --- @@ -1253,6 +1315,18 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD const DRTBreedRegistrationSequence &getBreedRegistrationSequence() const { return BreedRegistrationSequence; } + /** get ClinicalTrialTimePointTypeCodeSequence (0012,0054) + * @return reference to sequence element + */ + DRTClinicalTrialTimePointTypeCodeSequence &getClinicalTrialTimePointTypeCodeSequence() + { return ClinicalTrialTimePointTypeCodeSequence; } + + /** get ClinicalTrialTimePointTypeCodeSequence (0012,0054) + * @return const reference to sequence element + */ + const DRTClinicalTrialTimePointTypeCodeSequence &getClinicalTrialTimePointTypeCodeSequence() const + { return ClinicalTrialTimePointTypeCodeSequence; } + /** get CodingSchemeIdentificationSequence (0008,0110) * @return reference to sequence element */ @@ -1433,6 +1507,18 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD const DRTHL7StructuredDocumentReferenceSequence &getHL7StructuredDocumentReferenceSequence() const { return HL7StructuredDocumentReferenceSequence; } + /** get InstitutionalDepartmentTypeCodeSequence (0008,1041) + * @return reference to sequence element + */ + DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() + { return InstitutionalDepartmentTypeCodeSequence; } + + /** get InstitutionalDepartmentTypeCodeSequence (0008,1041) + * @return const reference to sequence element + */ + const DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() const + { return InstitutionalDepartmentTypeCodeSequence; } + /** get IonBeamSequence (300a,03a2) * @return reference to sequence element */ @@ -1685,6 +1771,30 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD const DRTReasonForPerformedProcedureCodeSequence &getReasonForPerformedProcedureCodeSequence() const { return ReasonForPerformedProcedureCodeSequence; } + /** get ReasonForVisitCodeSequence (0032,1067) + * @return reference to sequence element + */ + DRTReasonForVisitCodeSequence &getReasonForVisitCodeSequence() + { return ReasonForVisitCodeSequence; } + + /** get ReasonForVisitCodeSequence (0032,1067) + * @return const reference to sequence element + */ + const DRTReasonForVisitCodeSequence &getReasonForVisitCodeSequence() const + { return ReasonForVisitCodeSequence; } + + /** get ReferencedDefinedProtocolSequence (0018,990c) + * @return reference to sequence element + */ + DRTReferencedDefinedProtocolSequence &getReferencedDefinedProtocolSequence() + { return ReferencedDefinedProtocolSequence; } + + /** get ReferencedDefinedProtocolSequence (0018,990c) + * @return const reference to sequence element + */ + const DRTReferencedDefinedProtocolSequence &getReferencedDefinedProtocolSequence() const + { return ReferencedDefinedProtocolSequence; } + /** get ReferencedDoseSequence (300c,0080) * @return reference to sequence element */ @@ -1757,6 +1867,18 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD const DRTReferencedPerformedProcedureStepSequence &getReferencedPerformedProcedureStepSequence() const { return ReferencedPerformedProcedureStepSequence; } + /** get ReferencedPerformedProtocolSequence (0018,990d) + * @return reference to sequence element + */ + DRTReferencedPerformedProtocolSequence &getReferencedPerformedProtocolSequence() + { return ReferencedPerformedProtocolSequence; } + + /** get ReferencedPerformedProtocolSequence (0018,990d) + * @return const reference to sequence element + */ + const DRTReferencedPerformedProtocolSequence &getReferencedPerformedProtocolSequence() const + { return ReferencedPerformedProtocolSequence; } + /** get ReferencedRTPlanSequence (300c,0002) * @return reference to sequence element */ @@ -1925,6 +2047,18 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD const DRTStudiesContainingOtherReferencedInstancesSequence &getStudiesContainingOtherReferencedInstancesSequence() const { return StudiesContainingOtherReferencedInstancesSequence; } + /** get TreatmentSiteCodeSequence (3010,0078) + * @return reference to sequence element + */ + DRTTreatmentSiteCodeSequence &getTreatmentSiteCodeSequence() + { return TreatmentSiteCodeSequence; } + + /** get TreatmentSiteCodeSequence (3010,0078) + * @return const reference to sequence element + */ + const DRTTreatmentSiteCodeSequence &getTreatmentSiteCodeSequence() const + { return TreatmentSiteCodeSequence; } + /** get UDISequence (0018,100a) * @return reference to sequence element */ @@ -1988,6 +2122,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD */ virtual OFCondition setAuthorizationEquipmentCertificationNumber(const OFString &value, const OFBool check = OFTrue); + /** set BarcodeValue (2200,0005) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setBarcodeValue(const OFString &value, const OFBool check = OFTrue); + /** set ClinicalTrialCoordinatingCenterName (0012,0060) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled @@ -2135,6 +2276,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD */ virtual OFCondition setDeviceSerialNumber(const OFString &value, const OFBool check = OFTrue); + /** set DeviceUID (0018,1002) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setDeviceUID(const OFString &value, const OFBool check = OFTrue); + /** set EthnicGroup (0010,2160) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled @@ -2198,6 +2346,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD */ virtual OFCondition setInstanceNumber(const OFString &value, const OFBool check = OFTrue); + /** set InstanceOriginStatus (0400,0600) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setInstanceOriginStatus(const OFString &value, const OFBool check = OFTrue); + /** set InstitutionAddress (0008,0081) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (ST) and VM (1) if enabled @@ -2261,6 +2416,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD */ virtual OFCondition setManufacturer(const OFString &value, const OFBool check = OFTrue); + /** set ManufacturerDeviceClassUID (0018,100b) + * @param value value to be set (possibly multi-valued) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1-n) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setManufacturerDeviceClassUID(const OFString &value, const OFBool check = OFTrue); + /** set ManufacturerModelName (0008,1090) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled @@ -2597,6 +2759,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD */ virtual OFCondition setRTPlanTime(const OFString &value, const OFBool check = OFTrue); + /** set ReasonForVisit (0032,1066) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setReasonForVisit(const OFString &value, const OFBool check = OFTrue); + /** set ReferringPhysicianName (0008,0090) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (PN) and VM (1) if enabled @@ -2611,6 +2780,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD */ virtual OFCondition setRelatedGeneralSOPClassUID(const OFString &value, const OFBool check = OFTrue); + /** set RequestingService (0032,1033) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setRequestingService(const OFString &value, const OFBool check = OFTrue); + /** set ResponsibleOrganization (0010,2299) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled @@ -2849,12 +3025,26 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD */ virtual OFCondition setTreatmentProtocols(const OFString &value, const OFBool check = OFTrue); - /** set TreatmentSites (300a,000b) - * @param value value to be set (possibly multi-valued) or "" for no value - * @param check check 'value' for conformance with VR (LO) and VM (1-n) if enabled + /** set TreatmentSessionUID (300a,0700) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setTreatmentSessionUID(const OFString &value, const OFBool check = OFTrue); + + /** set TreatmentSite (3010,0077) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setTreatmentSite(const OFString &value, const OFBool check = OFTrue); + + /** set TypeOfPatientID (0010,0022) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled * @return status, EC_Normal if successful, an error code otherwise */ - virtual OFCondition setTreatmentSites(const OFString &value, const OFBool check = OFTrue); + virtual OFCondition setTypeOfPatientID(const OFString &value, const OFBool check = OFTrue); protected: @@ -2886,6 +3076,8 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD DcmLongString IssuerOfPatientID; /// IssuerOfPatientIDQualifiersSequence (0010,0024) vr=SQ, vm=1, type=3 DRTIssuerOfPatientIDQualifiersSequence IssuerOfPatientIDQualifiersSequence; + /// TypeOfPatientID (0010,0022) vr=CS, vm=1, type=3 + DcmCodeString TypeOfPatientID; /// PatientBirthDate (0010,0030) vr=DA, vm=1, type=2 DcmDate PatientBirthDate; /// PatientBirthDateInAlternativeCalendar (0010,0033) vr=LO, vm=1, type=3 @@ -3004,6 +3196,8 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD DcmPersonName NameOfPhysiciansReadingStudy; /// PhysiciansReadingStudyIdentificationSequence (0008,1062) vr=SQ, vm=1, type=3 DRTPhysiciansReadingStudyIdentificationSequence PhysiciansReadingStudyIdentificationSequence; + /// RequestingService (0032,1033) vr=LO, vm=1, type=3 + DcmLongString RequestingService; /// RequestingServiceCodeSequence (0032,1034) vr=SQ, vm=1, type=3 DRTRequestingServiceCodeSequence RequestingServiceCodeSequence; /// ReferencedStudySequence (0008,1110) vr=SQ, vm=1, type=3 @@ -3053,6 +3247,10 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD DcmLongString AdmissionID; /// IssuerOfAdmissionIDSequence (0038,0014) vr=SQ, vm=1, type=3 DRTIssuerOfAdmissionIDSequence IssuerOfAdmissionIDSequence; + /// ReasonForVisit (0032,1066) vr=UT, vm=1, type=3 + DcmUnlimitedText ReasonForVisit; + /// ReasonForVisitCodeSequence (0032,1067) vr=SQ, vm=1, type=3 + DRTReasonForVisitCodeSequence ReasonForVisitCodeSequence; /// ServiceEpisodeID (0038,0060) vr=LO, vm=1, type=3 DcmLongString ServiceEpisodeID; /// IssuerOfServiceEpisodeIDSequence (0038,0064) vr=SQ, vm=1, type=3 @@ -3068,6 +3266,8 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD DcmLongString ClinicalTrialTimePointID; /// ClinicalTrialTimePointDescription (0012,0051) vr=ST, vm=1, type=3 DcmShortText ClinicalTrialTimePointDescription; + /// ClinicalTrialTimePointTypeCodeSequence (0012,0054) vr=SQ, vm=1, type=3 + DRTClinicalTrialTimePointTypeCodeSequence ClinicalTrialTimePointTypeCodeSequence; /// LongitudinalTemporalOffsetFromEvent (0012,0052) vr=FD, vm=1, type=3 DcmFloatingPointDouble LongitudinalTemporalOffsetFromEvent; /// LongitudinalTemporalEventType (0012,0053) vr=CS, vm=1, type=1C @@ -3115,6 +3315,8 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD DRTPerformedProtocolCodeSequence PerformedProtocolCodeSequence; /// CommentsOnThePerformedProcedureStep (0040,0280) vr=ST, vm=1, type=3 DcmShortText CommentsOnThePerformedProcedureStep; + /// TreatmentSessionUID (300a,0700) vr=UI, vm=1, type=3 + DcmUniqueIdentifier TreatmentSessionUID; // --- ClinicalTrialSeriesModule (U) --- @@ -3144,8 +3346,12 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD DcmShortString StationName; /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3 DcmLongString InstitutionalDepartmentName; + /// InstitutionalDepartmentTypeCodeSequence (0008,1041) vr=SQ, vm=1, type=3 + DRTInstitutionalDepartmentTypeCodeSequence InstitutionalDepartmentTypeCodeSequence; /// ManufacturerModelName (0008,1090) vr=LO, vm=1, type=3 DcmLongString ManufacturerModelName; + /// ManufacturerDeviceClassUID (0018,100b) vr=UI, vm=1-n, type=3 + DcmUniqueIdentifier ManufacturerDeviceClassUID; /// DeviceSerialNumber (0018,1000) vr=LO, vm=1, type=3 DcmLongString DeviceSerialNumber; /// SoftwareVersions (0018,1020) vr=LO, vm=1-n, type=3 @@ -3154,6 +3360,8 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD DcmLongString GantryID; /// UDISequence (0018,100a) vr=SQ, vm=1, type=3 DRTUDISequence UDISequence; + /// DeviceUID (0018,1002) vr=UI, vm=1, type=3 + DcmUniqueIdentifier DeviceUID; /// SpatialResolution (0018,1050) vr=DS, vm=1, type=3 DcmDecimalString SpatialResolution; /// DateOfLastCalibration (0018,1200) vr=DA, vm=1-n, type=3 @@ -3182,8 +3390,10 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD DcmLongString TreatmentProtocols; /// PlanIntent (300a,000a) vr=CS, vm=1, type=3 DcmCodeString PlanIntent; - /// TreatmentSites (300a,000b) vr=LO, vm=1-n, type=3 - DcmLongString TreatmentSites; + /// TreatmentSite (3010,0077) vr=LO, vm=1, type=3 + DcmLongString TreatmentSite; + /// TreatmentSiteCodeSequence (3010,0078) vr=SQ, vm=1, type=3 + DRTTreatmentSiteCodeSequence TreatmentSiteCodeSequence; /// RTPlanGeometry (300a,000c) vr=CS, vm=1, type=1 DcmCodeString RTPlanGeometry; /// ReferencedStructureSetSequence (300c,0060) vr=SQ, vm=1, type=1C @@ -3309,6 +3519,14 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD DcmCodeString ContentQualification; /// PrivateDataElementCharacteristicsSequence (0008,0300) vr=SQ, vm=1, type=3 DRTPrivateDataElementCharacteristicsSequence PrivateDataElementCharacteristicsSequence; + /// InstanceOriginStatus (0400,0600) vr=CS, vm=1, type=3 + DcmCodeString InstanceOriginStatus; + /// BarcodeValue (2200,0005) vr=LT, vm=1, type=3 + DcmLongText BarcodeValue; + /// ReferencedDefinedProtocolSequence (0018,990c) vr=SQ, vm=1, type=1C + DRTReferencedDefinedProtocolSequence ReferencedDefinedProtocolSequence; + /// ReferencedPerformedProtocolSequence (0018,990d) vr=SQ, vm=1, type=1C + DRTReferencedPerformedProtocolSequence ReferencedPerformedProtocolSequence; // --- CommonInstanceReferenceModule (U) --- diff --git a/dcmrt/include/dcmtk/dcmrt/drtiontr.h b/dcmrt/include/dcmtk/dcmrt/drtiontr.h index 94d28092..388f8b36 100644 --- a/dcmrt/include/dcmtk/dcmrt/drtiontr.h +++ b/dcmrt/include/dcmtk/dcmrt/drtiontr.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTIonBeamsTreatmentRecordIOD * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -21,6 +21,7 @@ #include "dcmtk/dcmrt/seq/drtadcs.h" // for AdmittingDiagnosesCodeSequence #include "dcmtk/dcmrt/seq/drtbrs.h" // for BreedRegistrationSequence #include "dcmtk/dcmrt/seq/drtcdrs.h" // for CalculatedDoseReferenceSequence +#include "dcmtk/dcmrt/seq/drtcttcs.h" // for ClinicalTrialTimePointTypeCodeSequence #include "dcmtk/dcmrt/seq/drtcsis.h" // for CodingSchemeIdentificationSequence #include "dcmtk/dcmrt/seq/drtcctus.h" // for ConsentForClinicalTrialUseSequence #include "dcmtk/dcmrt/seq/drtcpis.h" // for ConsultingPhysicianIdentificationSequence @@ -35,6 +36,7 @@ #include "dcmtk/dcmrt/seq/drtgms.h" // for GeneticModificationsSequence #include "dcmtk/dcmrt/seq/drtgpis.h" // for GroupOfPatientsIdentificationSequence #include "dcmtk/dcmrt/seq/drthsdrs.h" // for HL7StructuredDocumentReferenceSequence +#include "dcmtk/dcmrt/seq/drtidcs.h" // for InstitutionalDepartmentTypeCodeSequence #include "dcmtk/dcmrt/seq/drtians.h" // for IssuerOfAccessionNumberSequence #include "dcmtk/dcmrt/seq/drtiais.h" // for IssuerOfAdmissionIDSequence #include "dcmtk/dcmrt/seq/drtipiqs.h" // for IssuerOfPatientIDQualifiersSequence @@ -55,15 +57,18 @@ #include "dcmtk/dcmrt/seq/drtpdecs.h" // for PrivateDataElementCharacteristicsSequence #include "dcmtk/dcmrt/seq/drtpcs.h" // for ProcedureCodeSequence #include "dcmtk/dcmrt/seq/drtrppcs.h" // for ReasonForPerformedProcedureCodeSequence +#include "dcmtk/dcmrt/seq/drtrvcs.h" // for ReasonForVisitCodeSequence +#include "dcmtk/dcmrt/seq/drtrdps.h" // for ReferencedDefinedProtocolSequence #include "dcmtk/dcmrt/seq/drtrims.h" // for ReferencedImageSequence #include "dcmtk/dcmrt/seq/drtris.h" // for ReferencedInstanceSequence #include "dcmtk/dcmrt/seq/drtrpphs.h" // for ReferencedPatientPhotoSequence #include "dcmtk/dcmrt/seq/drtrps.h" // for ReferencedPatientSequence #include "dcmtk/dcmrt/seq/drtrppss.h" // for ReferencedPerformedProcedureStepSequence -#include "dcmtk/dcmrt/seq/drtrrtps4.h" // for ReferencedRTPlanSequence +#include "dcmtk/dcmrt/seq/drtrpprs.h" // for ReferencedPerformedProtocolSequence +#include "dcmtk/dcmrt/seq/drtrtps3.h" // for ReferencedRTPlanSequence #include "dcmtk/dcmrt/seq/drtrsers.h" // for ReferencedSeriesSequence #include "dcmtk/dcmrt/seq/drtrss.h" // for ReferencedStudySequence -#include "dcmtk/dcmrt/seq/drtrtrs4.h" // for ReferencedTreatmentRecordSequence +#include "dcmtk/dcmrt/seq/drtrtrs2.h" // for ReferencedTreatmentRecordSequence #include "dcmtk/dcmrt/seq/drtrpis.h" // for ReferringPhysicianIdentificationSequence #include "dcmtk/dcmrt/seq/drtras.h" // for RequestAttributesSequence #include "dcmtk/dcmrt/seq/drtrscs.h" // for RequestingServiceCodeSequence @@ -74,7 +79,7 @@ #include "dcmtk/dcmrt/seq/drtscs.h" // for StrainCodeSequence #include "dcmtk/dcmrt/seq/drtsss.h" // for StrainStockSequence #include "dcmtk/dcmrt/seq/drtscris.h" // for StudiesContainingOtherReferencedInstancesSequence -#include "dcmtk/dcmrt/seq/drttms0.h" // for TreatmentMachineSequence +#include "dcmtk/dcmrt/seq/drttms2.h" // for TreatmentMachineSequence #include "dcmtk/dcmrt/seq/drttsibs.h" // for TreatmentSessionIonBeamSequence #include "dcmtk/dcmrt/seq/drttscds.h" // for TreatmentSummaryCalculatedDoseReferenceSequence #include "dcmtk/dcmrt/seq/drttsmds.h" // for TreatmentSummaryMeasuredDoseReferenceSequence @@ -282,6 +287,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD */ virtual OFCondition getAuthorizationEquipmentCertificationNumber(OFString &value, const signed long pos = 0) const; + /** get BarcodeValue (2200,0005) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getBarcodeValue(OFString &value, const signed long pos = 0) const; + /** get ClinicalTrialCoordinatingCenterName (0012,0060) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -436,6 +448,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD */ virtual OFCondition getDeviceSerialNumber(OFString &value, const signed long pos = 0) const; + /** get DeviceUID (0018,1002) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getDeviceUID(OFString &value, const signed long pos = 0) const; + /** get EthnicGroup (0010,2160) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -499,6 +518,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD */ virtual OFCondition getInstanceNumber(Sint32 &value, const unsigned long pos = 0) const; + /** get InstanceOriginStatus (0400,0600) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getInstanceOriginStatus(OFString &value, const signed long pos = 0) const; + /** get InstitutionAddress (0008,0081) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -562,6 +588,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD */ virtual OFCondition getManufacturer(OFString &value, const signed long pos = 0) const; + /** get ManufacturerDeviceClassUID (0018,100b) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getManufacturerDeviceClassUID(OFString &value, const signed long pos = 0) const; + /** get ManufacturerModelName (0008,1090) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -898,6 +931,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD */ virtual OFCondition getQueryRetrieveView(OFString &value, const signed long pos = 0) const; + /** get ReasonForVisit (0032,1066) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getReasonForVisit(OFString &value, const signed long pos = 0) const; + /** get ReferencedFractionGroupNumber (300c,0022) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -926,6 +966,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD */ virtual OFCondition getRelatedGeneralSOPClassUID(OFString &value, const signed long pos = 0) const; + /** get RequestingService (0032,1033) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getRequestingService(OFString &value, const signed long pos = 0) const; + /** get ResponsibleOrganization (0010,2299) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -1157,6 +1204,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD */ virtual OFCondition getTreatmentDate(OFString &value, const signed long pos = 0) const; + /** get TreatmentSessionUID (300a,0700) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getTreatmentSessionUID(OFString &value, const signed long pos = 0) const; + /** get TreatmentStatusComment (3008,0202) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -1171,6 +1225,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD */ virtual OFCondition getTreatmentTime(OFString &value, const signed long pos = 0) const; + /** get TypeOfPatientID (0010,0022) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getTypeOfPatientID(OFString &value, const signed long pos = 0) const; + // --- get DICOM sequence attributes --- /** get AdmittingDiagnosesCodeSequence (0008,1084) @@ -1209,6 +1270,18 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD const DRTCalculatedDoseReferenceSequence &getCalculatedDoseReferenceSequence() const { return CalculatedDoseReferenceSequence; } + /** get ClinicalTrialTimePointTypeCodeSequence (0012,0054) + * @return reference to sequence element + */ + DRTClinicalTrialTimePointTypeCodeSequence &getClinicalTrialTimePointTypeCodeSequence() + { return ClinicalTrialTimePointTypeCodeSequence; } + + /** get ClinicalTrialTimePointTypeCodeSequence (0012,0054) + * @return const reference to sequence element + */ + const DRTClinicalTrialTimePointTypeCodeSequence &getClinicalTrialTimePointTypeCodeSequence() const + { return ClinicalTrialTimePointTypeCodeSequence; } + /** get CodingSchemeIdentificationSequence (0008,0110) * @return reference to sequence element */ @@ -1377,6 +1450,18 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD const DRTHL7StructuredDocumentReferenceSequence &getHL7StructuredDocumentReferenceSequence() const { return HL7StructuredDocumentReferenceSequence; } + /** get InstitutionalDepartmentTypeCodeSequence (0008,1041) + * @return reference to sequence element + */ + DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() + { return InstitutionalDepartmentTypeCodeSequence; } + + /** get InstitutionalDepartmentTypeCodeSequence (0008,1041) + * @return const reference to sequence element + */ + const DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() const + { return InstitutionalDepartmentTypeCodeSequence; } + /** get IssuerOfAccessionNumberSequence (0008,0051) * @return reference to sequence element */ @@ -1617,6 +1702,30 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD const DRTReasonForPerformedProcedureCodeSequence &getReasonForPerformedProcedureCodeSequence() const { return ReasonForPerformedProcedureCodeSequence; } + /** get ReasonForVisitCodeSequence (0032,1067) + * @return reference to sequence element + */ + DRTReasonForVisitCodeSequence &getReasonForVisitCodeSequence() + { return ReasonForVisitCodeSequence; } + + /** get ReasonForVisitCodeSequence (0032,1067) + * @return const reference to sequence element + */ + const DRTReasonForVisitCodeSequence &getReasonForVisitCodeSequence() const + { return ReasonForVisitCodeSequence; } + + /** get ReferencedDefinedProtocolSequence (0018,990c) + * @return reference to sequence element + */ + DRTReferencedDefinedProtocolSequence &getReferencedDefinedProtocolSequence() + { return ReferencedDefinedProtocolSequence; } + + /** get ReferencedDefinedProtocolSequence (0018,990c) + * @return const reference to sequence element + */ + const DRTReferencedDefinedProtocolSequence &getReferencedDefinedProtocolSequence() const + { return ReferencedDefinedProtocolSequence; } + /** get ReferencedImageSequence (0008,1140) * @return reference to sequence element */ @@ -1677,6 +1786,18 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD const DRTReferencedPerformedProcedureStepSequence &getReferencedPerformedProcedureStepSequence() const { return ReferencedPerformedProcedureStepSequence; } + /** get ReferencedPerformedProtocolSequence (0018,990d) + * @return reference to sequence element + */ + DRTReferencedPerformedProtocolSequence &getReferencedPerformedProtocolSequence() + { return ReferencedPerformedProtocolSequence; } + + /** get ReferencedPerformedProtocolSequence (0018,990d) + * @return const reference to sequence element + */ + const DRTReferencedPerformedProtocolSequence &getReferencedPerformedProtocolSequence() const + { return ReferencedPerformedProtocolSequence; } + /** get ReferencedRTPlanSequence (300c,0002) * @return reference to sequence element */ @@ -1949,6 +2070,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD */ virtual OFCondition setAuthorizationEquipmentCertificationNumber(const OFString &value, const OFBool check = OFTrue); + /** set BarcodeValue (2200,0005) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setBarcodeValue(const OFString &value, const OFBool check = OFTrue); + /** set ClinicalTrialCoordinatingCenterName (0012,0060) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled @@ -2103,6 +2231,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD */ virtual OFCondition setDeviceSerialNumber(const OFString &value, const OFBool check = OFTrue); + /** set DeviceUID (0018,1002) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setDeviceUID(const OFString &value, const OFBool check = OFTrue); + /** set EthnicGroup (0010,2160) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled @@ -2159,6 +2294,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD */ virtual OFCondition setInstanceNumber(const OFString &value, const OFBool check = OFTrue); + /** set InstanceOriginStatus (0400,0600) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setInstanceOriginStatus(const OFString &value, const OFBool check = OFTrue); + /** set InstitutionAddress (0008,0081) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (ST) and VM (1) if enabled @@ -2222,6 +2364,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD */ virtual OFCondition setManufacturer(const OFString &value, const OFBool check = OFTrue); + /** set ManufacturerDeviceClassUID (0018,100b) + * @param value value to be set (possibly multi-valued) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1-n) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setManufacturerDeviceClassUID(const OFString &value, const OFBool check = OFTrue); + /** set ManufacturerModelName (0008,1090) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled @@ -2516,6 +2665,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD */ virtual OFCondition setQueryRetrieveView(const OFString &value, const OFBool check = OFTrue); + /** set ReasonForVisit (0032,1066) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setReasonForVisit(const OFString &value, const OFBool check = OFTrue); + /** set ReferencedFractionGroupNumber (300c,0022) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled @@ -2537,6 +2693,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD */ virtual OFCondition setRelatedGeneralSOPClassUID(const OFString &value, const OFBool check = OFTrue); + /** set RequestingService (0032,1033) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setRequestingService(const OFString &value, const OFBool check = OFTrue); + /** set ResponsibleOrganization (0010,2299) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled @@ -2754,6 +2917,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD */ virtual OFCondition setTreatmentDate(const OFString &value, const OFBool check = OFTrue); + /** set TreatmentSessionUID (300a,0700) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setTreatmentSessionUID(const OFString &value, const OFBool check = OFTrue); + /** set TreatmentStatusComment (3008,0202) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (ST) and VM (1) if enabled @@ -2768,6 +2938,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD */ virtual OFCondition setTreatmentTime(const OFString &value, const OFBool check = OFTrue); + /** set TypeOfPatientID (0010,0022) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setTypeOfPatientID(const OFString &value, const OFBool check = OFTrue); + protected: @@ -2798,6 +2975,8 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD DcmLongString IssuerOfPatientID; /// IssuerOfPatientIDQualifiersSequence (0010,0024) vr=SQ, vm=1, type=3 DRTIssuerOfPatientIDQualifiersSequence IssuerOfPatientIDQualifiersSequence; + /// TypeOfPatientID (0010,0022) vr=CS, vm=1, type=3 + DcmCodeString TypeOfPatientID; /// PatientBirthDate (0010,0030) vr=DA, vm=1, type=2 DcmDate PatientBirthDate; /// PatientBirthDateInAlternativeCalendar (0010,0033) vr=LO, vm=1, type=3 @@ -2916,6 +3095,8 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD DcmPersonName NameOfPhysiciansReadingStudy; /// PhysiciansReadingStudyIdentificationSequence (0008,1062) vr=SQ, vm=1, type=3 DRTPhysiciansReadingStudyIdentificationSequence PhysiciansReadingStudyIdentificationSequence; + /// RequestingService (0032,1033) vr=LO, vm=1, type=3 + DcmLongString RequestingService; /// RequestingServiceCodeSequence (0032,1034) vr=SQ, vm=1, type=3 DRTRequestingServiceCodeSequence RequestingServiceCodeSequence; /// ReferencedStudySequence (0008,1110) vr=SQ, vm=1, type=3 @@ -2931,6 +3112,8 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD DcmLongString ClinicalTrialTimePointID; /// ClinicalTrialTimePointDescription (0012,0051) vr=ST, vm=1, type=3 DcmShortText ClinicalTrialTimePointDescription; + /// ClinicalTrialTimePointTypeCodeSequence (0012,0054) vr=SQ, vm=1, type=3 + DRTClinicalTrialTimePointTypeCodeSequence ClinicalTrialTimePointTypeCodeSequence; /// LongitudinalTemporalOffsetFromEvent (0012,0052) vr=FD, vm=1, type=3 DcmFloatingPointDouble LongitudinalTemporalOffsetFromEvent; /// LongitudinalTemporalEventType (0012,0053) vr=CS, vm=1, type=1C @@ -2978,6 +3161,10 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD DcmLongString AdmissionID; /// IssuerOfAdmissionIDSequence (0038,0014) vr=SQ, vm=1, type=3 DRTIssuerOfAdmissionIDSequence IssuerOfAdmissionIDSequence; + /// ReasonForVisit (0032,1066) vr=UT, vm=1, type=3 + DcmUnlimitedText ReasonForVisit; + /// ReasonForVisitCodeSequence (0032,1067) vr=SQ, vm=1, type=3 + DRTReasonForVisitCodeSequence ReasonForVisitCodeSequence; /// ServiceEpisodeID (0038,0060) vr=LO, vm=1, type=3 DcmLongString ServiceEpisodeID; /// IssuerOfServiceEpisodeIDSequence (0038,0064) vr=SQ, vm=1, type=3 @@ -3027,6 +3214,8 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD DRTPerformedProtocolCodeSequence PerformedProtocolCodeSequence; /// CommentsOnThePerformedProcedureStep (0040,0280) vr=ST, vm=1, type=3 DcmShortText CommentsOnThePerformedProcedureStep; + /// TreatmentSessionUID (300a,0700) vr=UI, vm=1, type=3 + DcmUniqueIdentifier TreatmentSessionUID; // --- ClinicalTrialSeriesModule (U) --- @@ -3049,8 +3238,12 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD DcmShortString StationName; /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3 DcmLongString InstitutionalDepartmentName; + /// InstitutionalDepartmentTypeCodeSequence (0008,1041) vr=SQ, vm=1, type=3 + DRTInstitutionalDepartmentTypeCodeSequence InstitutionalDepartmentTypeCodeSequence; /// ManufacturerModelName (0008,1090) vr=LO, vm=1, type=3 DcmLongString ManufacturerModelName; + /// ManufacturerDeviceClassUID (0018,100b) vr=UI, vm=1-n, type=3 + DcmUniqueIdentifier ManufacturerDeviceClassUID; /// DeviceSerialNumber (0018,1000) vr=LO, vm=1, type=3 DcmLongString DeviceSerialNumber; /// SoftwareVersions (0018,1020) vr=LO, vm=1-n, type=3 @@ -3059,6 +3252,8 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD DcmLongString GantryID; /// UDISequence (0018,100a) vr=SQ, vm=1, type=3 DRTUDISequence UDISequence; + /// DeviceUID (0018,1002) vr=UI, vm=1, type=3 + DcmUniqueIdentifier DeviceUID; /// SpatialResolution (0018,1050) vr=DS, vm=1, type=3 DcmDecimalString SpatialResolution; /// DateOfLastCalibration (0018,1200) vr=DA, vm=1-n, type=3 @@ -3206,6 +3401,14 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD DcmCodeString ContentQualification; /// PrivateDataElementCharacteristicsSequence (0008,0300) vr=SQ, vm=1, type=3 DRTPrivateDataElementCharacteristicsSequence PrivateDataElementCharacteristicsSequence; + /// InstanceOriginStatus (0400,0600) vr=CS, vm=1, type=3 + DcmCodeString InstanceOriginStatus; + /// BarcodeValue (2200,0005) vr=LT, vm=1, type=3 + DcmLongText BarcodeValue; + /// ReferencedDefinedProtocolSequence (0018,990c) vr=SQ, vm=1, type=1C + DRTReferencedDefinedProtocolSequence ReferencedDefinedProtocolSequence; + /// ReferencedPerformedProtocolSequence (0018,990d) vr=SQ, vm=1, type=1C + DRTReferencedPerformedProtocolSequence ReferencedPerformedProtocolSequence; // --- CommonInstanceReferenceModule (U) --- diff --git a/dcmrt/include/dcmtk/dcmrt/drtplan.h b/dcmrt/include/dcmtk/dcmrt/drtplan.h index 58a8d776..60217632 100644 --- a/dcmrt/include/dcmtk/dcmrt/drtplan.h +++ b/dcmrt/include/dcmtk/dcmrt/drtplan.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTPlanIOD * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -22,6 +22,7 @@ #include "dcmtk/dcmrt/seq/drtass.h" // for ApplicationSetupSequence #include "dcmtk/dcmrt/seq/drtbs.h" // for BeamSequence #include "dcmtk/dcmrt/seq/drtbrs.h" // for BreedRegistrationSequence +#include "dcmtk/dcmrt/seq/drtcttcs.h" // for ClinicalTrialTimePointTypeCodeSequence #include "dcmtk/dcmrt/seq/drtcsis.h" // for CodingSchemeIdentificationSequence #include "dcmtk/dcmrt/seq/drtcctus.h" // for ConsentForClinicalTrialUseSequence #include "dcmtk/dcmrt/seq/drtcpis.h" // for ConsultingPhysicianIdentificationSequence @@ -37,6 +38,7 @@ #include "dcmtk/dcmrt/seq/drtgms.h" // for GeneticModificationsSequence #include "dcmtk/dcmrt/seq/drtgpis.h" // for GroupOfPatientsIdentificationSequence #include "dcmtk/dcmrt/seq/drthsdrs.h" // for HL7StructuredDocumentReferenceSequence +#include "dcmtk/dcmrt/seq/drtidcs.h" // for InstitutionalDepartmentTypeCodeSequence #include "dcmtk/dcmrt/seq/drtians.h" // for IssuerOfAccessionNumberSequence #include "dcmtk/dcmrt/seq/drtiais.h" // for IssuerOfAdmissionIDSequence #include "dcmtk/dcmrt/seq/drtipiqs.h" // for IssuerOfPatientIDQualifiersSequence @@ -56,13 +58,16 @@ #include "dcmtk/dcmrt/seq/drtpdecs.h" // for PrivateDataElementCharacteristicsSequence #include "dcmtk/dcmrt/seq/drtpcs.h" // for ProcedureCodeSequence #include "dcmtk/dcmrt/seq/drtrppcs.h" // for ReasonForPerformedProcedureCodeSequence +#include "dcmtk/dcmrt/seq/drtrvcs.h" // for ReasonForVisitCodeSequence +#include "dcmtk/dcmrt/seq/drtrdps.h" // for ReferencedDefinedProtocolSequence #include "dcmtk/dcmrt/seq/drtrds.h" // for ReferencedDoseSequence #include "dcmtk/dcmrt/seq/drtrims.h" // for ReferencedImageSequence #include "dcmtk/dcmrt/seq/drtris.h" // for ReferencedInstanceSequence #include "dcmtk/dcmrt/seq/drtrpphs.h" // for ReferencedPatientPhotoSequence #include "dcmtk/dcmrt/seq/drtrps.h" // for ReferencedPatientSequence #include "dcmtk/dcmrt/seq/drtrppss.h" // for ReferencedPerformedProcedureStepSequence -#include "dcmtk/dcmrt/seq/drtrrtps3.h" // for ReferencedRTPlanSequence +#include "dcmtk/dcmrt/seq/drtrpprs.h" // for ReferencedPerformedProtocolSequence +#include "dcmtk/dcmrt/seq/drtrtps2.h" // for ReferencedRTPlanSequence #include "dcmtk/dcmrt/seq/drtrsers.h" // for ReferencedSeriesSequence #include "dcmtk/dcmrt/seq/drtrsss.h" // for ReferencedStructureSetSequence #include "dcmtk/dcmrt/seq/drtrss.h" // for ReferencedStudySequence @@ -78,7 +83,8 @@ #include "dcmtk/dcmrt/seq/drtsss.h" // for StrainStockSequence #include "dcmtk/dcmrt/seq/drtscris.h" // for StudiesContainingOtherReferencedInstancesSequence #include "dcmtk/dcmrt/seq/drttts.h" // for ToleranceTableSequence -#include "dcmtk/dcmrt/seq/drttms9.h" // for TreatmentMachineSequence +#include "dcmtk/dcmrt/seq/drttms1.h" // for TreatmentMachineSequence +#include "dcmtk/dcmrt/seq/drttscs.h" // for TreatmentSiteCodeSequence #include "dcmtk/dcmrt/seq/drtudis.h" // for UDISequence @@ -322,6 +328,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD */ virtual OFCondition getAuthorizationEquipmentCertificationNumber(OFString &value, const signed long pos = 0) const; + /** get BarcodeValue (2200,0005) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getBarcodeValue(OFString &value, const signed long pos = 0) const; + /** get BrachyTreatmentTechnique (300a,0200) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -483,6 +496,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD */ virtual OFCondition getDeviceSerialNumber(OFString &value, const signed long pos = 0) const; + /** get DeviceUID (0018,1002) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getDeviceUID(OFString &value, const signed long pos = 0) const; + /** get EthnicGroup (0010,2160) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -553,6 +573,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD */ virtual OFCondition getInstanceNumber(Sint32 &value, const unsigned long pos = 0) const; + /** get InstanceOriginStatus (0400,0600) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getInstanceOriginStatus(OFString &value, const signed long pos = 0) const; + /** get InstitutionAddress (0008,0081) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -616,6 +643,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD */ virtual OFCondition getManufacturer(OFString &value, const signed long pos = 0) const; + /** get ManufacturerDeviceClassUID (0018,100b) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getManufacturerDeviceClassUID(OFString &value, const signed long pos = 0) const; + /** get ManufacturerModelName (0008,1090) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -987,6 +1021,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD */ virtual OFCondition getRTPlanTime(OFString &value, const signed long pos = 0) const; + /** get ReasonForVisit (0032,1066) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getReasonForVisit(OFString &value, const signed long pos = 0) const; + /** get ReferringPhysicianName (0008,0090) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -1001,6 +1042,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD */ virtual OFCondition getRelatedGeneralSOPClassUID(OFString &value, const signed long pos = 0) const; + /** get RequestingService (0032,1033) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getRequestingService(OFString &value, const signed long pos = 0) const; + /** get ResponsibleOrganization (0010,2299) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -1253,12 +1301,26 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD */ virtual OFCondition getTreatmentProtocols(OFString &value, const signed long pos = 0) const; - /** get TreatmentSites (300a,000b) + /** get TreatmentSessionUID (300a,0700) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components * @return status, EC_Normal if successful, an error code otherwise */ - virtual OFCondition getTreatmentSites(OFString &value, const signed long pos = 0) const; + virtual OFCondition getTreatmentSessionUID(OFString &value, const signed long pos = 0) const; + + /** get TreatmentSite (3010,0077) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getTreatmentSite(OFString &value, const signed long pos = 0) const; + + /** get TypeOfPatientID (0010,0022) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getTypeOfPatientID(OFString &value, const signed long pos = 0) const; // --- get DICOM sequence attributes --- @@ -1310,6 +1372,18 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD const DRTBreedRegistrationSequence &getBreedRegistrationSequence() const { return BreedRegistrationSequence; } + /** get ClinicalTrialTimePointTypeCodeSequence (0012,0054) + * @return reference to sequence element + */ + DRTClinicalTrialTimePointTypeCodeSequence &getClinicalTrialTimePointTypeCodeSequence() + { return ClinicalTrialTimePointTypeCodeSequence; } + + /** get ClinicalTrialTimePointTypeCodeSequence (0012,0054) + * @return const reference to sequence element + */ + const DRTClinicalTrialTimePointTypeCodeSequence &getClinicalTrialTimePointTypeCodeSequence() const + { return ClinicalTrialTimePointTypeCodeSequence; } + /** get CodingSchemeIdentificationSequence (0008,0110) * @return reference to sequence element */ @@ -1490,6 +1564,18 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD const DRTHL7StructuredDocumentReferenceSequence &getHL7StructuredDocumentReferenceSequence() const { return HL7StructuredDocumentReferenceSequence; } + /** get InstitutionalDepartmentTypeCodeSequence (0008,1041) + * @return reference to sequence element + */ + DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() + { return InstitutionalDepartmentTypeCodeSequence; } + + /** get InstitutionalDepartmentTypeCodeSequence (0008,1041) + * @return const reference to sequence element + */ + const DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() const + { return InstitutionalDepartmentTypeCodeSequence; } + /** get IssuerOfAccessionNumberSequence (0008,0051) * @return reference to sequence element */ @@ -1718,6 +1804,30 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD const DRTReasonForPerformedProcedureCodeSequence &getReasonForPerformedProcedureCodeSequence() const { return ReasonForPerformedProcedureCodeSequence; } + /** get ReasonForVisitCodeSequence (0032,1067) + * @return reference to sequence element + */ + DRTReasonForVisitCodeSequence &getReasonForVisitCodeSequence() + { return ReasonForVisitCodeSequence; } + + /** get ReasonForVisitCodeSequence (0032,1067) + * @return const reference to sequence element + */ + const DRTReasonForVisitCodeSequence &getReasonForVisitCodeSequence() const + { return ReasonForVisitCodeSequence; } + + /** get ReferencedDefinedProtocolSequence (0018,990c) + * @return reference to sequence element + */ + DRTReferencedDefinedProtocolSequence &getReferencedDefinedProtocolSequence() + { return ReferencedDefinedProtocolSequence; } + + /** get ReferencedDefinedProtocolSequence (0018,990c) + * @return const reference to sequence element + */ + const DRTReferencedDefinedProtocolSequence &getReferencedDefinedProtocolSequence() const + { return ReferencedDefinedProtocolSequence; } + /** get ReferencedDoseSequence (300c,0080) * @return reference to sequence element */ @@ -1790,6 +1900,18 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD const DRTReferencedPerformedProcedureStepSequence &getReferencedPerformedProcedureStepSequence() const { return ReferencedPerformedProcedureStepSequence; } + /** get ReferencedPerformedProtocolSequence (0018,990d) + * @return reference to sequence element + */ + DRTReferencedPerformedProtocolSequence &getReferencedPerformedProtocolSequence() + { return ReferencedPerformedProtocolSequence; } + + /** get ReferencedPerformedProtocolSequence (0018,990d) + * @return const reference to sequence element + */ + const DRTReferencedPerformedProtocolSequence &getReferencedPerformedProtocolSequence() const + { return ReferencedPerformedProtocolSequence; } + /** get ReferencedRTPlanSequence (300c,0002) * @return reference to sequence element */ @@ -1994,6 +2116,18 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule &getTreatmentMachineSequence() const { return TreatmentMachineSequence; } + /** get TreatmentSiteCodeSequence (3010,0078) + * @return reference to sequence element + */ + DRTTreatmentSiteCodeSequence &getTreatmentSiteCodeSequence() + { return TreatmentSiteCodeSequence; } + + /** get TreatmentSiteCodeSequence (3010,0078) + * @return const reference to sequence element + */ + const DRTTreatmentSiteCodeSequence &getTreatmentSiteCodeSequence() const + { return TreatmentSiteCodeSequence; } + /** get UDISequence (0018,100a) * @return reference to sequence element */ @@ -2057,6 +2191,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD */ virtual OFCondition setAuthorizationEquipmentCertificationNumber(const OFString &value, const OFBool check = OFTrue); + /** set BarcodeValue (2200,0005) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setBarcodeValue(const OFString &value, const OFBool check = OFTrue); + /** set BrachyTreatmentTechnique (300a,0200) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled @@ -2218,6 +2359,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD */ virtual OFCondition setDeviceSerialNumber(const OFString &value, const OFBool check = OFTrue); + /** set DeviceUID (0018,1002) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setDeviceUID(const OFString &value, const OFBool check = OFTrue); + /** set EthnicGroup (0010,2160) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled @@ -2281,6 +2429,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD */ virtual OFCondition setInstanceNumber(const OFString &value, const OFBool check = OFTrue); + /** set InstanceOriginStatus (0400,0600) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setInstanceOriginStatus(const OFString &value, const OFBool check = OFTrue); + /** set InstitutionAddress (0008,0081) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (ST) and VM (1) if enabled @@ -2344,6 +2499,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD */ virtual OFCondition setManufacturer(const OFString &value, const OFBool check = OFTrue); + /** set ManufacturerDeviceClassUID (0018,100b) + * @param value value to be set (possibly multi-valued) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1-n) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setManufacturerDeviceClassUID(const OFString &value, const OFBool check = OFTrue); + /** set ManufacturerModelName (0008,1090) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled @@ -2680,6 +2842,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD */ virtual OFCondition setRTPlanTime(const OFString &value, const OFBool check = OFTrue); + /** set ReasonForVisit (0032,1066) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setReasonForVisit(const OFString &value, const OFBool check = OFTrue); + /** set ReferringPhysicianName (0008,0090) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (PN) and VM (1) if enabled @@ -2694,6 +2863,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD */ virtual OFCondition setRelatedGeneralSOPClassUID(const OFString &value, const OFBool check = OFTrue); + /** set RequestingService (0032,1033) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setRequestingService(const OFString &value, const OFBool check = OFTrue); + /** set ResponsibleOrganization (0010,2299) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled @@ -2932,12 +3108,26 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD */ virtual OFCondition setTreatmentProtocols(const OFString &value, const OFBool check = OFTrue); - /** set TreatmentSites (300a,000b) - * @param value value to be set (possibly multi-valued) or "" for no value - * @param check check 'value' for conformance with VR (LO) and VM (1-n) if enabled + /** set TreatmentSessionUID (300a,0700) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setTreatmentSessionUID(const OFString &value, const OFBool check = OFTrue); + + /** set TreatmentSite (3010,0077) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setTreatmentSite(const OFString &value, const OFBool check = OFTrue); + + /** set TypeOfPatientID (0010,0022) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled * @return status, EC_Normal if successful, an error code otherwise */ - virtual OFCondition setTreatmentSites(const OFString &value, const OFBool check = OFTrue); + virtual OFCondition setTypeOfPatientID(const OFString &value, const OFBool check = OFTrue); protected: @@ -2969,6 +3159,8 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD DcmLongString IssuerOfPatientID; /// IssuerOfPatientIDQualifiersSequence (0010,0024) vr=SQ, vm=1, type=3 DRTIssuerOfPatientIDQualifiersSequence IssuerOfPatientIDQualifiersSequence; + /// TypeOfPatientID (0010,0022) vr=CS, vm=1, type=3 + DcmCodeString TypeOfPatientID; /// PatientBirthDate (0010,0030) vr=DA, vm=1, type=2 DcmDate PatientBirthDate; /// PatientBirthDateInAlternativeCalendar (0010,0033) vr=LO, vm=1, type=3 @@ -3087,6 +3279,8 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD DcmPersonName NameOfPhysiciansReadingStudy; /// PhysiciansReadingStudyIdentificationSequence (0008,1062) vr=SQ, vm=1, type=3 DRTPhysiciansReadingStudyIdentificationSequence PhysiciansReadingStudyIdentificationSequence; + /// RequestingService (0032,1033) vr=LO, vm=1, type=3 + DcmLongString RequestingService; /// RequestingServiceCodeSequence (0032,1034) vr=SQ, vm=1, type=3 DRTRequestingServiceCodeSequence RequestingServiceCodeSequence; /// ReferencedStudySequence (0008,1110) vr=SQ, vm=1, type=3 @@ -3136,6 +3330,10 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD DcmLongString AdmissionID; /// IssuerOfAdmissionIDSequence (0038,0014) vr=SQ, vm=1, type=3 DRTIssuerOfAdmissionIDSequence IssuerOfAdmissionIDSequence; + /// ReasonForVisit (0032,1066) vr=UT, vm=1, type=3 + DcmUnlimitedText ReasonForVisit; + /// ReasonForVisitCodeSequence (0032,1067) vr=SQ, vm=1, type=3 + DRTReasonForVisitCodeSequence ReasonForVisitCodeSequence; /// ServiceEpisodeID (0038,0060) vr=LO, vm=1, type=3 DcmLongString ServiceEpisodeID; /// IssuerOfServiceEpisodeIDSequence (0038,0064) vr=SQ, vm=1, type=3 @@ -3151,6 +3349,8 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD DcmLongString ClinicalTrialTimePointID; /// ClinicalTrialTimePointDescription (0012,0051) vr=ST, vm=1, type=3 DcmShortText ClinicalTrialTimePointDescription; + /// ClinicalTrialTimePointTypeCodeSequence (0012,0054) vr=SQ, vm=1, type=3 + DRTClinicalTrialTimePointTypeCodeSequence ClinicalTrialTimePointTypeCodeSequence; /// LongitudinalTemporalOffsetFromEvent (0012,0052) vr=FD, vm=1, type=3 DcmFloatingPointDouble LongitudinalTemporalOffsetFromEvent; /// LongitudinalTemporalEventType (0012,0053) vr=CS, vm=1, type=1C @@ -3198,6 +3398,8 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD DRTPerformedProtocolCodeSequence PerformedProtocolCodeSequence; /// CommentsOnThePerformedProcedureStep (0040,0280) vr=ST, vm=1, type=3 DcmShortText CommentsOnThePerformedProcedureStep; + /// TreatmentSessionUID (300a,0700) vr=UI, vm=1, type=3 + DcmUniqueIdentifier TreatmentSessionUID; // --- ClinicalTrialSeriesModule (U) --- @@ -3227,8 +3429,12 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD DcmShortString StationName; /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3 DcmLongString InstitutionalDepartmentName; + /// InstitutionalDepartmentTypeCodeSequence (0008,1041) vr=SQ, vm=1, type=3 + DRTInstitutionalDepartmentTypeCodeSequence InstitutionalDepartmentTypeCodeSequence; /// ManufacturerModelName (0008,1090) vr=LO, vm=1, type=3 DcmLongString ManufacturerModelName; + /// ManufacturerDeviceClassUID (0018,100b) vr=UI, vm=1-n, type=3 + DcmUniqueIdentifier ManufacturerDeviceClassUID; /// DeviceSerialNumber (0018,1000) vr=LO, vm=1, type=3 DcmLongString DeviceSerialNumber; /// SoftwareVersions (0018,1020) vr=LO, vm=1-n, type=3 @@ -3237,6 +3443,8 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD DcmLongString GantryID; /// UDISequence (0018,100a) vr=SQ, vm=1, type=3 DRTUDISequence UDISequence; + /// DeviceUID (0018,1002) vr=UI, vm=1, type=3 + DcmUniqueIdentifier DeviceUID; /// SpatialResolution (0018,1050) vr=DS, vm=1, type=3 DcmDecimalString SpatialResolution; /// DateOfLastCalibration (0018,1200) vr=DA, vm=1-n, type=3 @@ -3265,8 +3473,10 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD DcmLongString TreatmentProtocols; /// PlanIntent (300a,000a) vr=CS, vm=1, type=3 DcmCodeString PlanIntent; - /// TreatmentSites (300a,000b) vr=LO, vm=1-n, type=3 - DcmLongString TreatmentSites; + /// TreatmentSite (3010,0077) vr=LO, vm=1, type=3 + DcmLongString TreatmentSite; + /// TreatmentSiteCodeSequence (3010,0078) vr=SQ, vm=1, type=3 + DRTTreatmentSiteCodeSequence TreatmentSiteCodeSequence; /// RTPlanGeometry (300a,000c) vr=CS, vm=1, type=1 DcmCodeString RTPlanGeometry; /// ReferencedStructureSetSequence (300c,0060) vr=SQ, vm=1, type=1C @@ -3405,6 +3615,14 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD DcmCodeString ContentQualification; /// PrivateDataElementCharacteristicsSequence (0008,0300) vr=SQ, vm=1, type=3 DRTPrivateDataElementCharacteristicsSequence PrivateDataElementCharacteristicsSequence; + /// InstanceOriginStatus (0400,0600) vr=CS, vm=1, type=3 + DcmCodeString InstanceOriginStatus; + /// BarcodeValue (2200,0005) vr=LT, vm=1, type=3 + DcmLongText BarcodeValue; + /// ReferencedDefinedProtocolSequence (0018,990c) vr=SQ, vm=1, type=1C + DRTReferencedDefinedProtocolSequence ReferencedDefinedProtocolSequence; + /// ReferencedPerformedProtocolSequence (0018,990d) vr=SQ, vm=1, type=1C + DRTReferencedPerformedProtocolSequence ReferencedPerformedProtocolSequence; // --- CommonInstanceReferenceModule (U) --- diff --git a/dcmrt/include/dcmtk/dcmrt/drtstrct.h b/dcmrt/include/dcmtk/dcmrt/drtstrct.h index b570a937..0d68d662 100644 --- a/dcmrt/include/dcmtk/dcmrt/drtstrct.h +++ b/dcmrt/include/dcmtk/dcmrt/drtstrct.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTStructureSetIOD * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -20,6 +20,7 @@ #include "dcmtk/dcmrt/drttypes.h" // module-specific helper class #include "dcmtk/dcmrt/seq/drtadcs.h" // for AdmittingDiagnosesCodeSequence #include "dcmtk/dcmrt/seq/drtbrs.h" // for BreedRegistrationSequence +#include "dcmtk/dcmrt/seq/drtcttcs.h" // for ClinicalTrialTimePointTypeCodeSequence #include "dcmtk/dcmrt/seq/drtcsis.h" // for CodingSchemeIdentificationSequence #include "dcmtk/dcmrt/seq/drtcctus.h" // for ConsentForClinicalTrialUseSequence #include "dcmtk/dcmrt/seq/drtcpis.h" // for ConsultingPhysicianIdentificationSequence @@ -33,6 +34,7 @@ #include "dcmtk/dcmrt/seq/drtgms.h" // for GeneticModificationsSequence #include "dcmtk/dcmrt/seq/drtgpis.h" // for GroupOfPatientsIdentificationSequence #include "dcmtk/dcmrt/seq/drthsdrs.h" // for HL7StructuredDocumentReferenceSequence +#include "dcmtk/dcmrt/seq/drtidcs.h" // for InstitutionalDepartmentTypeCodeSequence #include "dcmtk/dcmrt/seq/drtians.h" // for IssuerOfAccessionNumberSequence #include "dcmtk/dcmrt/seq/drtiais.h" // for IssuerOfAdmissionIDSequence #include "dcmtk/dcmrt/seq/drtipiqs.h" // for IssuerOfPatientIDQualifiersSequence @@ -54,12 +56,15 @@ #include "dcmtk/dcmrt/seq/drtrcs.h" // for ROIContourSequence #include "dcmtk/dcmrt/seq/drtrros.h" // for RTROIObservationsSequence #include "dcmtk/dcmrt/seq/drtrppcs.h" // for ReasonForPerformedProcedureCodeSequence +#include "dcmtk/dcmrt/seq/drtrvcs.h" // for ReasonForVisitCodeSequence +#include "dcmtk/dcmrt/seq/drtrdps.h" // for ReferencedDefinedProtocolSequence #include "dcmtk/dcmrt/seq/drtrfors.h" // for ReferencedFrameOfReferenceSequence #include "dcmtk/dcmrt/seq/drtrims.h" // for ReferencedImageSequence #include "dcmtk/dcmrt/seq/drtris.h" // for ReferencedInstanceSequence #include "dcmtk/dcmrt/seq/drtrpphs.h" // for ReferencedPatientPhotoSequence #include "dcmtk/dcmrt/seq/drtrps.h" // for ReferencedPatientSequence #include "dcmtk/dcmrt/seq/drtrppss.h" // for ReferencedPerformedProcedureStepSequence +#include "dcmtk/dcmrt/seq/drtrpprs.h" // for ReferencedPerformedProtocolSequence #include "dcmtk/dcmrt/seq/drtrsers.h" // for ReferencedSeriesSequence #include "dcmtk/dcmrt/seq/drtrss.h" // for ReferencedStudySequence #include "dcmtk/dcmrt/seq/drtrpis.h" // for ReferringPhysicianIdentificationSequence @@ -268,6 +273,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD */ virtual OFCondition getAuthorizationEquipmentCertificationNumber(OFString &value, const signed long pos = 0) const; + /** get BarcodeValue (2200,0005) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getBarcodeValue(OFString &value, const signed long pos = 0) const; + /** get ClinicalTrialCoordinatingCenterName (0012,0060) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -415,6 +427,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD */ virtual OFCondition getDeviceSerialNumber(OFString &value, const signed long pos = 0) const; + /** get DeviceUID (0018,1002) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getDeviceUID(OFString &value, const signed long pos = 0) const; + /** get EthnicGroup (0010,2160) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -478,6 +497,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD */ virtual OFCondition getInstanceNumber(Sint32 &value, const unsigned long pos = 0) const; + /** get InstanceOriginStatus (0400,0600) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getInstanceOriginStatus(OFString &value, const signed long pos = 0) const; + /** get InstitutionAddress (0008,0081) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -541,6 +567,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD */ virtual OFCondition getManufacturer(OFString &value, const signed long pos = 0) const; + /** get ManufacturerDeviceClassUID (0018,100b) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getManufacturerDeviceClassUID(OFString &value, const signed long pos = 0) const; + /** get ManufacturerModelName (0008,1090) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -856,6 +889,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD */ virtual OFCondition getQueryRetrieveView(OFString &value, const signed long pos = 0) const; + /** get ReasonForVisit (0032,1066) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getReasonForVisit(OFString &value, const signed long pos = 0) const; + /** get ReferringPhysicianName (0008,0090) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -870,6 +910,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD */ virtual OFCondition getRelatedGeneralSOPClassUID(OFString &value, const signed long pos = 0) const; + /** get RequestingService (0032,1033) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getRequestingService(OFString &value, const signed long pos = 0) const; + /** get ResponsibleOrganization (0010,2299) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -1150,6 +1197,20 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD */ virtual OFCondition getTimezoneOffsetFromUTC(OFString &value, const signed long pos = 0) const; + /** get TreatmentSessionUID (300a,0700) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getTreatmentSessionUID(OFString &value, const signed long pos = 0) const; + + /** get TypeOfPatientID (0010,0022) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getTypeOfPatientID(OFString &value, const signed long pos = 0) const; + // --- get DICOM sequence attributes --- /** get AdmittingDiagnosesCodeSequence (0008,1084) @@ -1176,6 +1237,18 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD const DRTBreedRegistrationSequence &getBreedRegistrationSequence() const { return BreedRegistrationSequence; } + /** get ClinicalTrialTimePointTypeCodeSequence (0012,0054) + * @return reference to sequence element + */ + DRTClinicalTrialTimePointTypeCodeSequence &getClinicalTrialTimePointTypeCodeSequence() + { return ClinicalTrialTimePointTypeCodeSequence; } + + /** get ClinicalTrialTimePointTypeCodeSequence (0012,0054) + * @return const reference to sequence element + */ + const DRTClinicalTrialTimePointTypeCodeSequence &getClinicalTrialTimePointTypeCodeSequence() const + { return ClinicalTrialTimePointTypeCodeSequence; } + /** get CodingSchemeIdentificationSequence (0008,0110) * @return reference to sequence element */ @@ -1332,6 +1405,18 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD const DRTHL7StructuredDocumentReferenceSequence &getHL7StructuredDocumentReferenceSequence() const { return HL7StructuredDocumentReferenceSequence; } + /** get InstitutionalDepartmentTypeCodeSequence (0008,1041) + * @return reference to sequence element + */ + DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() + { return InstitutionalDepartmentTypeCodeSequence; } + + /** get InstitutionalDepartmentTypeCodeSequence (0008,1041) + * @return const reference to sequence element + */ + const DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() const + { return InstitutionalDepartmentTypeCodeSequence; } + /** get IssuerOfAccessionNumberSequence (0008,0051) * @return reference to sequence element */ @@ -1584,6 +1669,30 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD const DRTReasonForPerformedProcedureCodeSequence &getReasonForPerformedProcedureCodeSequence() const { return ReasonForPerformedProcedureCodeSequence; } + /** get ReasonForVisitCodeSequence (0032,1067) + * @return reference to sequence element + */ + DRTReasonForVisitCodeSequence &getReasonForVisitCodeSequence() + { return ReasonForVisitCodeSequence; } + + /** get ReasonForVisitCodeSequence (0032,1067) + * @return const reference to sequence element + */ + const DRTReasonForVisitCodeSequence &getReasonForVisitCodeSequence() const + { return ReasonForVisitCodeSequence; } + + /** get ReferencedDefinedProtocolSequence (0018,990c) + * @return reference to sequence element + */ + DRTReferencedDefinedProtocolSequence &getReferencedDefinedProtocolSequence() + { return ReferencedDefinedProtocolSequence; } + + /** get ReferencedDefinedProtocolSequence (0018,990c) + * @return const reference to sequence element + */ + const DRTReferencedDefinedProtocolSequence &getReferencedDefinedProtocolSequence() const + { return ReferencedDefinedProtocolSequence; } + /** get ReferencedFrameOfReferenceSequence (3006,0010) * @return reference to sequence element */ @@ -1656,6 +1765,18 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD const DRTReferencedPerformedProcedureStepSequence &getReferencedPerformedProcedureStepSequence() const { return ReferencedPerformedProcedureStepSequence; } + /** get ReferencedPerformedProtocolSequence (0018,990d) + * @return reference to sequence element + */ + DRTReferencedPerformedProtocolSequence &getReferencedPerformedProtocolSequence() + { return ReferencedPerformedProtocolSequence; } + + /** get ReferencedPerformedProtocolSequence (0018,990d) + * @return const reference to sequence element + */ + const DRTReferencedPerformedProtocolSequence &getReferencedPerformedProtocolSequence() const + { return ReferencedPerformedProtocolSequence; } + /** get ReferencedSeriesSequence (0008,1115) * @return reference to sequence element */ @@ -1875,6 +1996,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD */ virtual OFCondition setAuthorizationEquipmentCertificationNumber(const OFString &value, const OFBool check = OFTrue); + /** set BarcodeValue (2200,0005) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setBarcodeValue(const OFString &value, const OFBool check = OFTrue); + /** set ClinicalTrialCoordinatingCenterName (0012,0060) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled @@ -2022,6 +2150,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD */ virtual OFCondition setDeviceSerialNumber(const OFString &value, const OFBool check = OFTrue); + /** set DeviceUID (0018,1002) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setDeviceUID(const OFString &value, const OFBool check = OFTrue); + /** set EthnicGroup (0010,2160) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled @@ -2078,6 +2213,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD */ virtual OFCondition setInstanceNumber(const OFString &value, const OFBool check = OFTrue); + /** set InstanceOriginStatus (0400,0600) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setInstanceOriginStatus(const OFString &value, const OFBool check = OFTrue); + /** set InstitutionAddress (0008,0081) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (ST) and VM (1) if enabled @@ -2141,6 +2283,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD */ virtual OFCondition setManufacturer(const OFString &value, const OFBool check = OFTrue); + /** set ManufacturerDeviceClassUID (0018,100b) + * @param value value to be set (possibly multi-valued) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1-n) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setManufacturerDeviceClassUID(const OFString &value, const OFBool check = OFTrue); + /** set ManufacturerModelName (0008,1090) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled @@ -2421,6 +2570,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD */ virtual OFCondition setQueryRetrieveView(const OFString &value, const OFBool check = OFTrue); + /** set ReasonForVisit (0032,1066) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setReasonForVisit(const OFString &value, const OFBool check = OFTrue); + /** set ReferringPhysicianName (0008,0090) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (PN) and VM (1) if enabled @@ -2435,6 +2591,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD */ virtual OFCondition setRelatedGeneralSOPClassUID(const OFString &value, const OFBool check = OFTrue); + /** set RequestingService (0032,1033) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setRequestingService(const OFString &value, const OFBool check = OFTrue); + /** set ResponsibleOrganization (0010,2299) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled @@ -2701,6 +2864,20 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD */ virtual OFCondition setTimezoneOffsetFromUTC(const OFString &value, const OFBool check = OFTrue); + /** set TreatmentSessionUID (300a,0700) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setTreatmentSessionUID(const OFString &value, const OFBool check = OFTrue); + + /** set TypeOfPatientID (0010,0022) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setTypeOfPatientID(const OFString &value, const OFBool check = OFTrue); + protected: @@ -2731,6 +2908,8 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD DcmLongString IssuerOfPatientID; /// IssuerOfPatientIDQualifiersSequence (0010,0024) vr=SQ, vm=1, type=3 DRTIssuerOfPatientIDQualifiersSequence IssuerOfPatientIDQualifiersSequence; + /// TypeOfPatientID (0010,0022) vr=CS, vm=1, type=3 + DcmCodeString TypeOfPatientID; /// PatientBirthDate (0010,0030) vr=DA, vm=1, type=2 DcmDate PatientBirthDate; /// PatientBirthDateInAlternativeCalendar (0010,0033) vr=LO, vm=1, type=3 @@ -2849,6 +3028,8 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD DcmPersonName NameOfPhysiciansReadingStudy; /// PhysiciansReadingStudyIdentificationSequence (0008,1062) vr=SQ, vm=1, type=3 DRTPhysiciansReadingStudyIdentificationSequence PhysiciansReadingStudyIdentificationSequence; + /// RequestingService (0032,1033) vr=LO, vm=1, type=3 + DcmLongString RequestingService; /// RequestingServiceCodeSequence (0032,1034) vr=SQ, vm=1, type=3 DRTRequestingServiceCodeSequence RequestingServiceCodeSequence; /// ReferencedStudySequence (0008,1110) vr=SQ, vm=1, type=3 @@ -2898,6 +3079,10 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD DcmLongString AdmissionID; /// IssuerOfAdmissionIDSequence (0038,0014) vr=SQ, vm=1, type=3 DRTIssuerOfAdmissionIDSequence IssuerOfAdmissionIDSequence; + /// ReasonForVisit (0032,1066) vr=UT, vm=1, type=3 + DcmUnlimitedText ReasonForVisit; + /// ReasonForVisitCodeSequence (0032,1067) vr=SQ, vm=1, type=3 + DRTReasonForVisitCodeSequence ReasonForVisitCodeSequence; /// ServiceEpisodeID (0038,0060) vr=LO, vm=1, type=3 DcmLongString ServiceEpisodeID; /// IssuerOfServiceEpisodeIDSequence (0038,0064) vr=SQ, vm=1, type=3 @@ -2913,6 +3098,8 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD DcmLongString ClinicalTrialTimePointID; /// ClinicalTrialTimePointDescription (0012,0051) vr=ST, vm=1, type=3 DcmShortText ClinicalTrialTimePointDescription; + /// ClinicalTrialTimePointTypeCodeSequence (0012,0054) vr=SQ, vm=1, type=3 + DRTClinicalTrialTimePointTypeCodeSequence ClinicalTrialTimePointTypeCodeSequence; /// LongitudinalTemporalOffsetFromEvent (0012,0052) vr=FD, vm=1, type=3 DcmFloatingPointDouble LongitudinalTemporalOffsetFromEvent; /// LongitudinalTemporalEventType (0012,0053) vr=CS, vm=1, type=1C @@ -2960,6 +3147,8 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD DRTPerformedProtocolCodeSequence PerformedProtocolCodeSequence; /// CommentsOnThePerformedProcedureStep (0040,0280) vr=ST, vm=1, type=3 DcmShortText CommentsOnThePerformedProcedureStep; + /// TreatmentSessionUID (300a,0700) vr=UI, vm=1, type=3 + DcmUniqueIdentifier TreatmentSessionUID; // --- ClinicalTrialSeriesModule (U) --- @@ -2982,8 +3171,12 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD DcmShortString StationName; /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3 DcmLongString InstitutionalDepartmentName; + /// InstitutionalDepartmentTypeCodeSequence (0008,1041) vr=SQ, vm=1, type=3 + DRTInstitutionalDepartmentTypeCodeSequence InstitutionalDepartmentTypeCodeSequence; /// ManufacturerModelName (0008,1090) vr=LO, vm=1, type=3 DcmLongString ManufacturerModelName; + /// ManufacturerDeviceClassUID (0018,100b) vr=UI, vm=1-n, type=3 + DcmUniqueIdentifier ManufacturerDeviceClassUID; /// DeviceSerialNumber (0018,1000) vr=LO, vm=1, type=3 DcmLongString DeviceSerialNumber; /// SoftwareVersions (0018,1020) vr=LO, vm=1-n, type=3 @@ -2992,6 +3185,8 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD DcmLongString GantryID; /// UDISequence (0018,100a) vr=SQ, vm=1, type=3 DRTUDISequence UDISequence; + /// DeviceUID (0018,1002) vr=UI, vm=1, type=3 + DcmUniqueIdentifier DeviceUID; /// SpatialResolution (0018,1050) vr=DS, vm=1, type=3 DcmDecimalString SpatialResolution; /// DateOfLastCalibration (0018,1200) vr=DA, vm=1-n, type=3 @@ -3127,6 +3322,14 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD DcmCodeString ContentQualification; /// PrivateDataElementCharacteristicsSequence (0008,0300) vr=SQ, vm=1, type=3 DRTPrivateDataElementCharacteristicsSequence PrivateDataElementCharacteristicsSequence; + /// InstanceOriginStatus (0400,0600) vr=CS, vm=1, type=3 + DcmCodeString InstanceOriginStatus; + /// BarcodeValue (2200,0005) vr=LT, vm=1, type=3 + DcmLongText BarcodeValue; + /// ReferencedDefinedProtocolSequence (0018,990c) vr=SQ, vm=1, type=1C + DRTReferencedDefinedProtocolSequence ReferencedDefinedProtocolSequence; + /// ReferencedPerformedProtocolSequence (0018,990d) vr=SQ, vm=1, type=1C + DRTReferencedPerformedProtocolSequence ReferencedPerformedProtocolSequence; // --- CommonInstanceReferenceModule (U) --- diff --git a/dcmrt/include/dcmtk/dcmrt/drttreat.h b/dcmrt/include/dcmtk/dcmrt/drttreat.h index 0d59952d..91fc2159 100644 --- a/dcmrt/include/dcmtk/dcmrt/drttreat.h +++ b/dcmrt/include/dcmtk/dcmrt/drttreat.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTTreatmentSummaryRecordIOD * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -20,6 +20,7 @@ #include "dcmtk/dcmrt/drttypes.h" // module-specific helper class #include "dcmtk/dcmrt/seq/drtadcs.h" // for AdmittingDiagnosesCodeSequence #include "dcmtk/dcmrt/seq/drtbrs.h" // for BreedRegistrationSequence +#include "dcmtk/dcmrt/seq/drtcttcs.h" // for ClinicalTrialTimePointTypeCodeSequence #include "dcmtk/dcmrt/seq/drtcsis.h" // for CodingSchemeIdentificationSequence #include "dcmtk/dcmrt/seq/drtcctus.h" // for ConsentForClinicalTrialUseSequence #include "dcmtk/dcmrt/seq/drtcpis.h" // for ConsultingPhysicianIdentificationSequence @@ -34,6 +35,7 @@ #include "dcmtk/dcmrt/seq/drtgms.h" // for GeneticModificationsSequence #include "dcmtk/dcmrt/seq/drtgpis.h" // for GroupOfPatientsIdentificationSequence #include "dcmtk/dcmrt/seq/drthsdrs.h" // for HL7StructuredDocumentReferenceSequence +#include "dcmtk/dcmrt/seq/drtidcs.h" // for InstitutionalDepartmentTypeCodeSequence #include "dcmtk/dcmrt/seq/drtians.h" // for IssuerOfAccessionNumberSequence #include "dcmtk/dcmrt/seq/drtiais.h" // for IssuerOfAdmissionIDSequence #include "dcmtk/dcmrt/seq/drtipiqs.h" // for IssuerOfPatientIDQualifiersSequence @@ -52,15 +54,18 @@ #include "dcmtk/dcmrt/seq/drtpdecs.h" // for PrivateDataElementCharacteristicsSequence #include "dcmtk/dcmrt/seq/drtpcs.h" // for ProcedureCodeSequence #include "dcmtk/dcmrt/seq/drtrppcs.h" // for ReasonForPerformedProcedureCodeSequence +#include "dcmtk/dcmrt/seq/drtrvcs.h" // for ReasonForVisitCodeSequence +#include "dcmtk/dcmrt/seq/drtrdps.h" // for ReferencedDefinedProtocolSequence #include "dcmtk/dcmrt/seq/drtrims.h" // for ReferencedImageSequence #include "dcmtk/dcmrt/seq/drtris.h" // for ReferencedInstanceSequence #include "dcmtk/dcmrt/seq/drtrpphs.h" // for ReferencedPatientPhotoSequence #include "dcmtk/dcmrt/seq/drtrps.h" // for ReferencedPatientSequence #include "dcmtk/dcmrt/seq/drtrppss.h" // for ReferencedPerformedProcedureStepSequence -#include "dcmtk/dcmrt/seq/drtrrtps4.h" // for ReferencedRTPlanSequence +#include "dcmtk/dcmrt/seq/drtrpprs.h" // for ReferencedPerformedProtocolSequence +#include "dcmtk/dcmrt/seq/drtrtps3.h" // for ReferencedRTPlanSequence #include "dcmtk/dcmrt/seq/drtrsers.h" // for ReferencedSeriesSequence #include "dcmtk/dcmrt/seq/drtrss.h" // for ReferencedStudySequence -#include "dcmtk/dcmrt/seq/drtrtrs4.h" // for ReferencedTreatmentRecordSequence +#include "dcmtk/dcmrt/seq/drtrtrs2.h" // for ReferencedTreatmentRecordSequence #include "dcmtk/dcmrt/seq/drtrpis.h" // for ReferringPhysicianIdentificationSequence #include "dcmtk/dcmrt/seq/drtras.h" // for RequestAttributesSequence #include "dcmtk/dcmrt/seq/drtrscs.h" // for RequestingServiceCodeSequence @@ -245,6 +250,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD */ virtual OFCondition getAuthorizationEquipmentCertificationNumber(OFString &value, const signed long pos = 0) const; + /** get BarcodeValue (2200,0005) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getBarcodeValue(OFString &value, const signed long pos = 0) const; + /** get ClinicalTrialCoordinatingCenterName (0012,0060) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -399,6 +411,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD */ virtual OFCondition getDeviceSerialNumber(OFString &value, const signed long pos = 0) const; + /** get DeviceUID (0018,1002) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getDeviceUID(OFString &value, const signed long pos = 0) const; + /** get EthnicGroup (0010,2160) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -462,6 +481,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD */ virtual OFCondition getInstanceNumber(Sint32 &value, const unsigned long pos = 0) const; + /** get InstanceOriginStatus (0400,0600) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getInstanceOriginStatus(OFString &value, const signed long pos = 0) const; + /** get InstitutionAddress (0008,0081) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -525,6 +551,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD */ virtual OFCondition getManufacturer(OFString &value, const signed long pos = 0) const; + /** get ManufacturerDeviceClassUID (0018,100b) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getManufacturerDeviceClassUID(OFString &value, const signed long pos = 0) const; + /** get ManufacturerModelName (0008,1090) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -840,6 +873,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD */ virtual OFCondition getQueryRetrieveView(OFString &value, const signed long pos = 0) const; + /** get ReasonForVisit (0032,1066) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getReasonForVisit(OFString &value, const signed long pos = 0) const; + /** get ReferringPhysicianName (0008,0090) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -854,6 +894,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD */ virtual OFCondition getRelatedGeneralSOPClassUID(OFString &value, const signed long pos = 0) const; + /** get RequestingService (0032,1033) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getRequestingService(OFString &value, const signed long pos = 0) const; + /** get ResponsibleOrganization (0010,2299) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -1085,6 +1132,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD */ virtual OFCondition getTreatmentDate(OFString &value, const signed long pos = 0) const; + /** get TreatmentSessionUID (300a,0700) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getTreatmentSessionUID(OFString &value, const signed long pos = 0) const; + /** get TreatmentStatusComment (3008,0202) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -1099,6 +1153,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD */ virtual OFCondition getTreatmentTime(OFString &value, const signed long pos = 0) const; + /** get TypeOfPatientID (0010,0022) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition getTypeOfPatientID(OFString &value, const signed long pos = 0) const; + // --- get DICOM sequence attributes --- /** get AdmittingDiagnosesCodeSequence (0008,1084) @@ -1125,6 +1186,18 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD const DRTBreedRegistrationSequence &getBreedRegistrationSequence() const { return BreedRegistrationSequence; } + /** get ClinicalTrialTimePointTypeCodeSequence (0012,0054) + * @return reference to sequence element + */ + DRTClinicalTrialTimePointTypeCodeSequence &getClinicalTrialTimePointTypeCodeSequence() + { return ClinicalTrialTimePointTypeCodeSequence; } + + /** get ClinicalTrialTimePointTypeCodeSequence (0012,0054) + * @return const reference to sequence element + */ + const DRTClinicalTrialTimePointTypeCodeSequence &getClinicalTrialTimePointTypeCodeSequence() const + { return ClinicalTrialTimePointTypeCodeSequence; } + /** get CodingSchemeIdentificationSequence (0008,0110) * @return reference to sequence element */ @@ -1293,6 +1366,18 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD const DRTHL7StructuredDocumentReferenceSequence &getHL7StructuredDocumentReferenceSequence() const { return HL7StructuredDocumentReferenceSequence; } + /** get InstitutionalDepartmentTypeCodeSequence (0008,1041) + * @return reference to sequence element + */ + DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() + { return InstitutionalDepartmentTypeCodeSequence; } + + /** get InstitutionalDepartmentTypeCodeSequence (0008,1041) + * @return const reference to sequence element + */ + const DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() const + { return InstitutionalDepartmentTypeCodeSequence; } + /** get IssuerOfAccessionNumberSequence (0008,0051) * @return reference to sequence element */ @@ -1509,6 +1594,30 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD const DRTReasonForPerformedProcedureCodeSequence &getReasonForPerformedProcedureCodeSequence() const { return ReasonForPerformedProcedureCodeSequence; } + /** get ReasonForVisitCodeSequence (0032,1067) + * @return reference to sequence element + */ + DRTReasonForVisitCodeSequence &getReasonForVisitCodeSequence() + { return ReasonForVisitCodeSequence; } + + /** get ReasonForVisitCodeSequence (0032,1067) + * @return const reference to sequence element + */ + const DRTReasonForVisitCodeSequence &getReasonForVisitCodeSequence() const + { return ReasonForVisitCodeSequence; } + + /** get ReferencedDefinedProtocolSequence (0018,990c) + * @return reference to sequence element + */ + DRTReferencedDefinedProtocolSequence &getReferencedDefinedProtocolSequence() + { return ReferencedDefinedProtocolSequence; } + + /** get ReferencedDefinedProtocolSequence (0018,990c) + * @return const reference to sequence element + */ + const DRTReferencedDefinedProtocolSequence &getReferencedDefinedProtocolSequence() const + { return ReferencedDefinedProtocolSequence; } + /** get ReferencedImageSequence (0008,1140) * @return reference to sequence element */ @@ -1569,6 +1678,18 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD const DRTReferencedPerformedProcedureStepSequence &getReferencedPerformedProcedureStepSequence() const { return ReferencedPerformedProcedureStepSequence; } + /** get ReferencedPerformedProtocolSequence (0018,990d) + * @return reference to sequence element + */ + DRTReferencedPerformedProtocolSequence &getReferencedPerformedProtocolSequence() + { return ReferencedPerformedProtocolSequence; } + + /** get ReferencedPerformedProtocolSequence (0018,990d) + * @return const reference to sequence element + */ + const DRTReferencedPerformedProtocolSequence &getReferencedPerformedProtocolSequence() const + { return ReferencedPerformedProtocolSequence; } + /** get ReferencedRTPlanSequence (300c,0002) * @return reference to sequence element */ @@ -1817,6 +1938,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD */ virtual OFCondition setAuthorizationEquipmentCertificationNumber(const OFString &value, const OFBool check = OFTrue); + /** set BarcodeValue (2200,0005) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setBarcodeValue(const OFString &value, const OFBool check = OFTrue); + /** set ClinicalTrialCoordinatingCenterName (0012,0060) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled @@ -1971,6 +2099,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD */ virtual OFCondition setDeviceSerialNumber(const OFString &value, const OFBool check = OFTrue); + /** set DeviceUID (0018,1002) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setDeviceUID(const OFString &value, const OFBool check = OFTrue); + /** set EthnicGroup (0010,2160) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled @@ -2027,6 +2162,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD */ virtual OFCondition setInstanceNumber(const OFString &value, const OFBool check = OFTrue); + /** set InstanceOriginStatus (0400,0600) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setInstanceOriginStatus(const OFString &value, const OFBool check = OFTrue); + /** set InstitutionAddress (0008,0081) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (ST) and VM (1) if enabled @@ -2090,6 +2232,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD */ virtual OFCondition setManufacturer(const OFString &value, const OFBool check = OFTrue); + /** set ManufacturerDeviceClassUID (0018,100b) + * @param value value to be set (possibly multi-valued) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1-n) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setManufacturerDeviceClassUID(const OFString &value, const OFBool check = OFTrue); + /** set ManufacturerModelName (0008,1090) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled @@ -2370,6 +2519,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD */ virtual OFCondition setQueryRetrieveView(const OFString &value, const OFBool check = OFTrue); + /** set ReasonForVisit (0032,1066) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setReasonForVisit(const OFString &value, const OFBool check = OFTrue); + /** set ReferringPhysicianName (0008,0090) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (PN) and VM (1) if enabled @@ -2384,6 +2540,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD */ virtual OFCondition setRelatedGeneralSOPClassUID(const OFString &value, const OFBool check = OFTrue); + /** set RequestingService (0032,1033) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setRequestingService(const OFString &value, const OFBool check = OFTrue); + /** set ResponsibleOrganization (0010,2299) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled @@ -2601,6 +2764,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD */ virtual OFCondition setTreatmentDate(const OFString &value, const OFBool check = OFTrue); + /** set TreatmentSessionUID (300a,0700) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setTreatmentSessionUID(const OFString &value, const OFBool check = OFTrue); + /** set TreatmentStatusComment (3008,0202) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (ST) and VM (1) if enabled @@ -2615,6 +2785,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD */ virtual OFCondition setTreatmentTime(const OFString &value, const OFBool check = OFTrue); + /** set TypeOfPatientID (0010,0022) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + virtual OFCondition setTypeOfPatientID(const OFString &value, const OFBool check = OFTrue); + protected: @@ -2645,6 +2822,8 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD DcmLongString IssuerOfPatientID; /// IssuerOfPatientIDQualifiersSequence (0010,0024) vr=SQ, vm=1, type=3 DRTIssuerOfPatientIDQualifiersSequence IssuerOfPatientIDQualifiersSequence; + /// TypeOfPatientID (0010,0022) vr=CS, vm=1, type=3 + DcmCodeString TypeOfPatientID; /// PatientBirthDate (0010,0030) vr=DA, vm=1, type=2 DcmDate PatientBirthDate; /// PatientBirthDateInAlternativeCalendar (0010,0033) vr=LO, vm=1, type=3 @@ -2763,6 +2942,8 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD DcmPersonName NameOfPhysiciansReadingStudy; /// PhysiciansReadingStudyIdentificationSequence (0008,1062) vr=SQ, vm=1, type=3 DRTPhysiciansReadingStudyIdentificationSequence PhysiciansReadingStudyIdentificationSequence; + /// RequestingService (0032,1033) vr=LO, vm=1, type=3 + DcmLongString RequestingService; /// RequestingServiceCodeSequence (0032,1034) vr=SQ, vm=1, type=3 DRTRequestingServiceCodeSequence RequestingServiceCodeSequence; /// ReferencedStudySequence (0008,1110) vr=SQ, vm=1, type=3 @@ -2812,6 +2993,10 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD DcmLongString AdmissionID; /// IssuerOfAdmissionIDSequence (0038,0014) vr=SQ, vm=1, type=3 DRTIssuerOfAdmissionIDSequence IssuerOfAdmissionIDSequence; + /// ReasonForVisit (0032,1066) vr=UT, vm=1, type=3 + DcmUnlimitedText ReasonForVisit; + /// ReasonForVisitCodeSequence (0032,1067) vr=SQ, vm=1, type=3 + DRTReasonForVisitCodeSequence ReasonForVisitCodeSequence; /// ServiceEpisodeID (0038,0060) vr=LO, vm=1, type=3 DcmLongString ServiceEpisodeID; /// IssuerOfServiceEpisodeIDSequence (0038,0064) vr=SQ, vm=1, type=3 @@ -2827,6 +3012,8 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD DcmLongString ClinicalTrialTimePointID; /// ClinicalTrialTimePointDescription (0012,0051) vr=ST, vm=1, type=3 DcmShortText ClinicalTrialTimePointDescription; + /// ClinicalTrialTimePointTypeCodeSequence (0012,0054) vr=SQ, vm=1, type=3 + DRTClinicalTrialTimePointTypeCodeSequence ClinicalTrialTimePointTypeCodeSequence; /// LongitudinalTemporalOffsetFromEvent (0012,0052) vr=FD, vm=1, type=3 DcmFloatingPointDouble LongitudinalTemporalOffsetFromEvent; /// LongitudinalTemporalEventType (0012,0053) vr=CS, vm=1, type=1C @@ -2874,6 +3061,8 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD DRTPerformedProtocolCodeSequence PerformedProtocolCodeSequence; /// CommentsOnThePerformedProcedureStep (0040,0280) vr=ST, vm=1, type=3 DcmShortText CommentsOnThePerformedProcedureStep; + /// TreatmentSessionUID (300a,0700) vr=UI, vm=1, type=3 + DcmUniqueIdentifier TreatmentSessionUID; // --- ClinicalTrialSeriesModule (U) --- @@ -2896,8 +3085,12 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD DcmShortString StationName; /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3 DcmLongString InstitutionalDepartmentName; + /// InstitutionalDepartmentTypeCodeSequence (0008,1041) vr=SQ, vm=1, type=3 + DRTInstitutionalDepartmentTypeCodeSequence InstitutionalDepartmentTypeCodeSequence; /// ManufacturerModelName (0008,1090) vr=LO, vm=1, type=3 DcmLongString ManufacturerModelName; + /// ManufacturerDeviceClassUID (0018,100b) vr=UI, vm=1-n, type=3 + DcmUniqueIdentifier ManufacturerDeviceClassUID; /// DeviceSerialNumber (0018,1000) vr=LO, vm=1, type=3 DcmLongString DeviceSerialNumber; /// SoftwareVersions (0018,1020) vr=LO, vm=1-n, type=3 @@ -2906,6 +3099,8 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD DcmLongString GantryID; /// UDISequence (0018,100a) vr=SQ, vm=1, type=3 DRTUDISequence UDISequence; + /// DeviceUID (0018,1002) vr=UI, vm=1, type=3 + DcmUniqueIdentifier DeviceUID; /// SpatialResolution (0018,1050) vr=DS, vm=1, type=3 DcmDecimalString SpatialResolution; /// DateOfLastCalibration (0018,1200) vr=DA, vm=1-n, type=3 @@ -3022,6 +3217,14 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD DcmCodeString ContentQualification; /// PrivateDataElementCharacteristicsSequence (0008,0300) vr=SQ, vm=1, type=3 DRTPrivateDataElementCharacteristicsSequence PrivateDataElementCharacteristicsSequence; + /// InstanceOriginStatus (0400,0600) vr=CS, vm=1, type=3 + DcmCodeString InstanceOriginStatus; + /// BarcodeValue (2200,0005) vr=LT, vm=1, type=3 + DcmLongText BarcodeValue; + /// ReferencedDefinedProtocolSequence (0018,990c) vr=SQ, vm=1, type=1C + DRTReferencedDefinedProtocolSequence ReferencedDefinedProtocolSequence; + /// ReferencedPerformedProtocolSequence (0018,990d) vr=SQ, vm=1, type=1C + DRTReferencedPerformedProtocolSequence ReferencedPerformedProtocolSequence; // --- CommonInstanceReferenceModule (U) --- diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtaadcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtaadcs.h index a0f80323..577a7aa1 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtaadcs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtaadcs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTAssigningAgencyOrDepartmentCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTAssigningAgencyOrDepartmentCodeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtadcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtadcs.h index d7c7f491..fa91b466 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtadcs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtadcs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTAdmittingDiagnosesCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTAdmittingDiagnosesCodeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtads.h b/dcmrt/include/dcmtk/dcmrt/seq/drtads.h index 5b103a5a..eafc5573 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtads.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtads.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTAdditionalDrugSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalDrugSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtafcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtafcs.h new file mode 100644 index 00000000..df1fb045 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtafcs.h @@ -0,0 +1,545 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTAlgorithmFamilyCodeSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTAFCS_H +#define DRTAFCS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtecs.h" // for EquivalentCodeSequence + + +/** Interface class for AlgorithmFamilyCodeSequence (0066,002f) + */ +class DCMTK_DCMRT_EXPORT DRTAlgorithmFamilyCodeSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get CodeMeaning (0008,0104) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodeMeaning(OFString &value, const signed long pos = 0) const; + + /** get CodeValue (0008,0100) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodeValue(OFString &value, const signed long pos = 0) const; + + /** get CodingSchemeDesignator (0008,0102) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodingSchemeDesignator(OFString &value, const signed long pos = 0) const; + + /** get CodingSchemeVersion (0008,0103) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupExtensionCreatorUID (0008,010d) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupExtensionCreatorUID(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupExtensionFlag (0008,010b) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupExtensionFlag(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupLocalVersion (0008,0107) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupLocalVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupVersion (0008,0106) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextIdentifier (0008,010f) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextIdentifier(OFString &value, const signed long pos = 0) const; + + /** get ContextUID (0008,0117) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextUID(OFString &value, const signed long pos = 0) const; + + /** get LongCodeValue (0008,0119) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const; + + /** get MappingResource (0008,0105) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResource(OFString &value, const signed long pos = 0) const; + + /** get MappingResourceName (0008,0122) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const; + + /** get MappingResourceUID (0008,0118) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const; + + /** get URNCodeValue (0008,0120) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const; + + // --- get DICOM sequence attributes --- + + /** get EquivalentCodeSequence (0008,0121) + * @return reference to sequence element + */ + DRTEquivalentCodeSequence &getEquivalentCodeSequence() + { return EquivalentCodeSequence; } + + /** get EquivalentCodeSequence (0008,0121) + * @return const reference to sequence element + */ + const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const + { return EquivalentCodeSequence; } + + // --- set DICOM attribute values --- + + /** set CodeMeaning (0008,0104) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodeMeaning(const OFString &value, const OFBool check = OFTrue); + + /** set CodeValue (0008,0100) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodeValue(const OFString &value, const OFBool check = OFTrue); + + /** set CodingSchemeDesignator (0008,0102) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodingSchemeDesignator(const OFString &value, const OFBool check = OFTrue); + + /** set CodingSchemeVersion (0008,0103) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupExtensionCreatorUID (0008,010d) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupExtensionFlag (0008,010b) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupExtensionFlag(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupLocalVersion (0008,0107) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupLocalVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupVersion (0008,0106) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextIdentifier (0008,010f) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextIdentifier(const OFString &value, const OFBool check = OFTrue); + + /** set ContextUID (0008,0117) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue); + + /** set LongCodeValue (0008,0119) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UC) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResource (0008,0105) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResourceName (0008,0122) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResourceUID (0008,0118) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue); + + /** set URNCodeValue (0008,0120) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UR) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1 + DcmLongString CodeMeaning; + /// CodeValue (0008,0100) vr=SH, vm=1, type=1C + DcmShortString CodeValue; + /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C + DcmShortString CodingSchemeDesignator; + /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C + DcmShortString CodingSchemeVersion; + /// ContextGroupExtensionCreatorUID (0008,010d) vr=UI, vm=1, type=1C + DcmUniqueIdentifier ContextGroupExtensionCreatorUID; + /// ContextGroupExtensionFlag (0008,010b) vr=CS, vm=1, type=3 + DcmCodeString ContextGroupExtensionFlag; + /// ContextGroupLocalVersion (0008,0107) vr=DT, vm=1, type=1C + DcmDateTime ContextGroupLocalVersion; + /// ContextGroupVersion (0008,0106) vr=DT, vm=1, type=1C + DcmDateTime ContextGroupVersion; + /// ContextIdentifier (0008,010f) vr=CS, vm=1, type=3 + DcmCodeString ContextIdentifier; + /// ContextUID (0008,0117) vr=UI, vm=1, type=3 + DcmUniqueIdentifier ContextUID; + /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3 + DRTEquivalentCodeSequence EquivalentCodeSequence; + /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C + DcmUnlimitedCharacters LongCodeValue; + /// MappingResource (0008,0105) vr=CS, vm=1, type=1C + DcmCodeString MappingResource; + /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3 + DcmLongString MappingResourceName; + /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3 + DcmUniqueIdentifier MappingResourceUID; + /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C + DcmUniversalResourceIdentifierOrLocator URNCodeValue; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTAlgorithmFamilyCodeSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTAlgorithmFamilyCodeSequence(const DRTAlgorithmFamilyCodeSequence ©); + + /** destructor + */ + virtual ~DRTAlgorithmFamilyCodeSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTAlgorithmFamilyCodeSequence &operator=(const DRTAlgorithmFamilyCodeSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtafs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtafs.h index 08bc745d..46b305ee 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtafs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtafs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTAssigningFacilitySequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -255,13 +255,13 @@ class DCMTK_DCMRT_EXPORT DRTAssigningFacilitySequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtags.h b/dcmrt/include/dcmtk/dcmrt/seq/drtags.h index 8562cac0..f24d732a 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtags.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtags.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTApplicatorGeometrySequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -271,13 +271,13 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorGeometrySequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtajcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtajcs.h index 21c450ce..6525c8a8 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtajcs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtajcs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTAssigningJurisdictionCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTAssigningJurisdictionCodeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtancs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtancs.h new file mode 100644 index 00000000..1b2c9145 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtancs.h @@ -0,0 +1,545 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTAlgorithmNameCodeSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTANCS_H +#define DRTANCS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtecs.h" // for EquivalentCodeSequence + + +/** Interface class for AlgorithmNameCodeSequence (0066,0030) + */ +class DCMTK_DCMRT_EXPORT DRTAlgorithmNameCodeSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get CodeMeaning (0008,0104) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodeMeaning(OFString &value, const signed long pos = 0) const; + + /** get CodeValue (0008,0100) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodeValue(OFString &value, const signed long pos = 0) const; + + /** get CodingSchemeDesignator (0008,0102) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodingSchemeDesignator(OFString &value, const signed long pos = 0) const; + + /** get CodingSchemeVersion (0008,0103) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupExtensionCreatorUID (0008,010d) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupExtensionCreatorUID(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupExtensionFlag (0008,010b) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupExtensionFlag(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupLocalVersion (0008,0107) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupLocalVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupVersion (0008,0106) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextIdentifier (0008,010f) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextIdentifier(OFString &value, const signed long pos = 0) const; + + /** get ContextUID (0008,0117) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextUID(OFString &value, const signed long pos = 0) const; + + /** get LongCodeValue (0008,0119) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const; + + /** get MappingResource (0008,0105) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResource(OFString &value, const signed long pos = 0) const; + + /** get MappingResourceName (0008,0122) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const; + + /** get MappingResourceUID (0008,0118) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const; + + /** get URNCodeValue (0008,0120) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const; + + // --- get DICOM sequence attributes --- + + /** get EquivalentCodeSequence (0008,0121) + * @return reference to sequence element + */ + DRTEquivalentCodeSequence &getEquivalentCodeSequence() + { return EquivalentCodeSequence; } + + /** get EquivalentCodeSequence (0008,0121) + * @return const reference to sequence element + */ + const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const + { return EquivalentCodeSequence; } + + // --- set DICOM attribute values --- + + /** set CodeMeaning (0008,0104) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodeMeaning(const OFString &value, const OFBool check = OFTrue); + + /** set CodeValue (0008,0100) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodeValue(const OFString &value, const OFBool check = OFTrue); + + /** set CodingSchemeDesignator (0008,0102) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodingSchemeDesignator(const OFString &value, const OFBool check = OFTrue); + + /** set CodingSchemeVersion (0008,0103) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupExtensionCreatorUID (0008,010d) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupExtensionFlag (0008,010b) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupExtensionFlag(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupLocalVersion (0008,0107) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupLocalVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupVersion (0008,0106) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextIdentifier (0008,010f) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextIdentifier(const OFString &value, const OFBool check = OFTrue); + + /** set ContextUID (0008,0117) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue); + + /** set LongCodeValue (0008,0119) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UC) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResource (0008,0105) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResourceName (0008,0122) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResourceUID (0008,0118) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue); + + /** set URNCodeValue (0008,0120) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UR) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1 + DcmLongString CodeMeaning; + /// CodeValue (0008,0100) vr=SH, vm=1, type=1C + DcmShortString CodeValue; + /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C + DcmShortString CodingSchemeDesignator; + /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C + DcmShortString CodingSchemeVersion; + /// ContextGroupExtensionCreatorUID (0008,010d) vr=UI, vm=1, type=1C + DcmUniqueIdentifier ContextGroupExtensionCreatorUID; + /// ContextGroupExtensionFlag (0008,010b) vr=CS, vm=1, type=3 + DcmCodeString ContextGroupExtensionFlag; + /// ContextGroupLocalVersion (0008,0107) vr=DT, vm=1, type=1C + DcmDateTime ContextGroupLocalVersion; + /// ContextGroupVersion (0008,0106) vr=DT, vm=1, type=1C + DcmDateTime ContextGroupVersion; + /// ContextIdentifier (0008,010f) vr=CS, vm=1, type=3 + DcmCodeString ContextIdentifier; + /// ContextUID (0008,0117) vr=UI, vm=1, type=3 + DcmUniqueIdentifier ContextUID; + /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3 + DRTEquivalentCodeSequence EquivalentCodeSequence; + /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C + DcmUnlimitedCharacters LongCodeValue; + /// MappingResource (0008,0105) vr=CS, vm=1, type=1C + DcmCodeString MappingResource; + /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3 + DcmLongString MappingResourceName; + /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3 + DcmUniqueIdentifier MappingResourceUID; + /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C + DcmUniversalResourceIdentifierOrLocator URNCodeValue; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTAlgorithmNameCodeSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTAlgorithmNameCodeSequence(const DRTAlgorithmNameCodeSequence ©); + + /** destructor + */ + virtual ~DRTAlgorithmNameCodeSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTAlgorithmNameCodeSequence &operator=(const DRTAlgorithmNameCodeSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtarms.h b/dcmrt/include/dcmtk/dcmrt/seq/drtarms.h new file mode 100644 index 00000000..a9b7af19 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtarms.h @@ -0,0 +1,545 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTAnatomicRegionModifierSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTARMS_H +#define DRTARMS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtecs.h" // for EquivalentCodeSequence + + +/** Interface class for AnatomicRegionModifierSequence (0008,2220) + */ +class DCMTK_DCMRT_EXPORT DRTAnatomicRegionModifierSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get CodeMeaning (0008,0104) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodeMeaning(OFString &value, const signed long pos = 0) const; + + /** get CodeValue (0008,0100) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodeValue(OFString &value, const signed long pos = 0) const; + + /** get CodingSchemeDesignator (0008,0102) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodingSchemeDesignator(OFString &value, const signed long pos = 0) const; + + /** get CodingSchemeVersion (0008,0103) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupExtensionCreatorUID (0008,010d) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupExtensionCreatorUID(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupExtensionFlag (0008,010b) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupExtensionFlag(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupLocalVersion (0008,0107) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupLocalVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupVersion (0008,0106) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextIdentifier (0008,010f) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextIdentifier(OFString &value, const signed long pos = 0) const; + + /** get ContextUID (0008,0117) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextUID(OFString &value, const signed long pos = 0) const; + + /** get LongCodeValue (0008,0119) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const; + + /** get MappingResource (0008,0105) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResource(OFString &value, const signed long pos = 0) const; + + /** get MappingResourceName (0008,0122) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const; + + /** get MappingResourceUID (0008,0118) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const; + + /** get URNCodeValue (0008,0120) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const; + + // --- get DICOM sequence attributes --- + + /** get EquivalentCodeSequence (0008,0121) + * @return reference to sequence element + */ + DRTEquivalentCodeSequence &getEquivalentCodeSequence() + { return EquivalentCodeSequence; } + + /** get EquivalentCodeSequence (0008,0121) + * @return const reference to sequence element + */ + const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const + { return EquivalentCodeSequence; } + + // --- set DICOM attribute values --- + + /** set CodeMeaning (0008,0104) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodeMeaning(const OFString &value, const OFBool check = OFTrue); + + /** set CodeValue (0008,0100) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodeValue(const OFString &value, const OFBool check = OFTrue); + + /** set CodingSchemeDesignator (0008,0102) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodingSchemeDesignator(const OFString &value, const OFBool check = OFTrue); + + /** set CodingSchemeVersion (0008,0103) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupExtensionCreatorUID (0008,010d) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupExtensionFlag (0008,010b) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupExtensionFlag(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupLocalVersion (0008,0107) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupLocalVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupVersion (0008,0106) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextIdentifier (0008,010f) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextIdentifier(const OFString &value, const OFBool check = OFTrue); + + /** set ContextUID (0008,0117) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue); + + /** set LongCodeValue (0008,0119) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UC) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResource (0008,0105) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResourceName (0008,0122) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResourceUID (0008,0118) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue); + + /** set URNCodeValue (0008,0120) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UR) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1 + DcmLongString CodeMeaning; + /// CodeValue (0008,0100) vr=SH, vm=1, type=1C + DcmShortString CodeValue; + /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C + DcmShortString CodingSchemeDesignator; + /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C + DcmShortString CodingSchemeVersion; + /// ContextGroupExtensionCreatorUID (0008,010d) vr=UI, vm=1, type=1C + DcmUniqueIdentifier ContextGroupExtensionCreatorUID; + /// ContextGroupExtensionFlag (0008,010b) vr=CS, vm=1, type=3 + DcmCodeString ContextGroupExtensionFlag; + /// ContextGroupLocalVersion (0008,0107) vr=DT, vm=1, type=1C + DcmDateTime ContextGroupLocalVersion; + /// ContextGroupVersion (0008,0106) vr=DT, vm=1, type=1C + DcmDateTime ContextGroupVersion; + /// ContextIdentifier (0008,010f) vr=CS, vm=1, type=3 + DcmCodeString ContextIdentifier; + /// ContextUID (0008,0117) vr=UI, vm=1, type=3 + DcmUniqueIdentifier ContextUID; + /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3 + DRTEquivalentCodeSequence EquivalentCodeSequence; + /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C + DcmUnlimitedCharacters LongCodeValue; + /// MappingResource (0008,0105) vr=CS, vm=1, type=1C + DcmCodeString MappingResource; + /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3 + DcmLongString MappingResourceName; + /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3 + DcmUniqueIdentifier MappingResourceUID; + /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C + DcmUniversalResourceIdentifierOrLocator URNCodeValue; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTAnatomicRegionModifierSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTAnatomicRegionModifierSequence(const DRTAnatomicRegionModifierSequence ©); + + /** destructor + */ + virtual ~DRTAnatomicRegionModifierSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTAnatomicRegionModifierSequence &operator=(const DRTAnatomicRegionModifierSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtars.h b/dcmrt/include/dcmtk/dcmrt/seq/drtars.h new file mode 100644 index 00000000..2e5194e5 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtars.h @@ -0,0 +1,560 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTAnatomicRegionSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTARS_H +#define DRTARS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtarms.h" // for AnatomicRegionModifierSequence +#include "dcmtk/dcmrt/seq/drtecs.h" // for EquivalentCodeSequence + + +/** Interface class for AnatomicRegionSequence (0008,2218) + */ +class DCMTK_DCMRT_EXPORT DRTAnatomicRegionSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get CodeMeaning (0008,0104) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodeMeaning(OFString &value, const signed long pos = 0) const; + + /** get CodeValue (0008,0100) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodeValue(OFString &value, const signed long pos = 0) const; + + /** get CodingSchemeDesignator (0008,0102) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodingSchemeDesignator(OFString &value, const signed long pos = 0) const; + + /** get CodingSchemeVersion (0008,0103) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupExtensionCreatorUID (0008,010d) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupExtensionCreatorUID(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupExtensionFlag (0008,010b) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupExtensionFlag(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupLocalVersion (0008,0107) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupLocalVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupVersion (0008,0106) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextIdentifier (0008,010f) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextIdentifier(OFString &value, const signed long pos = 0) const; + + /** get ContextUID (0008,0117) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextUID(OFString &value, const signed long pos = 0) const; + + /** get LongCodeValue (0008,0119) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const; + + /** get MappingResource (0008,0105) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResource(OFString &value, const signed long pos = 0) const; + + /** get MappingResourceName (0008,0122) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const; + + /** get MappingResourceUID (0008,0118) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const; + + /** get URNCodeValue (0008,0120) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const; + + // --- get DICOM sequence attributes --- + + /** get AnatomicRegionModifierSequence (0008,2220) + * @return reference to sequence element + */ + DRTAnatomicRegionModifierSequence &getAnatomicRegionModifierSequence() + { return AnatomicRegionModifierSequence; } + + /** get AnatomicRegionModifierSequence (0008,2220) + * @return const reference to sequence element + */ + const DRTAnatomicRegionModifierSequence &getAnatomicRegionModifierSequence() const + { return AnatomicRegionModifierSequence; } + + /** get EquivalentCodeSequence (0008,0121) + * @return reference to sequence element + */ + DRTEquivalentCodeSequence &getEquivalentCodeSequence() + { return EquivalentCodeSequence; } + + /** get EquivalentCodeSequence (0008,0121) + * @return const reference to sequence element + */ + const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const + { return EquivalentCodeSequence; } + + // --- set DICOM attribute values --- + + /** set CodeMeaning (0008,0104) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodeMeaning(const OFString &value, const OFBool check = OFTrue); + + /** set CodeValue (0008,0100) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodeValue(const OFString &value, const OFBool check = OFTrue); + + /** set CodingSchemeDesignator (0008,0102) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodingSchemeDesignator(const OFString &value, const OFBool check = OFTrue); + + /** set CodingSchemeVersion (0008,0103) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupExtensionCreatorUID (0008,010d) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupExtensionFlag (0008,010b) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupExtensionFlag(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupLocalVersion (0008,0107) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupLocalVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupVersion (0008,0106) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextIdentifier (0008,010f) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextIdentifier(const OFString &value, const OFBool check = OFTrue); + + /** set ContextUID (0008,0117) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue); + + /** set LongCodeValue (0008,0119) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UC) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResource (0008,0105) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResourceName (0008,0122) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResourceUID (0008,0118) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue); + + /** set URNCodeValue (0008,0120) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UR) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// AnatomicRegionModifierSequence (0008,2220) vr=SQ, vm=1, type=3 + DRTAnatomicRegionModifierSequence AnatomicRegionModifierSequence; + /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1 + DcmLongString CodeMeaning; + /// CodeValue (0008,0100) vr=SH, vm=1, type=1C + DcmShortString CodeValue; + /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C + DcmShortString CodingSchemeDesignator; + /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C + DcmShortString CodingSchemeVersion; + /// ContextGroupExtensionCreatorUID (0008,010d) vr=UI, vm=1, type=1C + DcmUniqueIdentifier ContextGroupExtensionCreatorUID; + /// ContextGroupExtensionFlag (0008,010b) vr=CS, vm=1, type=3 + DcmCodeString ContextGroupExtensionFlag; + /// ContextGroupLocalVersion (0008,0107) vr=DT, vm=1, type=1C + DcmDateTime ContextGroupLocalVersion; + /// ContextGroupVersion (0008,0106) vr=DT, vm=1, type=1C + DcmDateTime ContextGroupVersion; + /// ContextIdentifier (0008,010f) vr=CS, vm=1, type=3 + DcmCodeString ContextIdentifier; + /// ContextUID (0008,0117) vr=UI, vm=1, type=3 + DcmUniqueIdentifier ContextUID; + /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3 + DRTEquivalentCodeSequence EquivalentCodeSequence; + /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C + DcmUnlimitedCharacters LongCodeValue; + /// MappingResource (0008,0105) vr=CS, vm=1, type=1C + DcmCodeString MappingResource; + /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3 + DcmLongString MappingResourceName; + /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3 + DcmUniqueIdentifier MappingResourceUID; + /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C + DcmUniversalResourceIdentifierOrLocator URNCodeValue; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTAnatomicRegionSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTAnatomicRegionSequence(const DRTAnatomicRegionSequence ©); + + /** destructor + */ + virtual ~DRTAnatomicRegionSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTAnatomicRegionSequence &operator=(const DRTAnatomicRegionSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtas1.h b/dcmrt/include/dcmtk/dcmrt/seq/drtas1.h index f433261f..9013843b 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtas1.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtas1.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTApplicatorSequenceInRTBeamsModule * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -304,13 +304,13 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTBeamsModule */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtas2.h b/dcmrt/include/dcmtk/dcmrt/seq/drtas2.h new file mode 100644 index 00000000..df7355b9 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtas2.h @@ -0,0 +1,385 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTApplicatorSequenceInRTImageModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTAS2_H +#define DRTAS2_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtags.h" // for ApplicatorGeometrySequence + + +/** Interface class for ApplicatorSequence (300a,0107) in RTImageModule + */ +class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTImageModule + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get AccessoryCode (300a,00f9) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const; + + /** get ApplicatorDescription (300a,010a) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getApplicatorDescription(OFString &value, const signed long pos = 0) const; + + /** get ApplicatorID (300a,0108) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getApplicatorID(OFString &value, const signed long pos = 0) const; + + /** get ApplicatorType (300a,0109) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getApplicatorType(OFString &value, const signed long pos = 0) const; + + /** get SourceToApplicatorMountingPositionDistance (300a,0436) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getSourceToApplicatorMountingPositionDistance(Float32 &value, const unsigned long pos = 0) const; + + // --- get DICOM sequence attributes --- + + /** get ApplicatorGeometrySequence (300a,0431) + * @return reference to sequence element + */ + DRTApplicatorGeometrySequence &getApplicatorGeometrySequence() + { return ApplicatorGeometrySequence; } + + /** get ApplicatorGeometrySequence (300a,0431) + * @return const reference to sequence element + */ + const DRTApplicatorGeometrySequence &getApplicatorGeometrySequence() const + { return ApplicatorGeometrySequence; } + + // --- set DICOM attribute values --- + + /** set AccessoryCode (300a,00f9) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue); + + /** set ApplicatorDescription (300a,010a) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setApplicatorDescription(const OFString &value, const OFBool check = OFTrue); + + /** set ApplicatorID (300a,0108) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setApplicatorID(const OFString &value, const OFBool check = OFTrue); + + /** set ApplicatorType (300a,0109) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setApplicatorType(const OFString &value, const OFBool check = OFTrue); + + /** set SourceToApplicatorMountingPositionDistance (300a,0436) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setSourceToApplicatorMountingPositionDistance(const Float32 value, const unsigned long pos = 0); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3 + DcmLongString AccessoryCode; + /// ApplicatorDescription (300a,010a) vr=LO, vm=1, type=3 + DcmLongString ApplicatorDescription; + /// ApplicatorGeometrySequence (300a,0431) vr=SQ, vm=1, type=3 + DRTApplicatorGeometrySequence ApplicatorGeometrySequence; + /// ApplicatorID (300a,0108) vr=SH, vm=1, type=1 + DcmShortString ApplicatorID; + /// ApplicatorType (300a,0109) vr=CS, vm=1, type=1 + DcmCodeString ApplicatorType; + /// SourceToApplicatorMountingPositionDistance (300a,0436) vr=FL, vm=1, type=3 + DcmFloatingPointSingle SourceToApplicatorMountingPositionDistance; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTApplicatorSequenceInRTImageModule(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTApplicatorSequenceInRTImageModule(const DRTApplicatorSequenceInRTImageModule ©); + + /** destructor + */ + virtual ~DRTApplicatorSequenceInRTImageModule(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTApplicatorSequenceInRTImageModule &operator=(const DRTApplicatorSequenceInRTImageModule ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtas3.h b/dcmrt/include/dcmtk/dcmrt/seq/drtas3.h new file mode 100644 index 00000000..06013f66 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtas3.h @@ -0,0 +1,352 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTApplicatorSequenceInRTIonBeamsModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTAS3_H +#define DRTAS3_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for ApplicatorSequence (300a,0107) in RTIonBeamsModule + */ +class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTIonBeamsModule + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get AccessoryCode (300a,00f9) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const; + + /** get ApplicatorDescription (300a,010a) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getApplicatorDescription(OFString &value, const signed long pos = 0) const; + + /** get ApplicatorID (300a,0108) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getApplicatorID(OFString &value, const signed long pos = 0) const; + + /** get ApplicatorType (300a,0109) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getApplicatorType(OFString &value, const signed long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set AccessoryCode (300a,00f9) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue); + + /** set ApplicatorDescription (300a,010a) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setApplicatorDescription(const OFString &value, const OFBool check = OFTrue); + + /** set ApplicatorID (300a,0108) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setApplicatorID(const OFString &value, const OFBool check = OFTrue); + + /** set ApplicatorType (300a,0109) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setApplicatorType(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3 + DcmLongString AccessoryCode; + /// ApplicatorDescription (300a,010a) vr=LO, vm=1, type=3 + DcmLongString ApplicatorDescription; + /// ApplicatorID (300a,0108) vr=SH, vm=1, type=1 + DcmShortString ApplicatorID; + /// ApplicatorType (300a,0109) vr=CS, vm=1, type=1 + DcmCodeString ApplicatorType; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTApplicatorSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTApplicatorSequenceInRTIonBeamsModule(const DRTApplicatorSequenceInRTIonBeamsModule ©); + + /** destructor + */ + virtual ~DRTApplicatorSequenceInRTIonBeamsModule(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTApplicatorSequenceInRTIonBeamsModule &operator=(const DRTApplicatorSequenceInRTIonBeamsModule ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtas4.h b/dcmrt/include/dcmtk/dcmrt/seq/drtas4.h new file mode 100644 index 00000000..d1e4dac8 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtas4.h @@ -0,0 +1,352 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTApplicatorSequenceInRTIonBeamsSessionRecordModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTAS4_H +#define DRTAS4_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for ApplicatorSequence (300a,0107) in RTIonBeamsSessionRecordModule + */ +class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTIonBeamsSessionRecordModule + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get AccessoryCode (300a,00f9) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const; + + /** get ApplicatorDescription (300a,010a) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getApplicatorDescription(OFString &value, const signed long pos = 0) const; + + /** get ApplicatorID (300a,0108) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getApplicatorID(OFString &value, const signed long pos = 0) const; + + /** get ApplicatorType (300a,0109) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getApplicatorType(OFString &value, const signed long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set AccessoryCode (300a,00f9) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue); + + /** set ApplicatorDescription (300a,010a) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setApplicatorDescription(const OFString &value, const OFBool check = OFTrue); + + /** set ApplicatorID (300a,0108) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setApplicatorID(const OFString &value, const OFBool check = OFTrue); + + /** set ApplicatorType (300a,0109) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setApplicatorType(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3 + DcmLongString AccessoryCode; + /// ApplicatorDescription (300a,010a) vr=LO, vm=1, type=3 + DcmLongString ApplicatorDescription; + /// ApplicatorID (300a,0108) vr=SH, vm=1, type=1 + DcmShortString ApplicatorID; + /// ApplicatorType (300a,0109) vr=CS, vm=1, type=1 + DcmCodeString ApplicatorType; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTApplicatorSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTApplicatorSequenceInRTIonBeamsSessionRecordModule(const DRTApplicatorSequenceInRTIonBeamsSessionRecordModule ©); + + /** destructor + */ + virtual ~DRTApplicatorSequenceInRTIonBeamsSessionRecordModule(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTApplicatorSequenceInRTIonBeamsSessionRecordModule &operator=(const DRTApplicatorSequenceInRTIonBeamsSessionRecordModule ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtas5.h b/dcmrt/include/dcmtk/dcmrt/seq/drtas5.h deleted file mode 100644 index 61436b49..00000000 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtas5.h +++ /dev/null @@ -1,385 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Header file for class DRTApplicatorSequenceInRTImageModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#ifndef DRTAS5_H -#define DRTAS5_H - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/ofstd/oflist.h" // for standard list class -#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class -#include "dcmtk/dcmrt/seq/drtags.h" // for ApplicatorGeometrySequence - - -/** Interface class for ApplicatorSequence (300a,0107) in RTImageModule - */ -class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTImageModule - : protected DRTTypes -{ - - public: - - /** Item class - */ - class DCMTK_DCMRT_EXPORT Item - : protected DRTTypes - { - - public: - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultItem flag used to mark the empty default item - */ - Item(const OFBool emptyDefaultItem = OFFalse); - - /** copy constructor - * @param copy item object to be copied - */ - Item(const Item ©); - - /** destructor - */ - virtual ~Item(); - - /** assignment operator - * @param copy item object to be copied - * @return reference to this object - */ - Item &operator=(const Item ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if item is empty - * @return OFTrue if item is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if item is valid, i.e.\ not the empty default item - * @return OFTrue if item is valid, OFFalse otherwise - */ - OFBool isValid() const; - - // --- input/output methods --- - - /** read elements from sequence item - * @param item reference to DICOM sequence item from which the elements should be read - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &item); - - /** write elements to sequence item - * @param item reference to DICOM sequence item to which the elements should be written - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &item); - - // --- get DICOM attribute values --- - - /** get AccessoryCode (300a,00f9) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const; - - /** get ApplicatorDescription (300a,010a) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getApplicatorDescription(OFString &value, const signed long pos = 0) const; - - /** get ApplicatorID (300a,0108) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getApplicatorID(OFString &value, const signed long pos = 0) const; - - /** get ApplicatorType (300a,0109) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getApplicatorType(OFString &value, const signed long pos = 0) const; - - /** get SourceToApplicatorMountingPositionDistance (300a,0436) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getSourceToApplicatorMountingPositionDistance(Float32 &value, const unsigned long pos = 0) const; - - // --- get DICOM sequence attributes --- - - /** get ApplicatorGeometrySequence (300a,0431) - * @return reference to sequence element - */ - DRTApplicatorGeometrySequence &getApplicatorGeometrySequence() - { return ApplicatorGeometrySequence; } - - /** get ApplicatorGeometrySequence (300a,0431) - * @return const reference to sequence element - */ - const DRTApplicatorGeometrySequence &getApplicatorGeometrySequence() const - { return ApplicatorGeometrySequence; } - - // --- set DICOM attribute values --- - - /** set AccessoryCode (300a,00f9) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue); - - /** set ApplicatorDescription (300a,010a) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setApplicatorDescription(const OFString &value, const OFBool check = OFTrue); - - /** set ApplicatorID (300a,0108) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setApplicatorID(const OFString &value, const OFBool check = OFTrue); - - /** set ApplicatorType (300a,0109) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setApplicatorType(const OFString &value, const OFBool check = OFTrue); - - /** set SourceToApplicatorMountingPositionDistance (300a,0436) - * @param value value to be set (should be valid for this VR) - * @param pos index of the value to be set (0..vm-1), vm=1 - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setSourceToApplicatorMountingPositionDistance(const Float32 value, const unsigned long pos = 0); - - private: - - /// internal flag used to mark the empty default item - /*const*/ OFBool EmptyDefaultItem; - - /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3 - DcmLongString AccessoryCode; - /// ApplicatorDescription (300a,010a) vr=LO, vm=1, type=3 - DcmLongString ApplicatorDescription; - /// ApplicatorGeometrySequence (300a,0431) vr=SQ, vm=1, type=3 - DRTApplicatorGeometrySequence ApplicatorGeometrySequence; - /// ApplicatorID (300a,0108) vr=SH, vm=1, type=1 - DcmShortString ApplicatorID; - /// ApplicatorType (300a,0109) vr=CS, vm=1, type=1 - DcmCodeString ApplicatorType; - /// SourceToApplicatorMountingPositionDistance (300a,0436) vr=FL, vm=1, type=3 - DcmFloatingPointSingle SourceToApplicatorMountingPositionDistance; - - }; - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultSequence internal flag used to mark the empty default sequence - */ - DRTApplicatorSequenceInRTImageModule(const OFBool emptyDefaultSequence = OFFalse); - - /** copy constructor - * @param copy sequence object to be copied - */ - DRTApplicatorSequenceInRTImageModule(const DRTApplicatorSequenceInRTImageModule ©); - - /** destructor - */ - virtual ~DRTApplicatorSequenceInRTImageModule(); - - /** assignment operator - * @param copy sequence object to be copied - * @return reference to this object - */ - DRTApplicatorSequenceInRTImageModule &operator=(const DRTApplicatorSequenceInRTImageModule ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if sequence is empty - * @return OFTrue if sequence is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if sequence is valid, i.e.\ not the empty default sequence - * @return OFTrue if sequence is valid, OFFalse otherwise - */ - OFBool isValid() const; - - /** get number of items in the sequence - * @return number of items - */ - size_t getNumberOfItems() const; - - /** goto first item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoFirstItem(); - - /** goto next item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoNextItem(); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num); - - /** get current item in the sequence - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getCurrentItem(Item *&item) const; - - /** get current item in the sequence - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getCurrentItem(); - - /** get current item in the sequence - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getCurrentItem() const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getItem(const size_t num, Item *&item); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getItem(const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getItem(const size_t num) const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &operator[](const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &operator[](const size_t num) const; - - /** add new item to the end of this sequence - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition addItem(Item *&item); - - /** insert new item into the sequence - * @param pos position where the new item is to be inserted (0..num) - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition insertItem(const size_t pos, Item *&item); - - /** remove particular item from the sequence - * @param pos position of the item to be removed (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition removeItem(const size_t pos); - - // --- input/output methods --- - - /** read sequence of items from dataset - * @param dataset reference to DICOM dataset from which the sequence should be read - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - /** write sequence of items to dataset - * @param dataset reference to DICOM dataset to which the sequence should be written - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - protected: - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListIterator(Item *) &iterator); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListConstIterator(Item *) &iterator) const; - - private: - - /// internal flag used to mark the empty default sequence - /*const*/ OFBool EmptyDefaultSequence; - - /// list of items in this sequence - OFList SequenceOfItems; - /// currently selected item - OFListIterator(Item *) CurrentItem; - /// empty default item - Item EmptyItem; - -}; - - -#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtas6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtas6.h deleted file mode 100644 index 1d953826..00000000 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtas6.h +++ /dev/null @@ -1,352 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Header file for class DRTApplicatorSequenceInRTIonBeamsModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#ifndef DRTAS6_H -#define DRTAS6_H - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/ofstd/oflist.h" // for standard list class -#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class - - -/** Interface class for ApplicatorSequence (300a,0107) in RTIonBeamsModule - */ -class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTIonBeamsModule - : protected DRTTypes -{ - - public: - - /** Item class - */ - class DCMTK_DCMRT_EXPORT Item - : protected DRTTypes - { - - public: - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultItem flag used to mark the empty default item - */ - Item(const OFBool emptyDefaultItem = OFFalse); - - /** copy constructor - * @param copy item object to be copied - */ - Item(const Item ©); - - /** destructor - */ - virtual ~Item(); - - /** assignment operator - * @param copy item object to be copied - * @return reference to this object - */ - Item &operator=(const Item ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if item is empty - * @return OFTrue if item is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if item is valid, i.e.\ not the empty default item - * @return OFTrue if item is valid, OFFalse otherwise - */ - OFBool isValid() const; - - // --- input/output methods --- - - /** read elements from sequence item - * @param item reference to DICOM sequence item from which the elements should be read - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &item); - - /** write elements to sequence item - * @param item reference to DICOM sequence item to which the elements should be written - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &item); - - // --- get DICOM attribute values --- - - /** get AccessoryCode (300a,00f9) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const; - - /** get ApplicatorDescription (300a,010a) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getApplicatorDescription(OFString &value, const signed long pos = 0) const; - - /** get ApplicatorID (300a,0108) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getApplicatorID(OFString &value, const signed long pos = 0) const; - - /** get ApplicatorType (300a,0109) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getApplicatorType(OFString &value, const signed long pos = 0) const; - - // --- set DICOM attribute values --- - - /** set AccessoryCode (300a,00f9) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue); - - /** set ApplicatorDescription (300a,010a) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setApplicatorDescription(const OFString &value, const OFBool check = OFTrue); - - /** set ApplicatorID (300a,0108) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setApplicatorID(const OFString &value, const OFBool check = OFTrue); - - /** set ApplicatorType (300a,0109) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setApplicatorType(const OFString &value, const OFBool check = OFTrue); - - private: - - /// internal flag used to mark the empty default item - /*const*/ OFBool EmptyDefaultItem; - - /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3 - DcmLongString AccessoryCode; - /// ApplicatorDescription (300a,010a) vr=LO, vm=1, type=3 - DcmLongString ApplicatorDescription; - /// ApplicatorID (300a,0108) vr=SH, vm=1, type=1 - DcmShortString ApplicatorID; - /// ApplicatorType (300a,0109) vr=CS, vm=1, type=1 - DcmCodeString ApplicatorType; - - }; - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultSequence internal flag used to mark the empty default sequence - */ - DRTApplicatorSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence = OFFalse); - - /** copy constructor - * @param copy sequence object to be copied - */ - DRTApplicatorSequenceInRTIonBeamsModule(const DRTApplicatorSequenceInRTIonBeamsModule ©); - - /** destructor - */ - virtual ~DRTApplicatorSequenceInRTIonBeamsModule(); - - /** assignment operator - * @param copy sequence object to be copied - * @return reference to this object - */ - DRTApplicatorSequenceInRTIonBeamsModule &operator=(const DRTApplicatorSequenceInRTIonBeamsModule ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if sequence is empty - * @return OFTrue if sequence is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if sequence is valid, i.e.\ not the empty default sequence - * @return OFTrue if sequence is valid, OFFalse otherwise - */ - OFBool isValid() const; - - /** get number of items in the sequence - * @return number of items - */ - size_t getNumberOfItems() const; - - /** goto first item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoFirstItem(); - - /** goto next item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoNextItem(); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num); - - /** get current item in the sequence - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getCurrentItem(Item *&item) const; - - /** get current item in the sequence - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getCurrentItem(); - - /** get current item in the sequence - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getCurrentItem() const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getItem(const size_t num, Item *&item); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getItem(const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getItem(const size_t num) const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &operator[](const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &operator[](const size_t num) const; - - /** add new item to the end of this sequence - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition addItem(Item *&item); - - /** insert new item into the sequence - * @param pos position where the new item is to be inserted (0..num) - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition insertItem(const size_t pos, Item *&item); - - /** remove particular item from the sequence - * @param pos position of the item to be removed (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition removeItem(const size_t pos); - - // --- input/output methods --- - - /** read sequence of items from dataset - * @param dataset reference to DICOM dataset from which the sequence should be read - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - /** write sequence of items to dataset - * @param dataset reference to DICOM dataset to which the sequence should be written - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - protected: - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListIterator(Item *) &iterator); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListConstIterator(Item *) &iterator) const; - - private: - - /// internal flag used to mark the empty default sequence - /*const*/ OFBool EmptyDefaultSequence; - - /// list of items in this sequence - OFList SequenceOfItems; - /// currently selected item - OFListIterator(Item *) CurrentItem; - /// empty default item - Item EmptyItem; - -}; - - -#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtas7.h b/dcmrt/include/dcmtk/dcmrt/seq/drtas7.h deleted file mode 100644 index 3245128c..00000000 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtas7.h +++ /dev/null @@ -1,352 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Header file for class DRTApplicatorSequenceInRTIonBeamsSessionRecordModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#ifndef DRTAS7_H -#define DRTAS7_H - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/ofstd/oflist.h" // for standard list class -#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class - - -/** Interface class for ApplicatorSequence (300a,0107) in RTIonBeamsSessionRecordModule - */ -class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTIonBeamsSessionRecordModule - : protected DRTTypes -{ - - public: - - /** Item class - */ - class DCMTK_DCMRT_EXPORT Item - : protected DRTTypes - { - - public: - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultItem flag used to mark the empty default item - */ - Item(const OFBool emptyDefaultItem = OFFalse); - - /** copy constructor - * @param copy item object to be copied - */ - Item(const Item ©); - - /** destructor - */ - virtual ~Item(); - - /** assignment operator - * @param copy item object to be copied - * @return reference to this object - */ - Item &operator=(const Item ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if item is empty - * @return OFTrue if item is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if item is valid, i.e.\ not the empty default item - * @return OFTrue if item is valid, OFFalse otherwise - */ - OFBool isValid() const; - - // --- input/output methods --- - - /** read elements from sequence item - * @param item reference to DICOM sequence item from which the elements should be read - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &item); - - /** write elements to sequence item - * @param item reference to DICOM sequence item to which the elements should be written - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &item); - - // --- get DICOM attribute values --- - - /** get AccessoryCode (300a,00f9) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const; - - /** get ApplicatorDescription (300a,010a) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getApplicatorDescription(OFString &value, const signed long pos = 0) const; - - /** get ApplicatorID (300a,0108) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getApplicatorID(OFString &value, const signed long pos = 0) const; - - /** get ApplicatorType (300a,0109) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getApplicatorType(OFString &value, const signed long pos = 0) const; - - // --- set DICOM attribute values --- - - /** set AccessoryCode (300a,00f9) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue); - - /** set ApplicatorDescription (300a,010a) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setApplicatorDescription(const OFString &value, const OFBool check = OFTrue); - - /** set ApplicatorID (300a,0108) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setApplicatorID(const OFString &value, const OFBool check = OFTrue); - - /** set ApplicatorType (300a,0109) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setApplicatorType(const OFString &value, const OFBool check = OFTrue); - - private: - - /// internal flag used to mark the empty default item - /*const*/ OFBool EmptyDefaultItem; - - /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3 - DcmLongString AccessoryCode; - /// ApplicatorDescription (300a,010a) vr=LO, vm=1, type=3 - DcmLongString ApplicatorDescription; - /// ApplicatorID (300a,0108) vr=SH, vm=1, type=1 - DcmShortString ApplicatorID; - /// ApplicatorType (300a,0109) vr=CS, vm=1, type=1 - DcmCodeString ApplicatorType; - - }; - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultSequence internal flag used to mark the empty default sequence - */ - DRTApplicatorSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence = OFFalse); - - /** copy constructor - * @param copy sequence object to be copied - */ - DRTApplicatorSequenceInRTIonBeamsSessionRecordModule(const DRTApplicatorSequenceInRTIonBeamsSessionRecordModule ©); - - /** destructor - */ - virtual ~DRTApplicatorSequenceInRTIonBeamsSessionRecordModule(); - - /** assignment operator - * @param copy sequence object to be copied - * @return reference to this object - */ - DRTApplicatorSequenceInRTIonBeamsSessionRecordModule &operator=(const DRTApplicatorSequenceInRTIonBeamsSessionRecordModule ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if sequence is empty - * @return OFTrue if sequence is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if sequence is valid, i.e.\ not the empty default sequence - * @return OFTrue if sequence is valid, OFFalse otherwise - */ - OFBool isValid() const; - - /** get number of items in the sequence - * @return number of items - */ - size_t getNumberOfItems() const; - - /** goto first item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoFirstItem(); - - /** goto next item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoNextItem(); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num); - - /** get current item in the sequence - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getCurrentItem(Item *&item) const; - - /** get current item in the sequence - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getCurrentItem(); - - /** get current item in the sequence - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getCurrentItem() const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getItem(const size_t num, Item *&item); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getItem(const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getItem(const size_t num) const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &operator[](const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &operator[](const size_t num) const; - - /** add new item to the end of this sequence - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition addItem(Item *&item); - - /** insert new item into the sequence - * @param pos position where the new item is to be inserted (0..num) - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition insertItem(const size_t pos, Item *&item); - - /** remove particular item from the sequence - * @param pos position of the item to be removed (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition removeItem(const size_t pos); - - // --- input/output methods --- - - /** read sequence of items from dataset - * @param dataset reference to DICOM dataset from which the sequence should be read - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - /** write sequence of items to dataset - * @param dataset reference to DICOM dataset to which the sequence should be written - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - protected: - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListIterator(Item *) &iterator); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListConstIterator(Item *) &iterator) const; - - private: - - /// internal flag used to mark the empty default sequence - /*const*/ OFBool EmptyDefaultSequence; - - /// list of items in this sequence - OFList SequenceOfItems; - /// currently selected item - OFListIterator(Item *) CurrentItem; - /// empty default item - Item EmptyItem; - -}; - - -#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtass.h b/dcmrt/include/dcmtk/dcmrt/seq/drtass.h index c158e37b..2f0f1166 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtass.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtass.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTApplicationSetupSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -21,7 +21,7 @@ #include "dcmtk/dcmrt/drttypes.h" // module-specific helper class #include "dcmtk/dcmrt/seq/drtbads.h" // for BrachyAccessoryDeviceSequence #include "dcmtk/dcmrt/seq/drtchs.h" // for ChannelSequence -#include "dcmtk/dcmrt/seq/drtrris9.h" // for ReferencedReferenceImageSequence +#include "dcmtk/dcmrt/seq/drtrris3.h" // for ReferencedReferenceImageSequence /** Interface class for ApplicationSetupSequence (300a,0230) in RTBrachyApplicationSetupsModule @@ -403,13 +403,13 @@ class DCMTK_DCMRT_EXPORT DRTApplicationSetupSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbads.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbads.h index 2022d89c..3c17623b 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtbads.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtbads.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTBrachyAccessoryDeviceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -363,13 +363,13 @@ class DCMTK_DCMRT_EXPORT DRTBrachyAccessoryDeviceSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbas.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbas.h index 2b1b60e3..15648f8c 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtbas.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtbas.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTContrastBolusAgentSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAgentSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbcps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbcps.h index cc5c9476..187e1542 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtbcps.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtbcps.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTBrachyControlPointSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -338,13 +338,13 @@ class DCMTK_DCMRT_EXPORT DRTBrachyControlPointSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbl1.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbl1.h new file mode 100644 index 00000000..383606e5 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtbl1.h @@ -0,0 +1,560 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTBlockSequenceInRTBeamsModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTBL1_H +#define DRTBL1_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for BlockSequence (300a,00f4) in RTBeamsModule + */ +class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTBeamsModule + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get AccessoryCode (300a,00f9) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const; + + /** get BlockData (300a,0106) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBlockData(OFString &value, const signed long pos = 0) const; + + /** get BlockData (300a,0106) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBlockData(Float64 &value, const unsigned long pos = 0) const; + + /** get BlockData (300a,0106) + * @param value reference to variable in which the value(s) should be stored + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBlockData(OFVector &value) const; + + /** get BlockDivergence (300a,00fa) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBlockDivergence(OFString &value, const signed long pos = 0) const; + + /** get BlockMountingPosition (300a,00fb) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBlockMountingPosition(OFString &value, const signed long pos = 0) const; + + /** get BlockName (300a,00fe) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBlockName(OFString &value, const signed long pos = 0) const; + + /** get BlockNumber (300a,00fc) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBlockNumber(OFString &value, const signed long pos = 0) const; + + /** get BlockNumber (300a,00fc) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBlockNumber(Sint32 &value, const unsigned long pos = 0) const; + + /** get BlockNumberOfPoints (300a,0104) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBlockNumberOfPoints(OFString &value, const signed long pos = 0) const; + + /** get BlockNumberOfPoints (300a,0104) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBlockNumberOfPoints(Sint32 &value, const unsigned long pos = 0) const; + + /** get BlockThickness (300a,0100) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBlockThickness(OFString &value, const signed long pos = 0) const; + + /** get BlockThickness (300a,0100) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBlockThickness(Float64 &value, const unsigned long pos = 0) const; + + /** get BlockTransmission (300a,0102) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBlockTransmission(OFString &value, const signed long pos = 0) const; + + /** get BlockTransmission (300a,0102) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBlockTransmission(Float64 &value, const unsigned long pos = 0) const; + + /** get BlockTrayID (300a,00f5) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBlockTrayID(OFString &value, const signed long pos = 0) const; + + /** get BlockType (300a,00f8) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBlockType(OFString &value, const signed long pos = 0) const; + + /** get MaterialID (300a,00e1) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMaterialID(OFString &value, const signed long pos = 0) const; + + /** get SourceToBlockTrayDistance (300a,00f6) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getSourceToBlockTrayDistance(OFString &value, const signed long pos = 0) const; + + /** get SourceToBlockTrayDistance (300a,00f6) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getSourceToBlockTrayDistance(Float64 &value, const unsigned long pos = 0) const; + + /** get TrayAccessoryCode (300a,0355) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getTrayAccessoryCode(OFString &value, const signed long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set AccessoryCode (300a,00f9) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue); + + /** set BlockData (300a,0106) + * @param value value to be set (possibly multi-valued) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (2-2n) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setBlockData(const OFString &value, const OFBool check = OFTrue); + + /** set BlockDivergence (300a,00fa) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setBlockDivergence(const OFString &value, const OFBool check = OFTrue); + + /** set BlockMountingPosition (300a,00fb) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setBlockMountingPosition(const OFString &value, const OFBool check = OFTrue); + + /** set BlockName (300a,00fe) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setBlockName(const OFString &value, const OFBool check = OFTrue); + + /** set BlockNumber (300a,00fc) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setBlockNumber(const OFString &value, const OFBool check = OFTrue); + + /** set BlockNumberOfPoints (300a,0104) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setBlockNumberOfPoints(const OFString &value, const OFBool check = OFTrue); + + /** set BlockThickness (300a,0100) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setBlockThickness(const OFString &value, const OFBool check = OFTrue); + + /** set BlockTransmission (300a,0102) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setBlockTransmission(const OFString &value, const OFBool check = OFTrue); + + /** set BlockTrayID (300a,00f5) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setBlockTrayID(const OFString &value, const OFBool check = OFTrue); + + /** set BlockType (300a,00f8) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setBlockType(const OFString &value, const OFBool check = OFTrue); + + /** set MaterialID (300a,00e1) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMaterialID(const OFString &value, const OFBool check = OFTrue); + + /** set SourceToBlockTrayDistance (300a,00f6) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setSourceToBlockTrayDistance(const OFString &value, const OFBool check = OFTrue); + + /** set TrayAccessoryCode (300a,0355) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setTrayAccessoryCode(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3 + DcmLongString AccessoryCode; + /// BlockData (300a,0106) vr=DS, vm=2-2n, type=2 + DcmDecimalString BlockData; + /// BlockDivergence (300a,00fa) vr=CS, vm=1, type=2 + DcmCodeString BlockDivergence; + /// BlockMountingPosition (300a,00fb) vr=CS, vm=1, type=3 + DcmCodeString BlockMountingPosition; + /// BlockName (300a,00fe) vr=LO, vm=1, type=3 + DcmLongString BlockName; + /// BlockNumber (300a,00fc) vr=IS, vm=1, type=1 + DcmIntegerString BlockNumber; + /// BlockNumberOfPoints (300a,0104) vr=IS, vm=1, type=2 + DcmIntegerString BlockNumberOfPoints; + /// BlockThickness (300a,0100) vr=DS, vm=1, type=2C + DcmDecimalString BlockThickness; + /// BlockTransmission (300a,0102) vr=DS, vm=1, type=2C + DcmDecimalString BlockTransmission; + /// BlockTrayID (300a,00f5) vr=SH, vm=1, type=3 + DcmShortString BlockTrayID; + /// BlockType (300a,00f8) vr=CS, vm=1, type=1 + DcmCodeString BlockType; + /// MaterialID (300a,00e1) vr=SH, vm=1, type=2 + DcmShortString MaterialID; + /// SourceToBlockTrayDistance (300a,00f6) vr=DS, vm=1, type=2 + DcmDecimalString SourceToBlockTrayDistance; + /// TrayAccessoryCode (300a,0355) vr=LO, vm=1, type=3 + DcmLongString TrayAccessoryCode; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTBlockSequenceInRTBeamsModule(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTBlockSequenceInRTBeamsModule(const DRTBlockSequenceInRTBeamsModule ©); + + /** destructor + */ + virtual ~DRTBlockSequenceInRTBeamsModule(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTBlockSequenceInRTBeamsModule &operator=(const DRTBlockSequenceInRTBeamsModule ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbl2.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbl2.h index 36da19e9..503a6631 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtbl2.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtbl2.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * - * Header file for class DRTBlockSequenceInRTBeamsModule + * Header file for class DRTBlockSequenceInRTImageModule * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -21,9 +21,9 @@ #include "dcmtk/dcmrt/drttypes.h" // module-specific helper class -/** Interface class for BlockSequence (300a,00f4) in RTBeamsModule +/** Interface class for BlockSequence (300a,00f4) in RTImageModule */ -class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTBeamsModule +class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTImageModule : protected DRTTypes { @@ -181,20 +181,6 @@ class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTBeamsModule */ OFCondition getBlockThickness(Float64 &value, const unsigned long pos = 0) const; - /** get BlockTransmission (300a,0102) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBlockTransmission(OFString &value, const signed long pos = 0) const; - - /** get BlockTransmission (300a,0102) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBlockTransmission(Float64 &value, const unsigned long pos = 0) const; - /** get BlockTrayID (300a,00f5) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -295,13 +281,6 @@ class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTBeamsModule */ OFCondition setBlockThickness(const OFString &value, const OFBool check = OFTrue); - /** set BlockTransmission (300a,0102) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setBlockTransmission(const OFString &value, const OFBool check = OFTrue); - /** set BlockTrayID (300a,00f5) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled @@ -356,10 +335,8 @@ class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTBeamsModule DcmIntegerString BlockNumber; /// BlockNumberOfPoints (300a,0104) vr=IS, vm=1, type=2 DcmIntegerString BlockNumberOfPoints; - /// BlockThickness (300a,0100) vr=DS, vm=1, type=2C + /// BlockThickness (300a,0100) vr=DS, vm=1, type=3 DcmDecimalString BlockThickness; - /// BlockTransmission (300a,0102) vr=DS, vm=1, type=2C - DcmDecimalString BlockTransmission; /// BlockTrayID (300a,00f5) vr=SH, vm=1, type=3 DcmShortString BlockTrayID; /// BlockType (300a,00f8) vr=CS, vm=1, type=1 @@ -378,22 +355,22 @@ class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTBeamsModule /** (default) constructor * @param emptyDefaultSequence internal flag used to mark the empty default sequence */ - DRTBlockSequenceInRTBeamsModule(const OFBool emptyDefaultSequence = OFFalse); + DRTBlockSequenceInRTImageModule(const OFBool emptyDefaultSequence = OFFalse); /** copy constructor * @param copy sequence object to be copied */ - DRTBlockSequenceInRTBeamsModule(const DRTBlockSequenceInRTBeamsModule ©); + DRTBlockSequenceInRTImageModule(const DRTBlockSequenceInRTImageModule ©); /** destructor */ - virtual ~DRTBlockSequenceInRTBeamsModule(); + virtual ~DRTBlockSequenceInRTImageModule(); /** assignment operator * @param copy sequence object to be copied * @return reference to this object */ - DRTBlockSequenceInRTBeamsModule &operator=(const DRTBlockSequenceInRTBeamsModule ©); + DRTBlockSequenceInRTImageModule &operator=(const DRTBlockSequenceInRTImageModule ©); // --- general methods --- @@ -479,13 +456,13 @@ class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTBeamsModule */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbl5.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbl5.h deleted file mode 100644 index 09718dab..00000000 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtbl5.h +++ /dev/null @@ -1,537 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Header file for class DRTBlockSequenceInRTImageModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#ifndef DRTBL5_H -#define DRTBL5_H - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/ofstd/oflist.h" // for standard list class -#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class - - -/** Interface class for BlockSequence (300a,00f4) in RTImageModule - */ -class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTImageModule - : protected DRTTypes -{ - - public: - - /** Item class - */ - class DCMTK_DCMRT_EXPORT Item - : protected DRTTypes - { - - public: - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultItem flag used to mark the empty default item - */ - Item(const OFBool emptyDefaultItem = OFFalse); - - /** copy constructor - * @param copy item object to be copied - */ - Item(const Item ©); - - /** destructor - */ - virtual ~Item(); - - /** assignment operator - * @param copy item object to be copied - * @return reference to this object - */ - Item &operator=(const Item ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if item is empty - * @return OFTrue if item is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if item is valid, i.e.\ not the empty default item - * @return OFTrue if item is valid, OFFalse otherwise - */ - OFBool isValid() const; - - // --- input/output methods --- - - /** read elements from sequence item - * @param item reference to DICOM sequence item from which the elements should be read - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &item); - - /** write elements to sequence item - * @param item reference to DICOM sequence item to which the elements should be written - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &item); - - // --- get DICOM attribute values --- - - /** get AccessoryCode (300a,00f9) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const; - - /** get BlockData (300a,0106) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBlockData(OFString &value, const signed long pos = 0) const; - - /** get BlockData (300a,0106) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBlockData(Float64 &value, const unsigned long pos = 0) const; - - /** get BlockData (300a,0106) - * @param value reference to variable in which the value(s) should be stored - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBlockData(OFVector &value) const; - - /** get BlockDivergence (300a,00fa) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBlockDivergence(OFString &value, const signed long pos = 0) const; - - /** get BlockMountingPosition (300a,00fb) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBlockMountingPosition(OFString &value, const signed long pos = 0) const; - - /** get BlockName (300a,00fe) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBlockName(OFString &value, const signed long pos = 0) const; - - /** get BlockNumber (300a,00fc) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBlockNumber(OFString &value, const signed long pos = 0) const; - - /** get BlockNumber (300a,00fc) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBlockNumber(Sint32 &value, const unsigned long pos = 0) const; - - /** get BlockNumberOfPoints (300a,0104) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBlockNumberOfPoints(OFString &value, const signed long pos = 0) const; - - /** get BlockNumberOfPoints (300a,0104) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBlockNumberOfPoints(Sint32 &value, const unsigned long pos = 0) const; - - /** get BlockThickness (300a,0100) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBlockThickness(OFString &value, const signed long pos = 0) const; - - /** get BlockThickness (300a,0100) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBlockThickness(Float64 &value, const unsigned long pos = 0) const; - - /** get BlockTrayID (300a,00f5) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBlockTrayID(OFString &value, const signed long pos = 0) const; - - /** get BlockType (300a,00f8) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBlockType(OFString &value, const signed long pos = 0) const; - - /** get MaterialID (300a,00e1) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getMaterialID(OFString &value, const signed long pos = 0) const; - - /** get SourceToBlockTrayDistance (300a,00f6) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getSourceToBlockTrayDistance(OFString &value, const signed long pos = 0) const; - - /** get SourceToBlockTrayDistance (300a,00f6) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getSourceToBlockTrayDistance(Float64 &value, const unsigned long pos = 0) const; - - /** get TrayAccessoryCode (300a,0355) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getTrayAccessoryCode(OFString &value, const signed long pos = 0) const; - - // --- set DICOM attribute values --- - - /** set AccessoryCode (300a,00f9) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue); - - /** set BlockData (300a,0106) - * @param value value to be set (possibly multi-valued) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (2-2n) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setBlockData(const OFString &value, const OFBool check = OFTrue); - - /** set BlockDivergence (300a,00fa) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setBlockDivergence(const OFString &value, const OFBool check = OFTrue); - - /** set BlockMountingPosition (300a,00fb) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setBlockMountingPosition(const OFString &value, const OFBool check = OFTrue); - - /** set BlockName (300a,00fe) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setBlockName(const OFString &value, const OFBool check = OFTrue); - - /** set BlockNumber (300a,00fc) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setBlockNumber(const OFString &value, const OFBool check = OFTrue); - - /** set BlockNumberOfPoints (300a,0104) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setBlockNumberOfPoints(const OFString &value, const OFBool check = OFTrue); - - /** set BlockThickness (300a,0100) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setBlockThickness(const OFString &value, const OFBool check = OFTrue); - - /** set BlockTrayID (300a,00f5) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setBlockTrayID(const OFString &value, const OFBool check = OFTrue); - - /** set BlockType (300a,00f8) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setBlockType(const OFString &value, const OFBool check = OFTrue); - - /** set MaterialID (300a,00e1) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setMaterialID(const OFString &value, const OFBool check = OFTrue); - - /** set SourceToBlockTrayDistance (300a,00f6) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setSourceToBlockTrayDistance(const OFString &value, const OFBool check = OFTrue); - - /** set TrayAccessoryCode (300a,0355) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setTrayAccessoryCode(const OFString &value, const OFBool check = OFTrue); - - private: - - /// internal flag used to mark the empty default item - /*const*/ OFBool EmptyDefaultItem; - - /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3 - DcmLongString AccessoryCode; - /// BlockData (300a,0106) vr=DS, vm=2-2n, type=2 - DcmDecimalString BlockData; - /// BlockDivergence (300a,00fa) vr=CS, vm=1, type=2 - DcmCodeString BlockDivergence; - /// BlockMountingPosition (300a,00fb) vr=CS, vm=1, type=3 - DcmCodeString BlockMountingPosition; - /// BlockName (300a,00fe) vr=LO, vm=1, type=3 - DcmLongString BlockName; - /// BlockNumber (300a,00fc) vr=IS, vm=1, type=1 - DcmIntegerString BlockNumber; - /// BlockNumberOfPoints (300a,0104) vr=IS, vm=1, type=2 - DcmIntegerString BlockNumberOfPoints; - /// BlockThickness (300a,0100) vr=DS, vm=1, type=3 - DcmDecimalString BlockThickness; - /// BlockTrayID (300a,00f5) vr=SH, vm=1, type=3 - DcmShortString BlockTrayID; - /// BlockType (300a,00f8) vr=CS, vm=1, type=1 - DcmCodeString BlockType; - /// MaterialID (300a,00e1) vr=SH, vm=1, type=2 - DcmShortString MaterialID; - /// SourceToBlockTrayDistance (300a,00f6) vr=DS, vm=1, type=2 - DcmDecimalString SourceToBlockTrayDistance; - /// TrayAccessoryCode (300a,0355) vr=LO, vm=1, type=3 - DcmLongString TrayAccessoryCode; - - }; - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultSequence internal flag used to mark the empty default sequence - */ - DRTBlockSequenceInRTImageModule(const OFBool emptyDefaultSequence = OFFalse); - - /** copy constructor - * @param copy sequence object to be copied - */ - DRTBlockSequenceInRTImageModule(const DRTBlockSequenceInRTImageModule ©); - - /** destructor - */ - virtual ~DRTBlockSequenceInRTImageModule(); - - /** assignment operator - * @param copy sequence object to be copied - * @return reference to this object - */ - DRTBlockSequenceInRTImageModule &operator=(const DRTBlockSequenceInRTImageModule ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if sequence is empty - * @return OFTrue if sequence is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if sequence is valid, i.e.\ not the empty default sequence - * @return OFTrue if sequence is valid, OFFalse otherwise - */ - OFBool isValid() const; - - /** get number of items in the sequence - * @return number of items - */ - size_t getNumberOfItems() const; - - /** goto first item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoFirstItem(); - - /** goto next item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoNextItem(); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num); - - /** get current item in the sequence - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getCurrentItem(Item *&item) const; - - /** get current item in the sequence - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getCurrentItem(); - - /** get current item in the sequence - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getCurrentItem() const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getItem(const size_t num, Item *&item); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getItem(const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getItem(const size_t num) const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &operator[](const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &operator[](const size_t num) const; - - /** add new item to the end of this sequence - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition addItem(Item *&item); - - /** insert new item into the sequence - * @param pos position where the new item is to be inserted (0..num) - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition insertItem(const size_t pos, Item *&item); - - /** remove particular item from the sequence - * @param pos position of the item to be removed (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition removeItem(const size_t pos); - - // --- input/output methods --- - - /** read sequence of items from dataset - * @param dataset reference to DICOM dataset from which the sequence should be read - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - /** write sequence of items to dataset - * @param dataset reference to DICOM dataset to which the sequence should be written - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - protected: - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListIterator(Item *) &iterator); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListConstIterator(Item *) &iterator) const; - - private: - - /// internal flag used to mark the empty default sequence - /*const*/ OFBool EmptyDefaultSequence; - - /// list of items in this sequence - OFList SequenceOfItems; - /// currently selected item - OFListIterator(Item *) CurrentItem; - /// empty default item - Item EmptyItem; - -}; - - -#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbldls.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbldls.h index ae1a8028..1e3a290b 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtbldls.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtbldls.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTBeamLimitingDeviceLeafPairsSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -246,13 +246,13 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceLeafPairsSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbldps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbldps.h index 8e17dad2..08da002b 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtbldps.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtbldps.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTBeamLimitingDevicePositionSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -252,13 +252,13 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDevicePositionSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtblds1.h b/dcmrt/include/dcmtk/dcmrt/seq/drtblds1.h index 85b8aafb..06882980 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtblds1.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtblds1.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTBeamLimitingDeviceSequenceInRTBeamsModule * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -298,13 +298,13 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceSequenceInRTBeamsModule */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtblds2.h b/dcmrt/include/dcmtk/dcmrt/seq/drtblds2.h new file mode 100644 index 00000000..1a4fc678 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtblds2.h @@ -0,0 +1,408 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTBeamLimitingDeviceSequenceInRTImageModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTBLDS2_H +#define DRTBLDS2_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for BeamLimitingDeviceSequence (300a,00b6) in RTImageModule + */ +class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceSequenceInRTImageModule + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get LeafJawPositions (300a,011c) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getLeafJawPositions(OFString &value, const signed long pos = 0) const; + + /** get LeafJawPositions (300a,011c) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getLeafJawPositions(Float64 &value, const unsigned long pos = 0) const; + + /** get LeafJawPositions (300a,011c) + * @param value reference to variable in which the value(s) should be stored + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getLeafJawPositions(OFVector &value) const; + + /** get LeafPositionBoundaries (300a,00be) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getLeafPositionBoundaries(OFString &value, const signed long pos = 0) const; + + /** get LeafPositionBoundaries (300a,00be) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getLeafPositionBoundaries(Float64 &value, const unsigned long pos = 0) const; + + /** get LeafPositionBoundaries (300a,00be) + * @param value reference to variable in which the value(s) should be stored + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getLeafPositionBoundaries(OFVector &value) const; + + /** get NumberOfLeafJawPairs (300a,00bc) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getNumberOfLeafJawPairs(OFString &value, const signed long pos = 0) const; + + /** get NumberOfLeafJawPairs (300a,00bc) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getNumberOfLeafJawPairs(Sint32 &value, const unsigned long pos = 0) const; + + /** get RTBeamLimitingDeviceType (300a,00b8) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getRTBeamLimitingDeviceType(OFString &value, const signed long pos = 0) const; + + /** get SourceToBeamLimitingDeviceDistance (300a,00ba) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getSourceToBeamLimitingDeviceDistance(OFString &value, const signed long pos = 0) const; + + /** get SourceToBeamLimitingDeviceDistance (300a,00ba) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getSourceToBeamLimitingDeviceDistance(Float64 &value, const unsigned long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set LeafJawPositions (300a,011c) + * @param value value to be set (possibly multi-valued) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (2-2n) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setLeafJawPositions(const OFString &value, const OFBool check = OFTrue); + + /** set LeafPositionBoundaries (300a,00be) + * @param value value to be set (possibly multi-valued) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (3-n) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setLeafPositionBoundaries(const OFString &value, const OFBool check = OFTrue); + + /** set NumberOfLeafJawPairs (300a,00bc) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setNumberOfLeafJawPairs(const OFString &value, const OFBool check = OFTrue); + + /** set RTBeamLimitingDeviceType (300a,00b8) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setRTBeamLimitingDeviceType(const OFString &value, const OFBool check = OFTrue); + + /** set SourceToBeamLimitingDeviceDistance (300a,00ba) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setSourceToBeamLimitingDeviceDistance(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// LeafJawPositions (300a,011c) vr=DS, vm=2-2n, type=1 + DcmDecimalString LeafJawPositions; + /// LeafPositionBoundaries (300a,00be) vr=DS, vm=3-n, type=2C + DcmDecimalString LeafPositionBoundaries; + /// NumberOfLeafJawPairs (300a,00bc) vr=IS, vm=1, type=1 + DcmIntegerString NumberOfLeafJawPairs; + /// RTBeamLimitingDeviceType (300a,00b8) vr=CS, vm=1, type=1 + DcmCodeString RTBeamLimitingDeviceType; + /// SourceToBeamLimitingDeviceDistance (300a,00ba) vr=DS, vm=1, type=3 + DcmDecimalString SourceToBeamLimitingDeviceDistance; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTBeamLimitingDeviceSequenceInRTImageModule(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTBeamLimitingDeviceSequenceInRTImageModule(const DRTBeamLimitingDeviceSequenceInRTImageModule ©); + + /** destructor + */ + virtual ~DRTBeamLimitingDeviceSequenceInRTImageModule(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTBeamLimitingDeviceSequenceInRTImageModule &operator=(const DRTBeamLimitingDeviceSequenceInRTImageModule ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtblds5.h b/dcmrt/include/dcmtk/dcmrt/seq/drtblds5.h deleted file mode 100644 index 93648198..00000000 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtblds5.h +++ /dev/null @@ -1,408 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Header file for class DRTBeamLimitingDeviceSequenceInRTImageModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#ifndef DRTBLDS5_H -#define DRTBLDS5_H - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/ofstd/oflist.h" // for standard list class -#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class - - -/** Interface class for BeamLimitingDeviceSequence (300a,00b6) in RTImageModule - */ -class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceSequenceInRTImageModule - : protected DRTTypes -{ - - public: - - /** Item class - */ - class DCMTK_DCMRT_EXPORT Item - : protected DRTTypes - { - - public: - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultItem flag used to mark the empty default item - */ - Item(const OFBool emptyDefaultItem = OFFalse); - - /** copy constructor - * @param copy item object to be copied - */ - Item(const Item ©); - - /** destructor - */ - virtual ~Item(); - - /** assignment operator - * @param copy item object to be copied - * @return reference to this object - */ - Item &operator=(const Item ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if item is empty - * @return OFTrue if item is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if item is valid, i.e.\ not the empty default item - * @return OFTrue if item is valid, OFFalse otherwise - */ - OFBool isValid() const; - - // --- input/output methods --- - - /** read elements from sequence item - * @param item reference to DICOM sequence item from which the elements should be read - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &item); - - /** write elements to sequence item - * @param item reference to DICOM sequence item to which the elements should be written - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &item); - - // --- get DICOM attribute values --- - - /** get LeafJawPositions (300a,011c) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getLeafJawPositions(OFString &value, const signed long pos = 0) const; - - /** get LeafJawPositions (300a,011c) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getLeafJawPositions(Float64 &value, const unsigned long pos = 0) const; - - /** get LeafJawPositions (300a,011c) - * @param value reference to variable in which the value(s) should be stored - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getLeafJawPositions(OFVector &value) const; - - /** get LeafPositionBoundaries (300a,00be) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getLeafPositionBoundaries(OFString &value, const signed long pos = 0) const; - - /** get LeafPositionBoundaries (300a,00be) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getLeafPositionBoundaries(Float64 &value, const unsigned long pos = 0) const; - - /** get LeafPositionBoundaries (300a,00be) - * @param value reference to variable in which the value(s) should be stored - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getLeafPositionBoundaries(OFVector &value) const; - - /** get NumberOfLeafJawPairs (300a,00bc) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getNumberOfLeafJawPairs(OFString &value, const signed long pos = 0) const; - - /** get NumberOfLeafJawPairs (300a,00bc) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getNumberOfLeafJawPairs(Sint32 &value, const unsigned long pos = 0) const; - - /** get RTBeamLimitingDeviceType (300a,00b8) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getRTBeamLimitingDeviceType(OFString &value, const signed long pos = 0) const; - - /** get SourceToBeamLimitingDeviceDistance (300a,00ba) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getSourceToBeamLimitingDeviceDistance(OFString &value, const signed long pos = 0) const; - - /** get SourceToBeamLimitingDeviceDistance (300a,00ba) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getSourceToBeamLimitingDeviceDistance(Float64 &value, const unsigned long pos = 0) const; - - // --- set DICOM attribute values --- - - /** set LeafJawPositions (300a,011c) - * @param value value to be set (possibly multi-valued) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (2-2n) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setLeafJawPositions(const OFString &value, const OFBool check = OFTrue); - - /** set LeafPositionBoundaries (300a,00be) - * @param value value to be set (possibly multi-valued) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (3-n) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setLeafPositionBoundaries(const OFString &value, const OFBool check = OFTrue); - - /** set NumberOfLeafJawPairs (300a,00bc) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setNumberOfLeafJawPairs(const OFString &value, const OFBool check = OFTrue); - - /** set RTBeamLimitingDeviceType (300a,00b8) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setRTBeamLimitingDeviceType(const OFString &value, const OFBool check = OFTrue); - - /** set SourceToBeamLimitingDeviceDistance (300a,00ba) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setSourceToBeamLimitingDeviceDistance(const OFString &value, const OFBool check = OFTrue); - - private: - - /// internal flag used to mark the empty default item - /*const*/ OFBool EmptyDefaultItem; - - /// LeafJawPositions (300a,011c) vr=DS, vm=2-2n, type=1 - DcmDecimalString LeafJawPositions; - /// LeafPositionBoundaries (300a,00be) vr=DS, vm=3-n, type=2C - DcmDecimalString LeafPositionBoundaries; - /// NumberOfLeafJawPairs (300a,00bc) vr=IS, vm=1, type=1 - DcmIntegerString NumberOfLeafJawPairs; - /// RTBeamLimitingDeviceType (300a,00b8) vr=CS, vm=1, type=1 - DcmCodeString RTBeamLimitingDeviceType; - /// SourceToBeamLimitingDeviceDistance (300a,00ba) vr=DS, vm=1, type=3 - DcmDecimalString SourceToBeamLimitingDeviceDistance; - - }; - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultSequence internal flag used to mark the empty default sequence - */ - DRTBeamLimitingDeviceSequenceInRTImageModule(const OFBool emptyDefaultSequence = OFFalse); - - /** copy constructor - * @param copy sequence object to be copied - */ - DRTBeamLimitingDeviceSequenceInRTImageModule(const DRTBeamLimitingDeviceSequenceInRTImageModule ©); - - /** destructor - */ - virtual ~DRTBeamLimitingDeviceSequenceInRTImageModule(); - - /** assignment operator - * @param copy sequence object to be copied - * @return reference to this object - */ - DRTBeamLimitingDeviceSequenceInRTImageModule &operator=(const DRTBeamLimitingDeviceSequenceInRTImageModule ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if sequence is empty - * @return OFTrue if sequence is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if sequence is valid, i.e.\ not the empty default sequence - * @return OFTrue if sequence is valid, OFFalse otherwise - */ - OFBool isValid() const; - - /** get number of items in the sequence - * @return number of items - */ - size_t getNumberOfItems() const; - - /** goto first item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoFirstItem(); - - /** goto next item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoNextItem(); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num); - - /** get current item in the sequence - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getCurrentItem(Item *&item) const; - - /** get current item in the sequence - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getCurrentItem(); - - /** get current item in the sequence - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getCurrentItem() const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getItem(const size_t num, Item *&item); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getItem(const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getItem(const size_t num) const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &operator[](const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &operator[](const size_t num) const; - - /** add new item to the end of this sequence - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition addItem(Item *&item); - - /** insert new item into the sequence - * @param pos position where the new item is to be inserted (0..num) - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition insertItem(const size_t pos, Item *&item); - - /** remove particular item from the sequence - * @param pos position of the item to be removed (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition removeItem(const size_t pos); - - // --- input/output methods --- - - /** read sequence of items from dataset - * @param dataset reference to DICOM dataset from which the sequence should be read - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - /** write sequence of items to dataset - * @param dataset reference to DICOM dataset to which the sequence should be written - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - protected: - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListIterator(Item *) &iterator); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListConstIterator(Item *) &iterator) const; - - private: - - /// internal flag used to mark the empty default sequence - /*const*/ OFBool EmptyDefaultSequence; - - /// list of items in this sequence - OFList SequenceOfItems; - /// currently selected item - OFListIterator(Item *) CurrentItem; - /// empty default item - Item EmptyItem; - -}; - - -#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtblds6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtblds6.h deleted file mode 100644 index 351e96b9..00000000 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtblds6.h +++ /dev/null @@ -1,408 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Header file for class DRTBeamLimitingDeviceSequenceInRTIonBeamsModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#ifndef DRTBLDS6_H -#define DRTBLDS6_H - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/ofstd/oflist.h" // for standard list class -#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class - - -/** Interface class for BeamLimitingDeviceSequence (300a,00b6) in RTIonBeamsModule - */ -class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceSequenceInRTIonBeamsModule - : protected DRTTypes -{ - - public: - - /** Item class - */ - class DCMTK_DCMRT_EXPORT Item - : protected DRTTypes - { - - public: - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultItem flag used to mark the empty default item - */ - Item(const OFBool emptyDefaultItem = OFFalse); - - /** copy constructor - * @param copy item object to be copied - */ - Item(const Item ©); - - /** destructor - */ - virtual ~Item(); - - /** assignment operator - * @param copy item object to be copied - * @return reference to this object - */ - Item &operator=(const Item ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if item is empty - * @return OFTrue if item is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if item is valid, i.e.\ not the empty default item - * @return OFTrue if item is valid, OFFalse otherwise - */ - OFBool isValid() const; - - // --- input/output methods --- - - /** read elements from sequence item - * @param item reference to DICOM sequence item from which the elements should be read - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &item); - - /** write elements to sequence item - * @param item reference to DICOM sequence item to which the elements should be written - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &item); - - // --- get DICOM attribute values --- - - /** get LeafJawPositions (300a,011c) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getLeafJawPositions(OFString &value, const signed long pos = 0) const; - - /** get LeafJawPositions (300a,011c) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getLeafJawPositions(Float64 &value, const unsigned long pos = 0) const; - - /** get LeafJawPositions (300a,011c) - * @param value reference to variable in which the value(s) should be stored - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getLeafJawPositions(OFVector &value) const; - - /** get LeafPositionBoundaries (300a,00be) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getLeafPositionBoundaries(OFString &value, const signed long pos = 0) const; - - /** get LeafPositionBoundaries (300a,00be) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getLeafPositionBoundaries(Float64 &value, const unsigned long pos = 0) const; - - /** get LeafPositionBoundaries (300a,00be) - * @param value reference to variable in which the value(s) should be stored - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getLeafPositionBoundaries(OFVector &value) const; - - /** get NumberOfLeafJawPairs (300a,00bc) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getNumberOfLeafJawPairs(OFString &value, const signed long pos = 0) const; - - /** get NumberOfLeafJawPairs (300a,00bc) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getNumberOfLeafJawPairs(Sint32 &value, const unsigned long pos = 0) const; - - /** get RTBeamLimitingDeviceType (300a,00b8) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getRTBeamLimitingDeviceType(OFString &value, const signed long pos = 0) const; - - /** get SourceToBeamLimitingDeviceDistance (300a,00ba) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getSourceToBeamLimitingDeviceDistance(OFString &value, const signed long pos = 0) const; - - /** get SourceToBeamLimitingDeviceDistance (300a,00ba) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getSourceToBeamLimitingDeviceDistance(Float64 &value, const unsigned long pos = 0) const; - - // --- set DICOM attribute values --- - - /** set LeafJawPositions (300a,011c) - * @param value value to be set (possibly multi-valued) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (2-2n) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setLeafJawPositions(const OFString &value, const OFBool check = OFTrue); - - /** set LeafPositionBoundaries (300a,00be) - * @param value value to be set (possibly multi-valued) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (3-n) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setLeafPositionBoundaries(const OFString &value, const OFBool check = OFTrue); - - /** set NumberOfLeafJawPairs (300a,00bc) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setNumberOfLeafJawPairs(const OFString &value, const OFBool check = OFTrue); - - /** set RTBeamLimitingDeviceType (300a,00b8) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setRTBeamLimitingDeviceType(const OFString &value, const OFBool check = OFTrue); - - /** set SourceToBeamLimitingDeviceDistance (300a,00ba) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setSourceToBeamLimitingDeviceDistance(const OFString &value, const OFBool check = OFTrue); - - private: - - /// internal flag used to mark the empty default item - /*const*/ OFBool EmptyDefaultItem; - - /// LeafJawPositions (300a,011c) vr=DS, vm=2-2n, type=1 - DcmDecimalString LeafJawPositions; - /// LeafPositionBoundaries (300a,00be) vr=DS, vm=3-n, type=2C - DcmDecimalString LeafPositionBoundaries; - /// NumberOfLeafJawPairs (300a,00bc) vr=IS, vm=1, type=1 - DcmIntegerString NumberOfLeafJawPairs; - /// RTBeamLimitingDeviceType (300a,00b8) vr=CS, vm=1, type=1 - DcmCodeString RTBeamLimitingDeviceType; - /// SourceToBeamLimitingDeviceDistance (300a,00ba) vr=DS, vm=1, type=3 - DcmDecimalString SourceToBeamLimitingDeviceDistance; - - }; - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultSequence internal flag used to mark the empty default sequence - */ - DRTBeamLimitingDeviceSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence = OFFalse); - - /** copy constructor - * @param copy sequence object to be copied - */ - DRTBeamLimitingDeviceSequenceInRTIonBeamsModule(const DRTBeamLimitingDeviceSequenceInRTIonBeamsModule ©); - - /** destructor - */ - virtual ~DRTBeamLimitingDeviceSequenceInRTIonBeamsModule(); - - /** assignment operator - * @param copy sequence object to be copied - * @return reference to this object - */ - DRTBeamLimitingDeviceSequenceInRTIonBeamsModule &operator=(const DRTBeamLimitingDeviceSequenceInRTIonBeamsModule ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if sequence is empty - * @return OFTrue if sequence is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if sequence is valid, i.e.\ not the empty default sequence - * @return OFTrue if sequence is valid, OFFalse otherwise - */ - OFBool isValid() const; - - /** get number of items in the sequence - * @return number of items - */ - size_t getNumberOfItems() const; - - /** goto first item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoFirstItem(); - - /** goto next item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoNextItem(); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num); - - /** get current item in the sequence - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getCurrentItem(Item *&item) const; - - /** get current item in the sequence - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getCurrentItem(); - - /** get current item in the sequence - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getCurrentItem() const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getItem(const size_t num, Item *&item); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getItem(const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getItem(const size_t num) const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &operator[](const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &operator[](const size_t num) const; - - /** add new item to the end of this sequence - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition addItem(Item *&item); - - /** insert new item into the sequence - * @param pos position where the new item is to be inserted (0..num) - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition insertItem(const size_t pos, Item *&item); - - /** remove particular item from the sequence - * @param pos position of the item to be removed (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition removeItem(const size_t pos); - - // --- input/output methods --- - - /** read sequence of items from dataset - * @param dataset reference to DICOM dataset from which the sequence should be read - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - /** write sequence of items to dataset - * @param dataset reference to DICOM dataset to which the sequence should be written - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - protected: - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListIterator(Item *) &iterator); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListConstIterator(Item *) &iterator) const; - - private: - - /// internal flag used to mark the empty default sequence - /*const*/ OFBool EmptyDefaultSequence; - - /// list of items in this sequence - OFList SequenceOfItems; - /// currently selected item - OFListIterator(Item *) CurrentItem; - /// empty default item - Item EmptyItem; - -}; - - -#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbldts.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbldts.h index 5a536e71..6ef2e191 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtbldts.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtbldts.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTBeamLimitingDeviceToleranceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -246,13 +246,13 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceToleranceSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbrcss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbrcss.h index 255f8a7c..d6c2a1d3 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtbrcss.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtbrcss.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTBreedRegistryCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTBreedRegistryCodeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbrdrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbrdrs.h index 1ba75a11..64df3cd5 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtbrdrs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtbrdrs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTBrachyReferencedDoseReferenceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -253,13 +253,13 @@ class DCMTK_DCMRT_EXPORT DRTBrachyReferencedDoseReferenceSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbrs.h index 7b449d0a..82e36ae2 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtbrs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtbrs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTBreedRegistrationSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -240,13 +240,13 @@ class DCMTK_DCMRT_EXPORT DRTBreedRegistrationSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbs.h index a9f9c686..9de2ff99 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtbs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtbs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTBeamSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -21,10 +21,13 @@ #include "dcmtk/dcmrt/drttypes.h" // module-specific helper class #include "dcmtk/dcmrt/seq/drtas1.h" // for ApplicatorSequence #include "dcmtk/dcmrt/seq/drtblds1.h" // for BeamLimitingDeviceSequence -#include "dcmtk/dcmrt/seq/drtbl2.h" // for BlockSequence +#include "dcmtk/dcmrt/seq/drtbl1.h" // for BlockSequence #include "dcmtk/dcmrt/seq/drtcos.h" // for CompensatorSequence #include "dcmtk/dcmrt/seq/drtcps.h" // for ControlPointSequence -#include "dcmtk/dcmrt/seq/drtgas.h" // for GeneralAccessorySequence +#include "dcmtk/dcmrt/seq/drtdfss.h" // for DefinitionSourceSequence +#include "dcmtk/dcmrt/seq/drteblds.h" // for EnhancedRTBeamLimitingDeviceSequence +#include "dcmtk/dcmrt/seq/drtgas2.h" // for GeneralAccessorySequence +#include "dcmtk/dcmrt/seq/drtidcs.h" // for InstitutionalDepartmentTypeCodeSequence #include "dcmtk/dcmrt/seq/drtpvis.h" // for PlannedVerificationImageSequence #include "dcmtk/dcmrt/seq/drtpfms.h" // for PrimaryFluenceModeSequence #include "dcmtk/dcmrt/seq/drtrbos1.h" // for ReferencedBolusSequence @@ -146,6 +149,20 @@ class DCMTK_DCMRT_EXPORT DRTBeamSequence */ OFCondition getDeviceSerialNumber(OFString &value, const signed long pos = 0) const; + /** get EnhancedRTBeamLimitingDeviceDefinitionFlag (3008,00a3) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getEnhancedRTBeamLimitingDeviceDefinitionFlag(OFString &value, const signed long pos = 0) const; + + /** get EntityLongLabel (3010,0038) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getEntityLongLabel(OFString &value, const signed long pos = 0) const; + /** get FinalCumulativeMetersetWeight (300a,010e) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -432,18 +449,54 @@ class DCMTK_DCMRT_EXPORT DRTBeamSequence const DRTControlPointSequence &getControlPointSequence() const { return ControlPointSequence; } + /** get DefinitionSourceSequence (0008,1156) + * @return reference to sequence element + */ + DRTDefinitionSourceSequence &getDefinitionSourceSequence() + { return DefinitionSourceSequence; } + + /** get DefinitionSourceSequence (0008,1156) + * @return const reference to sequence element + */ + const DRTDefinitionSourceSequence &getDefinitionSourceSequence() const + { return DefinitionSourceSequence; } + + /** get EnhancedRTBeamLimitingDeviceSequence (3008,00a1) + * @return reference to sequence element + */ + DRTEnhancedRTBeamLimitingDeviceSequence &getEnhancedRTBeamLimitingDeviceSequence() + { return EnhancedRTBeamLimitingDeviceSequence; } + + /** get EnhancedRTBeamLimitingDeviceSequence (3008,00a1) + * @return const reference to sequence element + */ + const DRTEnhancedRTBeamLimitingDeviceSequence &getEnhancedRTBeamLimitingDeviceSequence() const + { return EnhancedRTBeamLimitingDeviceSequence; } + /** get GeneralAccessorySequence (300a,0420) * @return reference to sequence element */ - DRTGeneralAccessorySequence &getGeneralAccessorySequence() + DRTGeneralAccessorySequenceInRTBeamsModule &getGeneralAccessorySequence() { return GeneralAccessorySequence; } /** get GeneralAccessorySequence (300a,0420) * @return const reference to sequence element */ - const DRTGeneralAccessorySequence &getGeneralAccessorySequence() const + const DRTGeneralAccessorySequenceInRTBeamsModule &getGeneralAccessorySequence() const { return GeneralAccessorySequence; } + /** get InstitutionalDepartmentTypeCodeSequence (0008,1041) + * @return reference to sequence element + */ + DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() + { return InstitutionalDepartmentTypeCodeSequence; } + + /** get InstitutionalDepartmentTypeCodeSequence (0008,1041) + * @return const reference to sequence element + */ + const DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() const + { return InstitutionalDepartmentTypeCodeSequence; } + /** get PlannedVerificationImageSequence (300a,00ca) * @return reference to sequence element */ @@ -565,6 +618,20 @@ class DCMTK_DCMRT_EXPORT DRTBeamSequence */ OFCondition setDeviceSerialNumber(const OFString &value, const OFBool check = OFTrue); + /** set EnhancedRTBeamLimitingDeviceDefinitionFlag (3008,00a3) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setEnhancedRTBeamLimitingDeviceDefinitionFlag(const OFString &value, const OFBool check = OFTrue); + + /** set EntityLongLabel (3010,0038) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setEntityLongLabel(const OFString &value, const OFBool check = OFTrue); + /** set FinalCumulativeMetersetWeight (300a,010e) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled @@ -721,7 +788,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamSequence DRTApplicatorSequenceInRTBeamsModule ApplicatorSequence; /// BeamDescription (300a,00c3) vr=ST, vm=1, type=3 DcmShortText BeamDescription; - /// BeamLimitingDeviceSequence (300a,00b6) vr=SQ, vm=1, type=1 + /// BeamLimitingDeviceSequence (300a,00b6) vr=SQ, vm=1, type=1C DRTBeamLimitingDeviceSequenceInRTBeamsModule BeamLimitingDeviceSequence; /// BeamName (300a,00c2) vr=LO, vm=1, type=3 DcmLongString BeamName; @@ -735,12 +802,20 @@ class DCMTK_DCMRT_EXPORT DRTBeamSequence DRTCompensatorSequence CompensatorSequence; /// ControlPointSequence (300a,0111) vr=SQ, vm=1, type=1 DRTControlPointSequence ControlPointSequence; + /// DefinitionSourceSequence (0008,1156) vr=SQ, vm=1, type=3 + DRTDefinitionSourceSequence DefinitionSourceSequence; /// DeviceSerialNumber (0018,1000) vr=LO, vm=1, type=3 DcmLongString DeviceSerialNumber; + /// EnhancedRTBeamLimitingDeviceDefinitionFlag (3008,00a3) vr=CS, vm=1, type=3 + DcmCodeString EnhancedRTBeamLimitingDeviceDefinitionFlag; + /// EnhancedRTBeamLimitingDeviceSequence (3008,00a1) vr=SQ, vm=1, type=1C + DRTEnhancedRTBeamLimitingDeviceSequence EnhancedRTBeamLimitingDeviceSequence; + /// EntityLongLabel (3010,0038) vr=LO, vm=1, type=3 + DcmLongString EntityLongLabel; /// FinalCumulativeMetersetWeight (300a,010e) vr=DS, vm=1, type=1C DcmDecimalString FinalCumulativeMetersetWeight; /// GeneralAccessorySequence (300a,0420) vr=SQ, vm=1, type=3 - DRTGeneralAccessorySequence GeneralAccessorySequence; + DRTGeneralAccessorySequenceInRTBeamsModule GeneralAccessorySequence; /// HighDoseTechniqueType (300a,00c7) vr=CS, vm=1, type=1C DcmCodeString HighDoseTechniqueType; /// InstitutionAddress (0008,0081) vr=ST, vm=1, type=3 @@ -749,6 +824,8 @@ class DCMTK_DCMRT_EXPORT DRTBeamSequence DcmLongString InstitutionName; /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3 DcmLongString InstitutionalDepartmentName; + /// InstitutionalDepartmentTypeCodeSequence (0008,1041) vr=SQ, vm=1, type=3 + DRTInstitutionalDepartmentTypeCodeSequence InstitutionalDepartmentTypeCodeSequence; /// Manufacturer (0008,0070) vr=LO, vm=1, type=3 DcmLongString Manufacturer; /// ManufacturerModelName (0008,1090) vr=LO, vm=1, type=3 @@ -904,13 +981,13 @@ class DCMTK_DCMRT_EXPORT DRTBeamSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbss.h index 4408378a..f570508a 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtbss.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtbss.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTBlockSlabSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -262,13 +262,13 @@ class DCMTK_DCMRT_EXPORT DRTBlockSlabSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbvcps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbvcps.h index aba13d4f..b9899777 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtbvcps.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtbvcps.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTBeamDoseVerificationControlPointSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -112,6 +112,20 @@ class DCMTK_DCMRT_EXPORT DRTBeamDoseVerificationControlPointSequence */ OFCondition getBeamDosePointSSD(Float32 &value, const unsigned long pos = 0) const; + /** get BeamDosePointSourceToExternalContourDistance (300a,0094) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBeamDosePointSourceToExternalContourDistance(OFString &value, const signed long pos = 0) const; + + /** get BeamDosePointSourceToExternalContourDistance (300a,0094) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBeamDosePointSourceToExternalContourDistance(Float64 &value, const unsigned long pos = 0) const; + /** get CumulativeMetersetWeight (300a,0134) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -163,6 +177,13 @@ class DCMTK_DCMRT_EXPORT DRTBeamDoseVerificationControlPointSequence */ OFCondition setBeamDosePointSSD(const Float32 value, const unsigned long pos = 0); + /** set BeamDosePointSourceToExternalContourDistance (300a,0094) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setBeamDosePointSourceToExternalContourDistance(const OFString &value, const OFBool check = OFTrue); + /** set CumulativeMetersetWeight (300a,0134) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled @@ -188,6 +209,8 @@ class DCMTK_DCMRT_EXPORT DRTBeamDoseVerificationControlPointSequence DcmFloatingPointSingle BeamDosePointEquivalentDepth; /// BeamDosePointSSD (300a,008a) vr=FL, vm=1, type=1C DcmFloatingPointSingle BeamDosePointSSD; + /// BeamDosePointSourceToExternalContourDistance (300a,0094) vr=DS, vm=1, type=3 + DcmDecimalString BeamDosePointSourceToExternalContourDistance; /// CumulativeMetersetWeight (300a,0134) vr=DS, vm=1, type=1 DcmDecimalString CumulativeMetersetWeight; /// ReferencedControlPointIndex (300c,00f0) vr=IS, vm=1, type=1C @@ -301,13 +324,13 @@ class DCMTK_DCMRT_EXPORT DRTBeamDoseVerificationControlPointSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcbars.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcbars.h index 837f2e63..7b8654d4 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtcbars.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcbars.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTContrastBolusAdministrationRouteSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -479,13 +479,13 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtccs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtccs.h index 87b5711f..f0691b77 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtccs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtccs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTConceptCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTConceptCodeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcctus.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcctus.h index fcdb1718..9e7a20d0 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtcctus.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcctus.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTConsentForClinicalTrialUseSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -255,13 +255,13 @@ class DCMTK_DCMRT_EXPORT DRTConsentForClinicalTrialUseSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcdrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcdrs.h index 50762948..c4675426 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtcdrs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcdrs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTCalculatedDoseReferenceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -292,13 +292,13 @@ class DCMTK_DCMRT_EXPORT DRTCalculatedDoseReferenceSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtces.h b/dcmrt/include/dcmtk/dcmrt/seq/drtces.h index 2ef1faa9..c785f800 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtces.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtces.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTContributingEquipmentSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -19,8 +19,10 @@ #include "dcmtk/ofstd/oflist.h" // for standard list class #include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtidcs.h" // for InstitutionalDepartmentTypeCodeSequence #include "dcmtk/dcmrt/seq/drtois.h" // for OperatorIdentificationSequence #include "dcmtk/dcmrt/seq/drtporcs.h" // for PurposeOfReferenceCodeSequence +#include "dcmtk/dcmrt/seq/drtudis.h" // for UDISequence /** Interface class for ContributingEquipmentSequence (0018,a001) @@ -121,6 +123,13 @@ class DCMTK_DCMRT_EXPORT DRTContributingEquipmentSequence */ OFCondition getDeviceSerialNumber(OFString &value, const signed long pos = 0) const; + /** get DeviceUID (0018,1002) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getDeviceUID(OFString &value, const signed long pos = 0) const; + /** get InstitutionAddress (0008,0081) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -200,6 +209,18 @@ class DCMTK_DCMRT_EXPORT DRTContributingEquipmentSequence // --- get DICOM sequence attributes --- + /** get InstitutionalDepartmentTypeCodeSequence (0008,1041) + * @return reference to sequence element + */ + DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() + { return InstitutionalDepartmentTypeCodeSequence; } + + /** get InstitutionalDepartmentTypeCodeSequence (0008,1041) + * @return const reference to sequence element + */ + const DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() const + { return InstitutionalDepartmentTypeCodeSequence; } + /** get OperatorIdentificationSequence (0008,1072) * @return reference to sequence element */ @@ -224,6 +245,18 @@ class DCMTK_DCMRT_EXPORT DRTContributingEquipmentSequence const DRTPurposeOfReferenceCodeSequence &getPurposeOfReferenceCodeSequence() const { return PurposeOfReferenceCodeSequence; } + /** get UDISequence (0018,100a) + * @return reference to sequence element + */ + DRTUDISequence &getUDISequence() + { return UDISequence; } + + /** get UDISequence (0018,100a) + * @return const reference to sequence element + */ + const DRTUDISequence &getUDISequence() const + { return UDISequence; } + // --- set DICOM attribute values --- /** set ContributionDateTime (0018,a002) @@ -254,6 +287,13 @@ class DCMTK_DCMRT_EXPORT DRTContributingEquipmentSequence */ OFCondition setDeviceSerialNumber(const OFString &value, const OFBool check = OFTrue); + /** set DeviceUID (0018,1002) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setDeviceUID(const OFString &value, const OFBool check = OFTrue); + /** set InstitutionAddress (0008,0081) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (ST) and VM (1) if enabled @@ -337,12 +377,16 @@ class DCMTK_DCMRT_EXPORT DRTContributingEquipmentSequence DcmDate DateOfLastCalibration; /// DeviceSerialNumber (0018,1000) vr=LO, vm=1, type=3 DcmLongString DeviceSerialNumber; + /// DeviceUID (0018,1002) vr=UI, vm=1, type=3 + DcmUniqueIdentifier DeviceUID; /// InstitutionAddress (0008,0081) vr=ST, vm=1, type=3 DcmShortText InstitutionAddress; /// InstitutionName (0008,0080) vr=LO, vm=1, type=3 DcmLongString InstitutionName; /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3 DcmLongString InstitutionalDepartmentName; + /// InstitutionalDepartmentTypeCodeSequence (0008,1041) vr=SQ, vm=1, type=3 + DRTInstitutionalDepartmentTypeCodeSequence InstitutionalDepartmentTypeCodeSequence; /// Manufacturer (0008,0070) vr=LO, vm=1, type=1 DcmLongString Manufacturer; /// ManufacturerModelName (0008,1090) vr=LO, vm=1, type=3 @@ -361,6 +405,8 @@ class DCMTK_DCMRT_EXPORT DRTContributingEquipmentSequence DcmShortString StationName; /// TimeOfLastCalibration (0018,1201) vr=TM, vm=1-n, type=3 DcmTime TimeOfLastCalibration; + /// UDISequence (0018,100a) vr=SQ, vm=1, type=3 + DRTUDISequence UDISequence; }; @@ -470,13 +516,13 @@ class DCMTK_DCMRT_EXPORT DRTContributingEquipmentSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcgis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcgis.h index 6fe5c7ab..249a17da 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtcgis.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcgis.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTContextGroupIdentificationSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -271,13 +271,13 @@ class DCMTK_DCMRT_EXPORT DRTContextGroupIdentificationSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtchs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtchs.h index cc4d7214..8f086115 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtchs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtchs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTChannelSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -100,6 +100,20 @@ class DCMTK_DCMRT_EXPORT DRTChannelSequence */ OFCondition getAfterloaderChannelID(OFString &value, const signed long pos = 0) const; + /** get ApplicatorShapeReferencedROINumber (300a,02a1) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getApplicatorShapeReferencedROINumber(OFString &value, const signed long pos = 0) const; + + /** get ApplicatorShapeReferencedROINumber (300a,02a1) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getApplicatorShapeReferencedROINumber(Sint32 &value, const unsigned long pos = 0) const; + /** get ChannelEffectiveLength (300a,0271) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -443,6 +457,13 @@ class DCMTK_DCMRT_EXPORT DRTChannelSequence */ OFCondition setAfterloaderChannelID(const OFString &value, const OFBool check = OFTrue); + /** set ApplicatorShapeReferencedROINumber (300a,02a1) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setApplicatorShapeReferencedROINumber(const OFString &value, const OFBool check = OFTrue); + /** set ChannelEffectiveLength (300a,0271) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled @@ -625,6 +646,8 @@ class DCMTK_DCMRT_EXPORT DRTChannelSequence /// AfterloaderChannelID (300a,0273) vr=SH, vm=1, type=3 DcmShortString AfterloaderChannelID; + /// ApplicatorShapeReferencedROINumber (300a,02a1) vr=IS, vm=1, type=3 + DcmIntegerString ApplicatorShapeReferencedROINumber; /// BrachyControlPointSequence (300a,02d0) vr=SQ, vm=1, type=1 DRTBrachyControlPointSequence BrachyControlPointSequence; /// ChannelEffectiveLength (300a,0271) vr=DS, vm=1, type=3 @@ -788,13 +811,13 @@ class DCMTK_DCMRT_EXPORT DRTChannelSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcims.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcims.h index f5f4d8a4..3f460807 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtcims.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcims.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTContentItemModifierSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -143,6 +143,13 @@ class DCMTK_DCMRT_EXPORT DRTContentItemModifierSequence */ OFCondition getObservationDateTime(OFString &value, const signed long pos = 0) const; + /** get ObservationStartDateTime (0040,a033) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getObservationStartDateTime(OFString &value, const signed long pos = 0) const; + /** get PersonName (0040,a123) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -279,6 +286,13 @@ class DCMTK_DCMRT_EXPORT DRTContentItemModifierSequence */ OFCondition setObservationDateTime(const OFString &value, const OFBool check = OFTrue); + /** set ObservationStartDateTime (0040,a033) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setObservationStartDateTime(const OFString &value, const OFBool check = OFTrue); + /** set PersonName (0040,a123) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (PN) and VM (1) if enabled @@ -349,6 +363,8 @@ class DCMTK_DCMRT_EXPORT DRTContentItemModifierSequence DcmDecimalString NumericValue; /// ObservationDateTime (0040,a032) vr=DT, vm=1, type=3 DcmDateTime ObservationDateTime; + /// ObservationStartDateTime (0040,a033) vr=DT, vm=1, type=3 + DcmDateTime ObservationStartDateTime; /// PersonName (0040,a123) vr=PN, vm=1, type=1C DcmPersonName PersonName; /// RationalDenominatorValue (0040,a163) vr=UL, vm=1-n, type=1C @@ -474,13 +490,13 @@ class DCMTK_DCMRT_EXPORT DRTContentItemModifierSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcis.h index c2baf9b3..4607e2b8 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtcis.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcis.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTContourImageSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -278,13 +278,13 @@ class DCMTK_DCMRT_EXPORT DRTContourImageSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcncs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcncs.h index b9ac282b..e19722ae 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtcncs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcncs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTConceptNameCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTConceptNameCodeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcos.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcos.h index 3adf2f37..ef33e8e6 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtcos.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcos.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTCompensatorSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -588,13 +588,13 @@ class DCMTK_DCMRT_EXPORT DRTCompensatorSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcpas.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcpas.h index e5b24327..8ebf5ddd 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtcpas.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcpas.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTCorrectedParameterSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -278,13 +278,13 @@ class DCMTK_DCMRT_EXPORT DRTCorrectedParameterSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcpis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcpis.h index 5f913a4d..53b4d1be 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtcpis.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcpis.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTConsultingPhysicianIdentificationSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -20,6 +20,7 @@ #include "dcmtk/ofstd/oflist.h" // for standard list class #include "dcmtk/dcmrt/drttypes.h" // module-specific helper class #include "dcmtk/dcmrt/seq/drtics.h" // for InstitutionCodeSequence +#include "dcmtk/dcmrt/seq/drtidcs.h" // for InstitutionalDepartmentTypeCodeSequence #include "dcmtk/dcmrt/seq/drtpics.h" // for PersonIdentificationCodeSequence @@ -107,6 +108,13 @@ class DCMTK_DCMRT_EXPORT DRTConsultingPhysicianIdentificationSequence */ OFCondition getInstitutionName(OFString &value, const signed long pos = 0) const; + /** get InstitutionalDepartmentName (0008,1040) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getInstitutionalDepartmentName(OFString &value, const signed long pos = 0) const; + /** get PersonAddress (0040,1102) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -142,6 +150,18 @@ class DCMTK_DCMRT_EXPORT DRTConsultingPhysicianIdentificationSequence const DRTInstitutionCodeSequence &getInstitutionCodeSequence() const { return InstitutionCodeSequence; } + /** get InstitutionalDepartmentTypeCodeSequence (0008,1041) + * @return reference to sequence element + */ + DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() + { return InstitutionalDepartmentTypeCodeSequence; } + + /** get InstitutionalDepartmentTypeCodeSequence (0008,1041) + * @return const reference to sequence element + */ + const DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() const + { return InstitutionalDepartmentTypeCodeSequence; } + /** get PersonIdentificationCodeSequence (0040,1101) * @return reference to sequence element */ @@ -170,6 +190,13 @@ class DCMTK_DCMRT_EXPORT DRTConsultingPhysicianIdentificationSequence */ OFCondition setInstitutionName(const OFString &value, const OFBool check = OFTrue); + /** set InstitutionalDepartmentName (0008,1040) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setInstitutionalDepartmentName(const OFString &value, const OFBool check = OFTrue); + /** set PersonAddress (0040,1102) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (ST) and VM (1) if enabled @@ -202,6 +229,10 @@ class DCMTK_DCMRT_EXPORT DRTConsultingPhysicianIdentificationSequence DRTInstitutionCodeSequence InstitutionCodeSequence; /// InstitutionName (0008,0080) vr=LO, vm=1, type=1C DcmLongString InstitutionName; + /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3 + DcmLongString InstitutionalDepartmentName; + /// InstitutionalDepartmentTypeCodeSequence (0008,1041) vr=SQ, vm=1, type=3 + DRTInstitutionalDepartmentTypeCodeSequence InstitutionalDepartmentTypeCodeSequence; /// PersonAddress (0040,1102) vr=ST, vm=1, type=3 DcmShortText PersonAddress; /// PersonIdentificationCodeSequence (0040,1101) vr=SQ, vm=1, type=1 @@ -319,13 +350,13 @@ class DCMTK_DCMRT_EXPORT DRTConsultingPhysicianIdentificationSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcps.h index 8f943ae4..01b93f02 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtcps.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcps.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTControlPointSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -20,6 +20,7 @@ #include "dcmtk/ofstd/oflist.h" // for standard list class #include "dcmtk/dcmrt/drttypes.h" // module-specific helper class #include "dcmtk/dcmrt/seq/drtbldps.h" // for BeamLimitingDevicePositionSequence +#include "dcmtk/dcmrt/seq/drteblos.h" // for EnhancedRTBeamLimitingOpeningSequence #include "dcmtk/dcmrt/seq/drtrdrs1.h" // for ReferencedDoseReferenceSequence #include "dcmtk/dcmrt/seq/drtrds.h" // for ReferencedDoseSequence #include "dcmtk/dcmrt/seq/drtwps.h" // for WedgePositionSequence @@ -415,6 +416,18 @@ class DCMTK_DCMRT_EXPORT DRTControlPointSequence const DRTBeamLimitingDevicePositionSequence &getBeamLimitingDevicePositionSequence() const { return BeamLimitingDevicePositionSequence; } + /** get EnhancedRTBeamLimitingOpeningSequence (3008,00a2) + * @return reference to sequence element + */ + DRTEnhancedRTBeamLimitingOpeningSequence &getEnhancedRTBeamLimitingOpeningSequence() + { return EnhancedRTBeamLimitingOpeningSequence; } + + /** get EnhancedRTBeamLimitingOpeningSequence (3008,00a2) + * @return const reference to sequence element + */ + const DRTEnhancedRTBeamLimitingOpeningSequence &getEnhancedRTBeamLimitingOpeningSequence() const + { return EnhancedRTBeamLimitingOpeningSequence; } + /** get ReferencedDoseReferenceSequence (300c,0050) * @return reference to sequence element */ @@ -659,6 +672,8 @@ class DCMTK_DCMRT_EXPORT DRTControlPointSequence DcmDecimalString CumulativeMetersetWeight; /// DoseRateSet (300a,0115) vr=DS, vm=1, type=3 DcmDecimalString DoseRateSet; + /// EnhancedRTBeamLimitingOpeningSequence (3008,00a2) vr=SQ, vm=1, type=2C + DRTEnhancedRTBeamLimitingOpeningSequence EnhancedRTBeamLimitingOpeningSequence; /// ExternalContourEntryPoint (300a,0133) vr=FL, vm=3, type=3 DcmFloatingPointSingle ExternalContourEntryPoint; /// GantryAngle (300a,011e) vr=DS, vm=1, type=1C @@ -818,13 +833,13 @@ class DCMTK_DCMRT_EXPORT DRTControlPointSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcs.h index d23b5465..89fa378e 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtcs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTContourSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -92,20 +92,6 @@ class DCMTK_DCMRT_EXPORT DRTContourSequence // --- get DICOM attribute values --- - /** get AttachedContours (3006,0049) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getAttachedContours(OFString &value, const signed long pos = 0) const; - - /** get AttachedContours (3006,0049) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getAttachedContours(Sint32 &value, const unsigned long pos = 0) const; - /** get ContourData (3006,0050) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -147,40 +133,6 @@ class DCMTK_DCMRT_EXPORT DRTContourSequence */ OFCondition getContourNumber(Sint32 &value, const unsigned long pos = 0) const; - /** get ContourOffsetVector (3006,0045) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getContourOffsetVector(OFString &value, const signed long pos = 0) const; - - /** get ContourOffsetVector (3006,0045) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getContourOffsetVector(Float64 &value, const unsigned long pos = 0) const; - - /** get ContourOffsetVector (3006,0045) - * @param value reference to variable in which the value(s) should be stored - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getContourOffsetVector(OFVector &value) const; - - /** get ContourSlabThickness (3006,0044) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getContourSlabThickness(OFString &value, const signed long pos = 0) const; - - /** get ContourSlabThickness (3006,0044) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getContourSlabThickness(Float64 &value, const unsigned long pos = 0) const; - /** get NumberOfContourPoints (3006,0046) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -211,13 +163,6 @@ class DCMTK_DCMRT_EXPORT DRTContourSequence // --- set DICOM attribute values --- - /** set AttachedContours (3006,0049) - * @param value value to be set (possibly multi-valued) or "" for no value - * @param check check 'value' for conformance with VR (IS) and VM (1-n) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setAttachedContours(const OFString &value, const OFBool check = OFTrue); - /** set ContourData (3006,0050) * @param value value to be set (possibly multi-valued) or "" for no value * @param check check 'value' for conformance with VR (DS) and VM (3-3n) if enabled @@ -239,20 +184,6 @@ class DCMTK_DCMRT_EXPORT DRTContourSequence */ OFCondition setContourNumber(const OFString &value, const OFBool check = OFTrue); - /** set ContourOffsetVector (3006,0045) - * @param value value to be set (possibly multi-valued) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (3) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setContourOffsetVector(const OFString &value, const OFBool check = OFTrue); - - /** set ContourSlabThickness (3006,0044) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setContourSlabThickness(const OFString &value, const OFBool check = OFTrue); - /** set NumberOfContourPoints (3006,0046) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled @@ -265,8 +196,6 @@ class DCMTK_DCMRT_EXPORT DRTContourSequence /// internal flag used to mark the empty default item /*const*/ OFBool EmptyDefaultItem; - /// AttachedContours (3006,0049) vr=IS, vm=1-n, type=3 - DcmIntegerString AttachedContours; /// ContourData (3006,0050) vr=DS, vm=3-3n, type=1 DcmDecimalString ContourData; /// ContourGeometricType (3006,0042) vr=CS, vm=1, type=1 @@ -275,10 +204,6 @@ class DCMTK_DCMRT_EXPORT DRTContourSequence DRTContourImageSequence ContourImageSequence; /// ContourNumber (3006,0048) vr=IS, vm=1, type=3 DcmIntegerString ContourNumber; - /// ContourOffsetVector (3006,0045) vr=DS, vm=3, type=3 - DcmDecimalString ContourOffsetVector; - /// ContourSlabThickness (3006,0044) vr=DS, vm=1, type=3 - DcmDecimalString ContourSlabThickness; /// NumberOfContourPoints (3006,0046) vr=IS, vm=1, type=1 DcmIntegerString NumberOfContourPoints; @@ -390,13 +315,13 @@ class DCMTK_DCMRT_EXPORT DRTContourSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcsas.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcsas.h index 2d4d470a..6730d9eb 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtcsas.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcsas.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTConversionSourceAttributesSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -278,13 +278,13 @@ class DCMTK_DCMRT_EXPORT DRTConversionSourceAttributesSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcshs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcshs.h index 8a198429..8bbc96e7 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtcshs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcshs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTChannelShieldSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -347,13 +347,13 @@ class DCMTK_DCMRT_EXPORT DRTChannelShieldSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcsis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcsis.h index 6507b1b9..047fff6d 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtcsis.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcsis.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTCodingSchemeIdentificationSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -336,13 +336,13 @@ class DCMTK_DCMRT_EXPORT DRTCodingSchemeIdentificationSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcsrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcsrs.h index 5211f70b..6349fe06 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtcsrs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcsrs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTCodingSchemeResourcesSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTCodingSchemeResourcesSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcss.h index 8104f9c0..02bce901 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtcss.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcss.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTChannelSourceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTChannelSourceSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcttcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcttcs.h new file mode 100644 index 00000000..68c94a1b --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcttcs.h @@ -0,0 +1,545 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTClinicalTrialTimePointTypeCodeSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTCTTCS_H +#define DRTCTTCS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtecs.h" // for EquivalentCodeSequence + + +/** Interface class for ClinicalTrialTimePointTypeCodeSequence (0012,0054) + */ +class DCMTK_DCMRT_EXPORT DRTClinicalTrialTimePointTypeCodeSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get CodeMeaning (0008,0104) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodeMeaning(OFString &value, const signed long pos = 0) const; + + /** get CodeValue (0008,0100) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodeValue(OFString &value, const signed long pos = 0) const; + + /** get CodingSchemeDesignator (0008,0102) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodingSchemeDesignator(OFString &value, const signed long pos = 0) const; + + /** get CodingSchemeVersion (0008,0103) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupExtensionCreatorUID (0008,010d) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupExtensionCreatorUID(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupExtensionFlag (0008,010b) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupExtensionFlag(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupLocalVersion (0008,0107) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupLocalVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupVersion (0008,0106) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextIdentifier (0008,010f) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextIdentifier(OFString &value, const signed long pos = 0) const; + + /** get ContextUID (0008,0117) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextUID(OFString &value, const signed long pos = 0) const; + + /** get LongCodeValue (0008,0119) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const; + + /** get MappingResource (0008,0105) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResource(OFString &value, const signed long pos = 0) const; + + /** get MappingResourceName (0008,0122) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const; + + /** get MappingResourceUID (0008,0118) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const; + + /** get URNCodeValue (0008,0120) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const; + + // --- get DICOM sequence attributes --- + + /** get EquivalentCodeSequence (0008,0121) + * @return reference to sequence element + */ + DRTEquivalentCodeSequence &getEquivalentCodeSequence() + { return EquivalentCodeSequence; } + + /** get EquivalentCodeSequence (0008,0121) + * @return const reference to sequence element + */ + const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const + { return EquivalentCodeSequence; } + + // --- set DICOM attribute values --- + + /** set CodeMeaning (0008,0104) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodeMeaning(const OFString &value, const OFBool check = OFTrue); + + /** set CodeValue (0008,0100) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodeValue(const OFString &value, const OFBool check = OFTrue); + + /** set CodingSchemeDesignator (0008,0102) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodingSchemeDesignator(const OFString &value, const OFBool check = OFTrue); + + /** set CodingSchemeVersion (0008,0103) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupExtensionCreatorUID (0008,010d) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupExtensionFlag (0008,010b) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupExtensionFlag(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupLocalVersion (0008,0107) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupLocalVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupVersion (0008,0106) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextIdentifier (0008,010f) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextIdentifier(const OFString &value, const OFBool check = OFTrue); + + /** set ContextUID (0008,0117) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue); + + /** set LongCodeValue (0008,0119) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UC) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResource (0008,0105) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResourceName (0008,0122) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResourceUID (0008,0118) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue); + + /** set URNCodeValue (0008,0120) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UR) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1 + DcmLongString CodeMeaning; + /// CodeValue (0008,0100) vr=SH, vm=1, type=1C + DcmShortString CodeValue; + /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C + DcmShortString CodingSchemeDesignator; + /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C + DcmShortString CodingSchemeVersion; + /// ContextGroupExtensionCreatorUID (0008,010d) vr=UI, vm=1, type=1C + DcmUniqueIdentifier ContextGroupExtensionCreatorUID; + /// ContextGroupExtensionFlag (0008,010b) vr=CS, vm=1, type=3 + DcmCodeString ContextGroupExtensionFlag; + /// ContextGroupLocalVersion (0008,0107) vr=DT, vm=1, type=1C + DcmDateTime ContextGroupLocalVersion; + /// ContextGroupVersion (0008,0106) vr=DT, vm=1, type=1C + DcmDateTime ContextGroupVersion; + /// ContextIdentifier (0008,010f) vr=CS, vm=1, type=3 + DcmCodeString ContextIdentifier; + /// ContextUID (0008,0117) vr=UI, vm=1, type=3 + DcmUniqueIdentifier ContextUID; + /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3 + DRTEquivalentCodeSequence EquivalentCodeSequence; + /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C + DcmUnlimitedCharacters LongCodeValue; + /// MappingResource (0008,0105) vr=CS, vm=1, type=1C + DcmCodeString MappingResource; + /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3 + DcmLongString MappingResourceName; + /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3 + DcmUniqueIdentifier MappingResourceUID; + /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C + DcmUniversalResourceIdentifierOrLocator URNCodeValue; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTClinicalTrialTimePointTypeCodeSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTClinicalTrialTimePointTypeCodeSequence(const DRTClinicalTrialTimePointTypeCodeSequence ©); + + /** destructor + */ + virtual ~DRTClinicalTrialTimePointTypeCodeSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTClinicalTrialTimePointTypeCodeSequence &operator=(const DRTClinicalTrialTimePointTypeCodeSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcvcss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcvcss.h new file mode 100644 index 00000000..8cbb0d36 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcvcss.h @@ -0,0 +1,321 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTConceptualVolumeConstituentSegmentationReferenceSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTCVCSS_H +#define DRTCVCSS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtrdsis.h" // for ReferencedDirectSegmentInstanceSequence + + +/** Interface class for ConceptualVolumeConstituentSegmentationReferenceSequence (3010,0012) + */ +class DCMTK_DCMRT_EXPORT DRTConceptualVolumeConstituentSegmentationReferenceSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get ReferencedSegmentReferenceIndex (3010,0020) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedSegmentReferenceIndex(Uint16 &value, const unsigned long pos = 0) const; + + // --- get DICOM sequence attributes --- + + /** get ReferencedDirectSegmentInstanceSequence (3010,004a) + * @return reference to sequence element + */ + DRTReferencedDirectSegmentInstanceSequence &getReferencedDirectSegmentInstanceSequence() + { return ReferencedDirectSegmentInstanceSequence; } + + /** get ReferencedDirectSegmentInstanceSequence (3010,004a) + * @return const reference to sequence element + */ + const DRTReferencedDirectSegmentInstanceSequence &getReferencedDirectSegmentInstanceSequence() const + { return ReferencedDirectSegmentInstanceSequence; } + + // --- set DICOM attribute values --- + + /** set ReferencedSegmentReferenceIndex (3010,0020) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedSegmentReferenceIndex(const Uint16 value, const unsigned long pos = 0); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// ReferencedDirectSegmentInstanceSequence (3010,004a) vr=SQ, vm=1, type=1 + DRTReferencedDirectSegmentInstanceSequence ReferencedDirectSegmentInstanceSequence; + /// ReferencedSegmentReferenceIndex (3010,0020) vr=US, vm=1, type=1 + DcmUnsignedShort ReferencedSegmentReferenceIndex; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTConceptualVolumeConstituentSegmentationReferenceSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTConceptualVolumeConstituentSegmentationReferenceSequence(const DRTConceptualVolumeConstituentSegmentationReferenceSequence ©); + + /** destructor + */ + virtual ~DRTConceptualVolumeConstituentSegmentationReferenceSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTConceptualVolumeConstituentSegmentationReferenceSequence &operator=(const DRTConceptualVolumeConstituentSegmentationReferenceSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcvdas.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcvdas.h new file mode 100644 index 00000000..ac51040a --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcvdas.h @@ -0,0 +1,384 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTConceptualVolumeDerivationAlgorithmSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTCVDAS_H +#define DRTCVDAS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtafcs.h" // for AlgorithmFamilyCodeSequence +#include "dcmtk/dcmrt/seq/drtancs.h" // for AlgorithmNameCodeSequence + + +/** Interface class for ConceptualVolumeDerivationAlgorithmSequence (3010,0016) + */ +class DCMTK_DCMRT_EXPORT DRTConceptualVolumeDerivationAlgorithmSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get AlgorithmName (0066,0036) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getAlgorithmName(OFString &value, const signed long pos = 0) const; + + /** get AlgorithmParameters (0066,0032) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getAlgorithmParameters(OFString &value, const signed long pos = 0) const; + + /** get AlgorithmSource (0024,0202) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getAlgorithmSource(OFString &value, const signed long pos = 0) const; + + /** get AlgorithmVersion (0066,0031) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getAlgorithmVersion(OFString &value, const signed long pos = 0) const; + + // --- get DICOM sequence attributes --- + + /** get AlgorithmFamilyCodeSequence (0066,002f) + * @return reference to sequence element + */ + DRTAlgorithmFamilyCodeSequence &getAlgorithmFamilyCodeSequence() + { return AlgorithmFamilyCodeSequence; } + + /** get AlgorithmFamilyCodeSequence (0066,002f) + * @return const reference to sequence element + */ + const DRTAlgorithmFamilyCodeSequence &getAlgorithmFamilyCodeSequence() const + { return AlgorithmFamilyCodeSequence; } + + /** get AlgorithmNameCodeSequence (0066,0030) + * @return reference to sequence element + */ + DRTAlgorithmNameCodeSequence &getAlgorithmNameCodeSequence() + { return AlgorithmNameCodeSequence; } + + /** get AlgorithmNameCodeSequence (0066,0030) + * @return const reference to sequence element + */ + const DRTAlgorithmNameCodeSequence &getAlgorithmNameCodeSequence() const + { return AlgorithmNameCodeSequence; } + + // --- set DICOM attribute values --- + + /** set AlgorithmName (0066,0036) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setAlgorithmName(const OFString &value, const OFBool check = OFTrue); + + /** set AlgorithmParameters (0066,0032) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setAlgorithmParameters(const OFString &value, const OFBool check = OFTrue); + + /** set AlgorithmSource (0024,0202) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setAlgorithmSource(const OFString &value, const OFBool check = OFTrue); + + /** set AlgorithmVersion (0066,0031) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setAlgorithmVersion(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// AlgorithmFamilyCodeSequence (0066,002f) vr=SQ, vm=1, type=1 + DRTAlgorithmFamilyCodeSequence AlgorithmFamilyCodeSequence; + /// AlgorithmName (0066,0036) vr=LO, vm=1, type=1 + DcmLongString AlgorithmName; + /// AlgorithmNameCodeSequence (0066,0030) vr=SQ, vm=1, type=3 + DRTAlgorithmNameCodeSequence AlgorithmNameCodeSequence; + /// AlgorithmParameters (0066,0032) vr=LT, vm=1, type=3 + DcmLongText AlgorithmParameters; + /// AlgorithmSource (0024,0202) vr=LO, vm=1, type=3 + DcmLongString AlgorithmSource; + /// AlgorithmVersion (0066,0031) vr=LO, vm=1, type=1 + DcmLongString AlgorithmVersion; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTConceptualVolumeDerivationAlgorithmSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTConceptualVolumeDerivationAlgorithmSequence(const DRTConceptualVolumeDerivationAlgorithmSequence ©); + + /** destructor + */ + virtual ~DRTConceptualVolumeDerivationAlgorithmSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTConceptualVolumeDerivationAlgorithmSequence &operator=(const DRTConceptualVolumeDerivationAlgorithmSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcvis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcvis.h new file mode 100644 index 00000000..cbce6b54 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcvis.h @@ -0,0 +1,351 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTConceptualVolumeIdentificationSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTCVIS_H +#define DRTCVIS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtdcvs.h" // for DerivationConceptualVolumeSequence +#include "dcmtk/dcmrt/seq/drtecvs.h" // for EquivalentConceptualVolumesSequence +#include "dcmtk/dcmrt/seq/drtosirs.h" // for OriginatingSOPInstanceReferenceSequence + + +/** Interface class for ConceptualVolumeIdentificationSequence (3010,00a0) + */ +class DCMTK_DCMRT_EXPORT DRTConceptualVolumeIdentificationSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get ConceptualVolumeUID (3010,0006) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getConceptualVolumeUID(OFString &value, const signed long pos = 0) const; + + // --- get DICOM sequence attributes --- + + /** get DerivationConceptualVolumeSequence (3010,0014) + * @return reference to sequence element + */ + DRTDerivationConceptualVolumeSequence &getDerivationConceptualVolumeSequence() + { return DerivationConceptualVolumeSequence; } + + /** get DerivationConceptualVolumeSequence (3010,0014) + * @return const reference to sequence element + */ + const DRTDerivationConceptualVolumeSequence &getDerivationConceptualVolumeSequence() const + { return DerivationConceptualVolumeSequence; } + + /** get EquivalentConceptualVolumesSequence (3010,000a) + * @return reference to sequence element + */ + DRTEquivalentConceptualVolumesSequence &getEquivalentConceptualVolumesSequence() + { return EquivalentConceptualVolumesSequence; } + + /** get EquivalentConceptualVolumesSequence (3010,000a) + * @return const reference to sequence element + */ + const DRTEquivalentConceptualVolumesSequence &getEquivalentConceptualVolumesSequence() const + { return EquivalentConceptualVolumesSequence; } + + /** get OriginatingSOPInstanceReferenceSequence (3010,0007) + * @return reference to sequence element + */ + DRTOriginatingSOPInstanceReferenceSequence &getOriginatingSOPInstanceReferenceSequence() + { return OriginatingSOPInstanceReferenceSequence; } + + /** get OriginatingSOPInstanceReferenceSequence (3010,0007) + * @return const reference to sequence element + */ + const DRTOriginatingSOPInstanceReferenceSequence &getOriginatingSOPInstanceReferenceSequence() const + { return OriginatingSOPInstanceReferenceSequence; } + + // --- set DICOM attribute values --- + + /** set ConceptualVolumeUID (3010,0006) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setConceptualVolumeUID(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// ConceptualVolumeUID (3010,0006) vr=UI, vm=1, type=1 + DcmUniqueIdentifier ConceptualVolumeUID; + /// DerivationConceptualVolumeSequence (3010,0014) vr=SQ, vm=1, type=3 + DRTDerivationConceptualVolumeSequence DerivationConceptualVolumeSequence; + /// EquivalentConceptualVolumesSequence (3010,000a) vr=SQ, vm=1, type=3 + DRTEquivalentConceptualVolumesSequence EquivalentConceptualVolumesSequence; + /// OriginatingSOPInstanceReferenceSequence (3010,0007) vr=SQ, vm=1, type=1C + DRTOriginatingSOPInstanceReferenceSequence OriginatingSOPInstanceReferenceSequence; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTConceptualVolumeIdentificationSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTConceptualVolumeIdentificationSequence(const DRTConceptualVolumeIdentificationSequence ©); + + /** destructor + */ + virtual ~DRTConceptualVolumeIdentificationSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTConceptualVolumeIdentificationSequence &operator=(const DRTConceptualVolumeIdentificationSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdccs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdccs.h new file mode 100644 index 00000000..fcd61e96 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtdccs.h @@ -0,0 +1,375 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTDoseCalibrationConditionsSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTDCCS_H +#define DRTDCCS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for DoseCalibrationConditionsSequence (300c,0120) + */ +class DCMTK_DCMRT_EXPORT DRTDoseCalibrationConditionsSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get AbsorbedDoseToMetersetRatio (300c,0121) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getAbsorbedDoseToMetersetRatio(Float64 &value, const unsigned long pos = 0) const; + + /** get CalibrationDateTime (0018,1203) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCalibrationDateTime(OFString &value, const signed long pos = 0) const; + + /** get CalibrationReferencePointDepth (300c,0124) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCalibrationReferencePointDepth(Float64 &value, const unsigned long pos = 0) const; + + /** get DelineatedRadiationFieldSize (300c,0122) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getDelineatedRadiationFieldSize(Float64 &value, const unsigned long pos = 0) const; + + /** get SourceToSurfaceDistance (300a,0130) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getSourceToSurfaceDistance(OFString &value, const signed long pos = 0) const; + + /** get SourceToSurfaceDistance (300a,0130) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getSourceToSurfaceDistance(Float64 &value, const unsigned long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set AbsorbedDoseToMetersetRatio (300c,0121) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setAbsorbedDoseToMetersetRatio(const Float64 value, const unsigned long pos = 0); + + /** set CalibrationDateTime (0018,1203) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCalibrationDateTime(const OFString &value, const OFBool check = OFTrue); + + /** set CalibrationReferencePointDepth (300c,0124) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCalibrationReferencePointDepth(const Float64 value, const unsigned long pos = 0); + + /** set DelineatedRadiationFieldSize (300c,0122) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=2 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setDelineatedRadiationFieldSize(const Float64 value, const unsigned long pos = 0); + + /** set SourceToSurfaceDistance (300a,0130) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setSourceToSurfaceDistance(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// AbsorbedDoseToMetersetRatio (300c,0121) vr=FD, vm=1, type=1 + DcmFloatingPointDouble AbsorbedDoseToMetersetRatio; + /// CalibrationDateTime (0018,1203) vr=DT, vm=1, type=2 + DcmDateTime CalibrationDateTime; + /// CalibrationReferencePointDepth (300c,0124) vr=FD, vm=1, type=1 + DcmFloatingPointDouble CalibrationReferencePointDepth; + /// DelineatedRadiationFieldSize (300c,0122) vr=FD, vm=2, type=1 + DcmFloatingPointDouble DelineatedRadiationFieldSize; + /// SourceToSurfaceDistance (300a,0130) vr=DS, vm=1, type=1 + DcmDecimalString SourceToSurfaceDistance; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTDoseCalibrationConditionsSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTDoseCalibrationConditionsSequence(const DRTDoseCalibrationConditionsSequence ©); + + /** destructor + */ + virtual ~DRTDoseCalibrationConditionsSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTDoseCalibrationConditionsSequence &operator=(const DRTDoseCalibrationConditionsSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdcs.h index c5cdda26..2c3e0c1b 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtdcs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtdcs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTDerivationCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTDerivationCodeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdcvs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdcvs.h new file mode 100644 index 00000000..c813bda4 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtdcvs.h @@ -0,0 +1,336 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTDerivationConceptualVolumeSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTDCVS_H +#define DRTDCVS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtcvdas.h" // for ConceptualVolumeDerivationAlgorithmSequence +#include "dcmtk/dcmrt/seq/drtscvs.h" // for SourceConceptualVolumeSequence + + +/** Interface class for DerivationConceptualVolumeSequence (3010,0014) + */ +class DCMTK_DCMRT_EXPORT DRTDerivationConceptualVolumeSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get DerivationDescription (0008,2111) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getDerivationDescription(OFString &value, const signed long pos = 0) const; + + // --- get DICOM sequence attributes --- + + /** get ConceptualVolumeDerivationAlgorithmSequence (3010,0016) + * @return reference to sequence element + */ + DRTConceptualVolumeDerivationAlgorithmSequence &getConceptualVolumeDerivationAlgorithmSequence() + { return ConceptualVolumeDerivationAlgorithmSequence; } + + /** get ConceptualVolumeDerivationAlgorithmSequence (3010,0016) + * @return const reference to sequence element + */ + const DRTConceptualVolumeDerivationAlgorithmSequence &getConceptualVolumeDerivationAlgorithmSequence() const + { return ConceptualVolumeDerivationAlgorithmSequence; } + + /** get SourceConceptualVolumeSequence (3010,0018) + * @return reference to sequence element + */ + DRTSourceConceptualVolumeSequence &getSourceConceptualVolumeSequence() + { return SourceConceptualVolumeSequence; } + + /** get SourceConceptualVolumeSequence (3010,0018) + * @return const reference to sequence element + */ + const DRTSourceConceptualVolumeSequence &getSourceConceptualVolumeSequence() const + { return SourceConceptualVolumeSequence; } + + // --- set DICOM attribute values --- + + /** set DerivationDescription (0008,2111) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (ST) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setDerivationDescription(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// ConceptualVolumeDerivationAlgorithmSequence (3010,0016) vr=SQ, vm=1, type=3 + DRTConceptualVolumeDerivationAlgorithmSequence ConceptualVolumeDerivationAlgorithmSequence; + /// DerivationDescription (0008,2111) vr=ST, vm=1, type=3 + DcmShortText DerivationDescription; + /// SourceConceptualVolumeSequence (3010,0018) vr=SQ, vm=1, type=1 + DRTSourceConceptualVolumeSequence SourceConceptualVolumeSequence; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTDerivationConceptualVolumeSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTDerivationConceptualVolumeSequence(const DRTDerivationConceptualVolumeSequence ©); + + /** destructor + */ + virtual ~DRTDerivationConceptualVolumeSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTDerivationConceptualVolumeSequence &operator=(const DRTDerivationConceptualVolumeSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdddps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdddps.h index 8c0b7bfa..738ba71e 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtdddps.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtdddps.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTDeliveredDepthDoseParametersSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -287,13 +287,13 @@ class DCMTK_DCMRT_EXPORT DRTDeliveredDepthDoseParametersSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtddps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtddps.h index e0e8561f..f104d110 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtddps.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtddps.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTDepthDoseParametersSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -287,13 +287,13 @@ class DCMTK_DCMRT_EXPORT DRTDepthDoseParametersSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdfss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdfss.h new file mode 100644 index 00000000..58f0e3f1 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtdfss.h @@ -0,0 +1,320 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTDefinitionSourceSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTDFSS_H +#define DRTDFSS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for DefinitionSourceSequence (0008,1156) + */ +class DCMTK_DCMRT_EXPORT DRTDefinitionSourceSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get ReferencedSOPClassUID (0008,1150) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const; + + /** get ReferencedSOPInstanceUID (0008,1155) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set ReferencedSOPClassUID (0008,1150) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue); + + /** set ReferencedSOPInstanceUID (0008,1155) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1 + DcmUniqueIdentifier ReferencedSOPClassUID; + /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1 + DcmUniqueIdentifier ReferencedSOPInstanceUID; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTDefinitionSourceSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTDefinitionSourceSequence(const DRTDefinitionSourceSequence ©); + + /** destructor + */ + virtual ~DRTDefinitionSourceSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTDefinitionSourceSequence &operator=(const DRTDefinitionSourceSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdias.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdias.h index 47287ac6..a7ce1fb0 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtdias.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtdias.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTDeidentificationActionSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTDeidentificationActionSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdimcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdimcs.h index 2949c88a..31f75dba 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtdimcs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtdimcs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTDeidentificationMethodCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTDeidentificationMethodCodeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdimrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdimrs.h index 33172ea7..92200ba6 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtdimrs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtdimrs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTDICOMMediaRetrievalSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTDICOMMediaRetrievalSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdirs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdirs.h index a3f58126..f4a18f8c 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtdirs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtdirs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTDICOMRetrievalSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -223,13 +223,13 @@ class DCMTK_DCMRT_EXPORT DRTDICOMRetrievalSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdrs.h index be83d250..00b8c719 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtdrs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtdrs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTDoseReferenceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -622,13 +622,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseReferenceSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtds.h b/dcmrt/include/dcmtk/dcmrt/seq/drtds.h index 4ced8765..a0c0bdb6 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtds.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtds.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTDeviceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -652,13 +652,13 @@ class DCMTK_DCMRT_EXPORT DRTDeviceSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdspcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdspcs.h index 61145ab7..a9c3014b 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtdspcs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtdspcs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTDigitalSignaturePurposeCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTDigitalSignaturePurposeCodeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdss.h index 8fe2324a..6d1a2a7c 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtdss.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtdss.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTDigitalSignaturesSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -352,13 +352,13 @@ class DCMTK_DCMRT_EXPORT DRTDigitalSignaturesSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdtcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdtcs.h new file mode 100644 index 00000000..038f1ae3 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtdtcs.h @@ -0,0 +1,545 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTDeviceTypeCodeSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTDTCS_H +#define DRTDTCS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtecs.h" // for EquivalentCodeSequence + + +/** Interface class for DeviceTypeCodeSequence (3010,002e) + */ +class DCMTK_DCMRT_EXPORT DRTDeviceTypeCodeSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get CodeMeaning (0008,0104) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodeMeaning(OFString &value, const signed long pos = 0) const; + + /** get CodeValue (0008,0100) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodeValue(OFString &value, const signed long pos = 0) const; + + /** get CodingSchemeDesignator (0008,0102) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodingSchemeDesignator(OFString &value, const signed long pos = 0) const; + + /** get CodingSchemeVersion (0008,0103) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupExtensionCreatorUID (0008,010d) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupExtensionCreatorUID(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupExtensionFlag (0008,010b) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupExtensionFlag(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupLocalVersion (0008,0107) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupLocalVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupVersion (0008,0106) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextIdentifier (0008,010f) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextIdentifier(OFString &value, const signed long pos = 0) const; + + /** get ContextUID (0008,0117) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextUID(OFString &value, const signed long pos = 0) const; + + /** get LongCodeValue (0008,0119) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const; + + /** get MappingResource (0008,0105) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResource(OFString &value, const signed long pos = 0) const; + + /** get MappingResourceName (0008,0122) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const; + + /** get MappingResourceUID (0008,0118) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const; + + /** get URNCodeValue (0008,0120) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const; + + // --- get DICOM sequence attributes --- + + /** get EquivalentCodeSequence (0008,0121) + * @return reference to sequence element + */ + DRTEquivalentCodeSequence &getEquivalentCodeSequence() + { return EquivalentCodeSequence; } + + /** get EquivalentCodeSequence (0008,0121) + * @return const reference to sequence element + */ + const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const + { return EquivalentCodeSequence; } + + // --- set DICOM attribute values --- + + /** set CodeMeaning (0008,0104) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodeMeaning(const OFString &value, const OFBool check = OFTrue); + + /** set CodeValue (0008,0100) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodeValue(const OFString &value, const OFBool check = OFTrue); + + /** set CodingSchemeDesignator (0008,0102) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodingSchemeDesignator(const OFString &value, const OFBool check = OFTrue); + + /** set CodingSchemeVersion (0008,0103) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupExtensionCreatorUID (0008,010d) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupExtensionFlag (0008,010b) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupExtensionFlag(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupLocalVersion (0008,0107) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupLocalVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupVersion (0008,0106) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextIdentifier (0008,010f) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextIdentifier(const OFString &value, const OFBool check = OFTrue); + + /** set ContextUID (0008,0117) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue); + + /** set LongCodeValue (0008,0119) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UC) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResource (0008,0105) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResourceName (0008,0122) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResourceUID (0008,0118) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue); + + /** set URNCodeValue (0008,0120) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UR) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1 + DcmLongString CodeMeaning; + /// CodeValue (0008,0100) vr=SH, vm=1, type=1C + DcmShortString CodeValue; + /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C + DcmShortString CodingSchemeDesignator; + /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C + DcmShortString CodingSchemeVersion; + /// ContextGroupExtensionCreatorUID (0008,010d) vr=UI, vm=1, type=1C + DcmUniqueIdentifier ContextGroupExtensionCreatorUID; + /// ContextGroupExtensionFlag (0008,010b) vr=CS, vm=1, type=3 + DcmCodeString ContextGroupExtensionFlag; + /// ContextGroupLocalVersion (0008,0107) vr=DT, vm=1, type=1C + DcmDateTime ContextGroupLocalVersion; + /// ContextGroupVersion (0008,0106) vr=DT, vm=1, type=1C + DcmDateTime ContextGroupVersion; + /// ContextIdentifier (0008,010f) vr=CS, vm=1, type=3 + DcmCodeString ContextIdentifier; + /// ContextUID (0008,0117) vr=UI, vm=1, type=3 + DcmUniqueIdentifier ContextUID; + /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3 + DRTEquivalentCodeSequence EquivalentCodeSequence; + /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C + DcmUnlimitedCharacters LongCodeValue; + /// MappingResource (0008,0105) vr=CS, vm=1, type=1C + DcmCodeString MappingResource; + /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3 + DcmLongString MappingResourceName; + /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3 + DcmUniqueIdentifier MappingResourceUID; + /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C + DcmUniversalResourceIdentifierOrLocator URNCodeValue; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTDeviceTypeCodeSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTDeviceTypeCodeSequence(const DRTDeviceTypeCodeSequence ©); + + /** destructor + */ + virtual ~DRTDeviceTypeCodeSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTDeviceTypeCodeSequence &operator=(const DRTDeviceTypeCodeSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdvhs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdvhs.h index 720dbae0..3b0158d1 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtdvhs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtdvhs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTDVHSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -432,13 +432,13 @@ class DCMTK_DCMRT_EXPORT DRTDVHSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdvrrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdvrrs.h index 2a18c2f1..e7492fbd 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtdvrrs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtdvrrs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTDVHReferencedROISequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -246,13 +246,13 @@ class DCMTK_DCMRT_EXPORT DRTDVHReferencedROISequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drteas.h b/dcmrt/include/dcmtk/dcmrt/seq/drteas.h index a716e772..d84bf153 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drteas.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drteas.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTEncryptedAttributesSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTEncryptedAttributesSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drteblds.h b/dcmrt/include/dcmtk/dcmrt/seq/drteblds.h new file mode 100644 index 00000000..371b273c --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drteblds.h @@ -0,0 +1,670 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTEnhancedRTBeamLimitingDeviceSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTEBLDS_H +#define DRTEBLDS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtdtcs.h" // for DeviceTypeCodeSequence +#include "dcmtk/dcmrt/seq/drtfbdds.h" // for FixedRTBeamDelimiterDeviceSequence +#include "dcmtk/dcmrt/seq/drtpbdds.h" // for ParallelRTBeamDelimiterDeviceSequence +#include "dcmtk/dcmrt/seq/drtudis.h" // for UDISequence + + +/** Interface class for EnhancedRTBeamLimitingDeviceSequence (3008,00a1) + */ +class DCMTK_DCMRT_EXPORT DRTEnhancedRTBeamLimitingDeviceSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get BeamModifierOrientationAngle (300a,0645) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBeamModifierOrientationAngle(Float64 &value, const unsigned long pos = 0) const; + + /** get DeviceAlternateIdentifier (3010,001b) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getDeviceAlternateIdentifier(OFString &value, const signed long pos = 0) const; + + /** get DeviceAlternateIdentifierFormat (3010,001d) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getDeviceAlternateIdentifierFormat(OFString &value, const signed long pos = 0) const; + + /** get DeviceAlternateIdentifierType (3010,001c) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getDeviceAlternateIdentifierType(OFString &value, const signed long pos = 0) const; + + /** get DeviceIndex (3010,0039) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getDeviceIndex(Uint16 &value, const unsigned long pos = 0) const; + + /** get DeviceLabel (3010,002d) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getDeviceLabel(OFString &value, const signed long pos = 0) const; + + /** get DeviceSerialNumber (0018,1000) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getDeviceSerialNumber(OFString &value, const signed long pos = 0) const; + + /** get LongDeviceDescription (0050,0021) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getLongDeviceDescription(OFString &value, const signed long pos = 0) const; + + /** get Manufacturer (0008,0070) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getManufacturer(OFString &value, const signed long pos = 0) const; + + /** get ManufacturerDeviceIdentifier (3010,0043) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getManufacturerDeviceIdentifier(OFString &value, const signed long pos = 0) const; + + /** get ManufacturerModelName (0008,1090) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getManufacturerModelName(OFString &value, const signed long pos = 0) const; + + /** get ManufacturerModelVersion (3010,001a) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getManufacturerModelVersion(OFString &value, const signed long pos = 0) const; + + /** get RTAccessoryDeviceSlotID (300a,0615) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getRTAccessoryDeviceSlotID(OFString &value, const signed long pos = 0) const; + + /** get RTAccessoryHolderSlotID (300a,0611) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getRTAccessoryHolderSlotID(OFString &value, const signed long pos = 0) const; + + /** get RTAccessorySlotDistance (300a,0613) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getRTAccessorySlotDistance(Float64 &value, const unsigned long pos = 0) const; + + /** get RTBeamLimitingDeviceDistalDistance (300a,0643) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getRTBeamLimitingDeviceDistalDistance(Float64 &value, const unsigned long pos = 0) const; + + /** get RTBeamLimitingDeviceProximalDistance (300a,0642) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getRTBeamLimitingDeviceProximalDistance(Float64 &value, const unsigned long pos = 0) const; + + /** get ReferencedDefinedDeviceIndex (300a,0602) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedDefinedDeviceIndex(Uint16 &value, const unsigned long pos = 0) const; + + /** get ReferencedRTAccessoryHolderDeviceIndex (300a,060e) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedRTAccessoryHolderDeviceIndex(Uint16 &value, const unsigned long pos = 0) const; + + /** get SoftwareVersions (0018,1020) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getSoftwareVersions(OFString &value, const signed long pos = 0) const; + + // --- get DICOM sequence attributes --- + + /** get DeviceTypeCodeSequence (3010,002e) + * @return reference to sequence element + */ + DRTDeviceTypeCodeSequence &getDeviceTypeCodeSequence() + { return DeviceTypeCodeSequence; } + + /** get DeviceTypeCodeSequence (3010,002e) + * @return const reference to sequence element + */ + const DRTDeviceTypeCodeSequence &getDeviceTypeCodeSequence() const + { return DeviceTypeCodeSequence; } + + /** get FixedRTBeamDelimiterDeviceSequence (300a,0646) + * @return reference to sequence element + */ + DRTFixedRTBeamDelimiterDeviceSequence &getFixedRTBeamDelimiterDeviceSequence() + { return FixedRTBeamDelimiterDeviceSequence; } + + /** get FixedRTBeamDelimiterDeviceSequence (300a,0646) + * @return const reference to sequence element + */ + const DRTFixedRTBeamDelimiterDeviceSequence &getFixedRTBeamDelimiterDeviceSequence() const + { return FixedRTBeamDelimiterDeviceSequence; } + + /** get ParallelRTBeamDelimiterDeviceSequence (300a,0647) + * @return reference to sequence element + */ + DRTParallelRTBeamDelimiterDeviceSequence &getParallelRTBeamDelimiterDeviceSequence() + { return ParallelRTBeamDelimiterDeviceSequence; } + + /** get ParallelRTBeamDelimiterDeviceSequence (300a,0647) + * @return const reference to sequence element + */ + const DRTParallelRTBeamDelimiterDeviceSequence &getParallelRTBeamDelimiterDeviceSequence() const + { return ParallelRTBeamDelimiterDeviceSequence; } + + /** get UDISequence (0018,100a) + * @return reference to sequence element + */ + DRTUDISequence &getUDISequence() + { return UDISequence; } + + /** get UDISequence (0018,100a) + * @return const reference to sequence element + */ + const DRTUDISequence &getUDISequence() const + { return UDISequence; } + + // --- set DICOM attribute values --- + + /** set BeamModifierOrientationAngle (300a,0645) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setBeamModifierOrientationAngle(const Float64 value, const unsigned long pos = 0); + + /** set DeviceAlternateIdentifier (3010,001b) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UC) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setDeviceAlternateIdentifier(const OFString &value, const OFBool check = OFTrue); + + /** set DeviceAlternateIdentifierFormat (3010,001d) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setDeviceAlternateIdentifierFormat(const OFString &value, const OFBool check = OFTrue); + + /** set DeviceAlternateIdentifierType (3010,001c) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setDeviceAlternateIdentifierType(const OFString &value, const OFBool check = OFTrue); + + /** set DeviceIndex (3010,0039) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setDeviceIndex(const Uint16 value, const unsigned long pos = 0); + + /** set DeviceLabel (3010,002d) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setDeviceLabel(const OFString &value, const OFBool check = OFTrue); + + /** set DeviceSerialNumber (0018,1000) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setDeviceSerialNumber(const OFString &value, const OFBool check = OFTrue); + + /** set LongDeviceDescription (0050,0021) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (ST) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setLongDeviceDescription(const OFString &value, const OFBool check = OFTrue); + + /** set Manufacturer (0008,0070) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setManufacturer(const OFString &value, const OFBool check = OFTrue); + + /** set ManufacturerDeviceIdentifier (3010,0043) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (ST) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setManufacturerDeviceIdentifier(const OFString &value, const OFBool check = OFTrue); + + /** set ManufacturerModelName (0008,1090) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setManufacturerModelName(const OFString &value, const OFBool check = OFTrue); + + /** set ManufacturerModelVersion (3010,001a) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setManufacturerModelVersion(const OFString &value, const OFBool check = OFTrue); + + /** set RTAccessoryDeviceSlotID (300a,0615) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setRTAccessoryDeviceSlotID(const OFString &value, const OFBool check = OFTrue); + + /** set RTAccessoryHolderSlotID (300a,0611) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setRTAccessoryHolderSlotID(const OFString &value, const OFBool check = OFTrue); + + /** set RTAccessorySlotDistance (300a,0613) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setRTAccessorySlotDistance(const Float64 value, const unsigned long pos = 0); + + /** set RTBeamLimitingDeviceDistalDistance (300a,0643) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setRTBeamLimitingDeviceDistalDistance(const Float64 value, const unsigned long pos = 0); + + /** set RTBeamLimitingDeviceProximalDistance (300a,0642) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setRTBeamLimitingDeviceProximalDistance(const Float64 value, const unsigned long pos = 0); + + /** set ReferencedDefinedDeviceIndex (300a,0602) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedDefinedDeviceIndex(const Uint16 value, const unsigned long pos = 0); + + /** set ReferencedRTAccessoryHolderDeviceIndex (300a,060e) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedRTAccessoryHolderDeviceIndex(const Uint16 value, const unsigned long pos = 0); + + /** set SoftwareVersions (0018,1020) + * @param value value to be set (possibly multi-valued) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1-n) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setSoftwareVersions(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// BeamModifierOrientationAngle (300a,0645) vr=FD, vm=1, type=1 + DcmFloatingPointDouble BeamModifierOrientationAngle; + /// DeviceAlternateIdentifier (3010,001b) vr=UC, vm=1, type=2 + DcmUnlimitedCharacters DeviceAlternateIdentifier; + /// DeviceAlternateIdentifierFormat (3010,001d) vr=LT, vm=1, type=1C + DcmLongText DeviceAlternateIdentifierFormat; + /// DeviceAlternateIdentifierType (3010,001c) vr=CS, vm=1, type=1C + DcmCodeString DeviceAlternateIdentifierType; + /// DeviceIndex (3010,0039) vr=US, vm=1, type=1 + DcmUnsignedShort DeviceIndex; + /// DeviceLabel (3010,002d) vr=LO, vm=1, type=1 + DcmLongString DeviceLabel; + /// DeviceSerialNumber (0018,1000) vr=LO, vm=1, type=2 + DcmLongString DeviceSerialNumber; + /// DeviceTypeCodeSequence (3010,002e) vr=SQ, vm=1, type=1 + DRTDeviceTypeCodeSequence DeviceTypeCodeSequence; + /// FixedRTBeamDelimiterDeviceSequence (300a,0646) vr=SQ, vm=1, type=1C + DRTFixedRTBeamDelimiterDeviceSequence FixedRTBeamDelimiterDeviceSequence; + /// LongDeviceDescription (0050,0021) vr=ST, vm=1, type=3 + DcmShortText LongDeviceDescription; + /// Manufacturer (0008,0070) vr=LO, vm=1, type=2 + DcmLongString Manufacturer; + /// ManufacturerDeviceIdentifier (3010,0043) vr=ST, vm=1, type=2 + DcmShortText ManufacturerDeviceIdentifier; + /// ManufacturerModelName (0008,1090) vr=LO, vm=1, type=2 + DcmLongString ManufacturerModelName; + /// ManufacturerModelVersion (3010,001a) vr=LO, vm=1, type=2 + DcmLongString ManufacturerModelVersion; + /// ParallelRTBeamDelimiterDeviceSequence (300a,0647) vr=SQ, vm=1, type=1C + DRTParallelRTBeamDelimiterDeviceSequence ParallelRTBeamDelimiterDeviceSequence; + /// RTAccessoryDeviceSlotID (300a,0615) vr=LO, vm=1, type=2C + DcmLongString RTAccessoryDeviceSlotID; + /// RTAccessoryHolderSlotID (300a,0611) vr=LO, vm=1, type=2C + DcmLongString RTAccessoryHolderSlotID; + /// RTAccessorySlotDistance (300a,0613) vr=FD, vm=1, type=2C + DcmFloatingPointDouble RTAccessorySlotDistance; + /// RTBeamLimitingDeviceDistalDistance (300a,0643) vr=FD, vm=1, type=2 + DcmFloatingPointDouble RTBeamLimitingDeviceDistalDistance; + /// RTBeamLimitingDeviceProximalDistance (300a,0642) vr=FD, vm=1, type=2 + DcmFloatingPointDouble RTBeamLimitingDeviceProximalDistance; + /// ReferencedDefinedDeviceIndex (300a,0602) vr=US, vm=1, type=1C + DcmUnsignedShort ReferencedDefinedDeviceIndex; + /// ReferencedRTAccessoryHolderDeviceIndex (300a,060e) vr=US, vm=1, type=2C + DcmUnsignedShort ReferencedRTAccessoryHolderDeviceIndex; + /// SoftwareVersions (0018,1020) vr=LO, vm=1-n, type=2 + DcmLongString SoftwareVersions; + /// UDISequence (0018,100a) vr=SQ, vm=1, type=3 + DRTUDISequence UDISequence; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTEnhancedRTBeamLimitingDeviceSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTEnhancedRTBeamLimitingDeviceSequence(const DRTEnhancedRTBeamLimitingDeviceSequence ©); + + /** destructor + */ + virtual ~DRTEnhancedRTBeamLimitingDeviceSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTEnhancedRTBeamLimitingDeviceSequence &operator=(const DRTEnhancedRTBeamLimitingDeviceSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drteblos.h b/dcmrt/include/dcmtk/dcmrt/seq/drteblos.h new file mode 100644 index 00000000..d0ed2cd1 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drteblos.h @@ -0,0 +1,353 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTEnhancedRTBeamLimitingOpeningSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTEBLOS_H +#define DRTEBLOS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtrbdgs.h" // for RTBeamDelimiterGeometrySequence + + +/** Interface class for EnhancedRTBeamLimitingOpeningSequence (3008,00a2) + */ +class DCMTK_DCMRT_EXPORT DRTEnhancedRTBeamLimitingOpeningSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get ParallelRTBeamDelimiterPositions (300a,064a) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getParallelRTBeamDelimiterPositions(Float64 &value, const unsigned long pos = 0) const; + + /** get RTBeamLimitingDeviceOffset (300a,064b) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getRTBeamLimitingDeviceOffset(Float64 &value, const unsigned long pos = 0) const; + + /** get ReferencedDeviceIndex (300a,0607) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedDeviceIndex(Uint16 &value, const unsigned long pos = 0) const; + + // --- get DICOM sequence attributes --- + + /** get RTBeamDelimiterGeometrySequence (300a,064c) + * @return reference to sequence element + */ + DRTRTBeamDelimiterGeometrySequence &getRTBeamDelimiterGeometrySequence() + { return RTBeamDelimiterGeometrySequence; } + + /** get RTBeamDelimiterGeometrySequence (300a,064c) + * @return const reference to sequence element + */ + const DRTRTBeamDelimiterGeometrySequence &getRTBeamDelimiterGeometrySequence() const + { return RTBeamDelimiterGeometrySequence; } + + // --- set DICOM attribute values --- + + /** set ParallelRTBeamDelimiterPositions (300a,064a) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=2-n + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setParallelRTBeamDelimiterPositions(const Float64 value, const unsigned long pos = 0); + + /** set RTBeamLimitingDeviceOffset (300a,064b) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=2 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setRTBeamLimitingDeviceOffset(const Float64 value, const unsigned long pos = 0); + + /** set ReferencedDeviceIndex (300a,0607) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedDeviceIndex(const Uint16 value, const unsigned long pos = 0); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// ParallelRTBeamDelimiterPositions (300a,064a) vr=FD, vm=2-n, type=1C + DcmFloatingPointDouble ParallelRTBeamDelimiterPositions; + /// RTBeamDelimiterGeometrySequence (300a,064c) vr=SQ, vm=1, type=1C + DRTRTBeamDelimiterGeometrySequence RTBeamDelimiterGeometrySequence; + /// RTBeamLimitingDeviceOffset (300a,064b) vr=FD, vm=2, type=1C + DcmFloatingPointDouble RTBeamLimitingDeviceOffset; + /// ReferencedDeviceIndex (300a,0607) vr=US, vm=1, type=1 + DcmUnsignedShort ReferencedDeviceIndex; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTEnhancedRTBeamLimitingOpeningSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTEnhancedRTBeamLimitingOpeningSequence(const DRTEnhancedRTBeamLimitingOpeningSequence ©); + + /** destructor + */ + virtual ~DRTEnhancedRTBeamLimitingOpeningSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTEnhancedRTBeamLimitingOpeningSequence &operator=(const DRTEnhancedRTBeamLimitingOpeningSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtecs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtecs.h index fac02308..4be8b433 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtecs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtecs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTEquivalentCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -447,13 +447,13 @@ class DCMTK_DCMRT_EXPORT DRTEquivalentCodeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtecvis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtecvis.h new file mode 100644 index 00000000..e41df09e --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtecvis.h @@ -0,0 +1,320 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTEquivalentConceptualVolumeInstanceReferenceSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTECVIS_H +#define DRTECVIS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for EquivalentConceptualVolumeInstanceReferenceSequence (3010,0009) + */ +class DCMTK_DCMRT_EXPORT DRTEquivalentConceptualVolumeInstanceReferenceSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get ReferencedSOPClassUID (0008,1150) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const; + + /** get ReferencedSOPInstanceUID (0008,1155) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set ReferencedSOPClassUID (0008,1150) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue); + + /** set ReferencedSOPInstanceUID (0008,1155) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1 + DcmUniqueIdentifier ReferencedSOPClassUID; + /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1 + DcmUniqueIdentifier ReferencedSOPInstanceUID; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTEquivalentConceptualVolumeInstanceReferenceSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTEquivalentConceptualVolumeInstanceReferenceSequence(const DRTEquivalentConceptualVolumeInstanceReferenceSequence ©); + + /** destructor + */ + virtual ~DRTEquivalentConceptualVolumeInstanceReferenceSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTEquivalentConceptualVolumeInstanceReferenceSequence &operator=(const DRTEquivalentConceptualVolumeInstanceReferenceSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtecvs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtecvs.h new file mode 100644 index 00000000..6feb0a3b --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtecvs.h @@ -0,0 +1,321 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTEquivalentConceptualVolumesSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTECVS_H +#define DRTECVS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtecvis.h" // for EquivalentConceptualVolumeInstanceReferenceSequence + + +/** Interface class for EquivalentConceptualVolumesSequence (3010,000a) + */ +class DCMTK_DCMRT_EXPORT DRTEquivalentConceptualVolumesSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get ReferencedConceptualVolumeUID (3010,000b) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedConceptualVolumeUID(OFString &value, const signed long pos = 0) const; + + // --- get DICOM sequence attributes --- + + /** get EquivalentConceptualVolumeInstanceReferenceSequence (3010,0009) + * @return reference to sequence element + */ + DRTEquivalentConceptualVolumeInstanceReferenceSequence &getEquivalentConceptualVolumeInstanceReferenceSequence() + { return EquivalentConceptualVolumeInstanceReferenceSequence; } + + /** get EquivalentConceptualVolumeInstanceReferenceSequence (3010,0009) + * @return const reference to sequence element + */ + const DRTEquivalentConceptualVolumeInstanceReferenceSequence &getEquivalentConceptualVolumeInstanceReferenceSequence() const + { return EquivalentConceptualVolumeInstanceReferenceSequence; } + + // --- set DICOM attribute values --- + + /** set ReferencedConceptualVolumeUID (3010,000b) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedConceptualVolumeUID(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// EquivalentConceptualVolumeInstanceReferenceSequence (3010,0009) vr=SQ, vm=1, type=1 + DRTEquivalentConceptualVolumeInstanceReferenceSequence EquivalentConceptualVolumeInstanceReferenceSequence; + /// ReferencedConceptualVolumeUID (3010,000b) vr=UI, vm=1, type=1 + DcmUniqueIdentifier ReferencedConceptualVolumeUID; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTEquivalentConceptualVolumesSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTEquivalentConceptualVolumesSequence(const DRTEquivalentConceptualVolumesSequence ©); + + /** destructor + */ + virtual ~DRTEquivalentConceptualVolumesSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTEquivalentConceptualVolumesSequence &operator=(const DRTEquivalentConceptualVolumesSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtes.h b/dcmrt/include/dcmtk/dcmrt/seq/drtes.h index c4581d33..71fdb906 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtes.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtes.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTExposureSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -19,10 +19,11 @@ #include "dcmtk/ofstd/oflist.h" // for standard list class #include "dcmtk/dcmrt/drttypes.h" // module-specific helper class -#include "dcmtk/dcmrt/seq/drtas5.h" // for ApplicatorSequence -#include "dcmtk/dcmrt/seq/drtblds5.h" // for BeamLimitingDeviceSequence -#include "dcmtk/dcmrt/seq/drtbl5.h" // for BlockSequence -#include "dcmtk/dcmrt/seq/drtgas.h" // for GeneralAccessorySequence +#include "dcmtk/dcmrt/seq/drtas2.h" // for ApplicatorSequence +#include "dcmtk/dcmrt/seq/drtblds2.h" // for BeamLimitingDeviceSequence +#include "dcmtk/dcmrt/seq/drtbl2.h" // for BlockSequence +#include "dcmtk/dcmrt/seq/drteblos.h" // for EnhancedRTBeamLimitingOpeningSequence +#include "dcmtk/dcmrt/seq/drtgas4.h" // for GeneralAccessorySequence #include "dcmtk/dcmrt/seq/drtpfms.h" // for PrimaryFluenceModeSequence @@ -357,16 +358,28 @@ class DCMTK_DCMRT_EXPORT DRTExposureSequence const DRTBlockSequenceInRTImageModule &getBlockSequence() const { return BlockSequence; } + /** get EnhancedRTBeamLimitingOpeningSequence (3008,00a2) + * @return reference to sequence element + */ + DRTEnhancedRTBeamLimitingOpeningSequence &getEnhancedRTBeamLimitingOpeningSequence() + { return EnhancedRTBeamLimitingOpeningSequence; } + + /** get EnhancedRTBeamLimitingOpeningSequence (3008,00a2) + * @return const reference to sequence element + */ + const DRTEnhancedRTBeamLimitingOpeningSequence &getEnhancedRTBeamLimitingOpeningSequence() const + { return EnhancedRTBeamLimitingOpeningSequence; } + /** get GeneralAccessorySequence (300a,0420) * @return reference to sequence element */ - DRTGeneralAccessorySequence &getGeneralAccessorySequence() + DRTGeneralAccessorySequenceInRTImageModule &getGeneralAccessorySequence() { return GeneralAccessorySequence; } /** get GeneralAccessorySequence (300a,0420) * @return const reference to sequence element */ - const DRTGeneralAccessorySequence &getGeneralAccessorySequence() const + const DRTGeneralAccessorySequenceInRTImageModule &getGeneralAccessorySequence() const { return GeneralAccessorySequence; } /** get PrimaryFluenceModeSequence (3002,0050) @@ -524,6 +537,8 @@ class DCMTK_DCMRT_EXPORT DRTExposureSequence DRTBlockSequenceInRTImageModule BlockSequence; /// DiaphragmPosition (3002,0034) vr=DS, vm=4, type=3 DcmDecimalString DiaphragmPosition; + /// EnhancedRTBeamLimitingOpeningSequence (3008,00a2) vr=SQ, vm=1, type=2C + DRTEnhancedRTBeamLimitingOpeningSequence EnhancedRTBeamLimitingOpeningSequence; /// ExposureTime (0018,1150) vr=IS, vm=1, type=2C DcmIntegerString ExposureTime; /// ExposureTimeInms (0018,9328) vr=FD, vm=1, type=3 @@ -533,7 +548,7 @@ class DCMTK_DCMRT_EXPORT DRTExposureSequence /// GantryPitchAngle (300a,014a) vr=FL, vm=1, type=3 DcmFloatingPointSingle GantryPitchAngle; /// GeneralAccessorySequence (300a,0420) vr=SQ, vm=1, type=3 - DRTGeneralAccessorySequence GeneralAccessorySequence; + DRTGeneralAccessorySequenceInRTImageModule GeneralAccessorySequence; /// KVP (0018,0060) vr=DS, vm=1, type=2C DcmDecimalString KVP; /// MetersetExposure (3002,0032) vr=DS, vm=1, type=2C @@ -669,13 +684,13 @@ class DCMTK_DCMRT_EXPORT DRTExposureSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtfbdds.h b/dcmrt/include/dcmtk/dcmrt/seq/drtfbdds.h new file mode 100644 index 00000000..70868755 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtfbdds.h @@ -0,0 +1,422 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTFixedRTBeamDelimiterDeviceSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTFBDDS_H +#define DRTFBDDS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for FixedRTBeamDelimiterDeviceSequence (300a,0646) + */ +class DCMTK_DCMRT_EXPORT DRTFixedRTBeamDelimiterDeviceSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get CenterOfCircularOutline (0018,1635) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCenterOfCircularOutline(Float64 &value, const unsigned long pos = 0) const; + + /** get DiameterOfCircularOutline (0018,1636) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getDiameterOfCircularOutline(Float64 &value, const unsigned long pos = 0) const; + + /** get NumberOfPolygonalVertices (0018,1637) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getNumberOfPolygonalVertices(Uint32 &value, const unsigned long pos = 0) const; + + /** get OutlineLeftVerticalEdge (0018,1631) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getOutlineLeftVerticalEdge(Float64 &value, const unsigned long pos = 0) const; + + /** get OutlineLowerHorizontalEdge (0018,1634) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getOutlineLowerHorizontalEdge(Float64 &value, const unsigned long pos = 0) const; + + /** get OutlineRightVerticalEdge (0018,1632) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getOutlineRightVerticalEdge(Float64 &value, const unsigned long pos = 0) const; + + /** get OutlineShapeType (0018,1630) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getOutlineShapeType(OFString &value, const signed long pos = 0) const; + + /** get OutlineUpperHorizontalEdge (0018,1633) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getOutlineUpperHorizontalEdge(Float64 &value, const unsigned long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set CenterOfCircularOutline (0018,1635) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=2 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCenterOfCircularOutline(const Float64 value, const unsigned long pos = 0); + + /** set DiameterOfCircularOutline (0018,1636) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setDiameterOfCircularOutline(const Float64 value, const unsigned long pos = 0); + + /** set NumberOfPolygonalVertices (0018,1637) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setNumberOfPolygonalVertices(const Uint32 value, const unsigned long pos = 0); + + /** set OutlineLeftVerticalEdge (0018,1631) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setOutlineLeftVerticalEdge(const Float64 value, const unsigned long pos = 0); + + /** set OutlineLowerHorizontalEdge (0018,1634) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setOutlineLowerHorizontalEdge(const Float64 value, const unsigned long pos = 0); + + /** set OutlineRightVerticalEdge (0018,1632) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setOutlineRightVerticalEdge(const Float64 value, const unsigned long pos = 0); + + /** set OutlineShapeType (0018,1630) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setOutlineShapeType(const OFString &value, const OFBool check = OFTrue); + + /** set OutlineUpperHorizontalEdge (0018,1633) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setOutlineUpperHorizontalEdge(const Float64 value, const unsigned long pos = 0); + + // --- all other attributes (without get/set methods) --- + + // - VerticesOfThePolygonalOutline (0018,1638) + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// CenterOfCircularOutline (0018,1635) vr=FD, vm=2, type=1C + DcmFloatingPointDouble CenterOfCircularOutline; + /// DiameterOfCircularOutline (0018,1636) vr=FD, vm=1, type=1C + DcmFloatingPointDouble DiameterOfCircularOutline; + /// NumberOfPolygonalVertices (0018,1637) vr=UL, vm=1, type=1C + DcmUnsignedLong NumberOfPolygonalVertices; + /// OutlineLeftVerticalEdge (0018,1631) vr=FD, vm=1, type=1C + DcmFloatingPointDouble OutlineLeftVerticalEdge; + /// OutlineLowerHorizontalEdge (0018,1634) vr=FD, vm=1, type=1C + DcmFloatingPointDouble OutlineLowerHorizontalEdge; + /// OutlineRightVerticalEdge (0018,1632) vr=FD, vm=1, type=1C + DcmFloatingPointDouble OutlineRightVerticalEdge; + /// OutlineShapeType (0018,1630) vr=CS, vm=1, type=1 + DcmCodeString OutlineShapeType; + /// OutlineUpperHorizontalEdge (0018,1633) vr=FD, vm=1, type=1C + DcmFloatingPointDouble OutlineUpperHorizontalEdge; + /// VerticesOfThePolygonalOutline (0018,1638) vr=OF, vm=1, type=1C + DcmOtherFloat VerticesOfThePolygonalOutline; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTFixedRTBeamDelimiterDeviceSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTFixedRTBeamDelimiterDeviceSequence(const DRTFixedRTBeamDelimiterDeviceSequence ©); + + /** destructor + */ + virtual ~DRTFixedRTBeamDelimiterDeviceSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTFixedRTBeamDelimiterDeviceSequence &operator=(const DRTFixedRTBeamDelimiterDeviceSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtfds.h b/dcmrt/include/dcmtk/dcmrt/seq/drtfds.h index ef7ad9e2..b7d04536 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtfds.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtfds.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTFixationDeviceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -319,13 +319,13 @@ class DCMTK_DCMRT_EXPORT DRTFixationDeviceSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtfes.h b/dcmrt/include/dcmtk/dcmrt/seq/drtfes.h index b2cd3a6c..58c0cf48 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtfes.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtfes.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTFrameExtractionSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -271,13 +271,13 @@ class DCMTK_DCMRT_EXPORT DRTFrameExtractionSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtfgs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtfgs.h index 55e4ca06..9aea842f 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtfgs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtfgs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTFractionGroupSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -19,9 +19,10 @@ #include "dcmtk/ofstd/oflist.h" // for standard list class #include "dcmtk/dcmrt/drttypes.h" // module-specific helper class -#include "dcmtk/dcmrt/seq/drtrbs8.h" // for ReferencedBeamSequence -#include "dcmtk/dcmrt/seq/drtrbas8.h" // for ReferencedBrachyApplicationSetupSequence -#include "dcmtk/dcmrt/seq/drtrdrs8.h" // for ReferencedDoseReferenceSequence +#include "dcmtk/dcmrt/seq/drtdfss.h" // for DefinitionSourceSequence +#include "dcmtk/dcmrt/seq/drtrbs3.h" // for ReferencedBeamSequence +#include "dcmtk/dcmrt/seq/drtrbas2.h" // for ReferencedBrachyApplicationSetupSequence +#include "dcmtk/dcmrt/seq/drtrdrs3.h" // for ReferencedDoseReferenceSequence #include "dcmtk/dcmrt/seq/drtrds.h" // for ReferencedDoseSequence @@ -202,6 +203,18 @@ class DCMTK_DCMRT_EXPORT DRTFractionGroupSequence // --- get DICOM sequence attributes --- + /** get DefinitionSourceSequence (0008,1156) + * @return reference to sequence element + */ + DRTDefinitionSourceSequence &getDefinitionSourceSequence() + { return DefinitionSourceSequence; } + + /** get DefinitionSourceSequence (0008,1156) + * @return const reference to sequence element + */ + const DRTDefinitionSourceSequence &getDefinitionSourceSequence() const + { return DefinitionSourceSequence; } + /** get ReferencedBeamSequence (300c,0004) * @return reference to sequence element */ @@ -322,6 +335,8 @@ class DCMTK_DCMRT_EXPORT DRTFractionGroupSequence /// BeamDoseMeaning (300a,008b) vr=CS, vm=1, type=3 DcmCodeString BeamDoseMeaning; + /// DefinitionSourceSequence (0008,1156) vr=SQ, vm=1, type=3 + DRTDefinitionSourceSequence DefinitionSourceSequence; /// FractionGroupDescription (300a,0072) vr=LO, vm=1, type=3 DcmLongString FractionGroupDescription; /// FractionGroupNumber (300a,0071) vr=IS, vm=1, type=1 @@ -455,13 +470,13 @@ class DCMTK_DCMRT_EXPORT DRTFractionGroupSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtfgss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtfgss.h index a847086a..c6310400 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtfgss.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtfgss.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTFractionGroupSummarySequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -309,13 +309,13 @@ class DCMTK_DCMRT_EXPORT DRTFractionGroupSummarySequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtfms.h b/dcmrt/include/dcmtk/dcmrt/seq/drtfms.h index 63fd1572..b94db5c8 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtfms.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtfms.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTFluenceMapSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -246,13 +246,13 @@ class DCMTK_DCMRT_EXPORT DRTFluenceMapSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtfsss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtfsss.h index 3716c6e8..7d966fd3 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtfsss.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtfsss.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTFractionStatusSummarySequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -278,13 +278,13 @@ class DCMTK_DCMRT_EXPORT DRTFractionStatusSummarySequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtgas.h b/dcmrt/include/dcmtk/dcmrt/seq/drtgas.h deleted file mode 100644 index 5a9ae8ae..00000000 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtgas.h +++ /dev/null @@ -1,391 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Header file for class DRTGeneralAccessorySequence - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#ifndef DRTGAS_H -#define DRTGAS_H - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/ofstd/oflist.h" // for standard list class -#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class - - -/** Interface class for GeneralAccessorySequence (300a,0420) - */ -class DCMTK_DCMRT_EXPORT DRTGeneralAccessorySequence - : protected DRTTypes -{ - - public: - - /** Item class - */ - class DCMTK_DCMRT_EXPORT Item - : protected DRTTypes - { - - public: - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultItem flag used to mark the empty default item - */ - Item(const OFBool emptyDefaultItem = OFFalse); - - /** copy constructor - * @param copy item object to be copied - */ - Item(const Item ©); - - /** destructor - */ - virtual ~Item(); - - /** assignment operator - * @param copy item object to be copied - * @return reference to this object - */ - Item &operator=(const Item ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if item is empty - * @return OFTrue if item is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if item is valid, i.e.\ not the empty default item - * @return OFTrue if item is valid, OFFalse otherwise - */ - OFBool isValid() const; - - // --- input/output methods --- - - /** read elements from sequence item - * @param item reference to DICOM sequence item from which the elements should be read - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &item); - - /** write elements to sequence item - * @param item reference to DICOM sequence item to which the elements should be written - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &item); - - // --- get DICOM attribute values --- - - /** get AccessoryCode (300a,00f9) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const; - - /** get GeneralAccessoryDescription (300a,0422) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getGeneralAccessoryDescription(OFString &value, const signed long pos = 0) const; - - /** get GeneralAccessoryID (300a,0421) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getGeneralAccessoryID(OFString &value, const signed long pos = 0) const; - - /** get GeneralAccessoryNumber (300a,0424) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getGeneralAccessoryNumber(OFString &value, const signed long pos = 0) const; - - /** get GeneralAccessoryNumber (300a,0424) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getGeneralAccessoryNumber(Sint32 &value, const unsigned long pos = 0) const; - - /** get GeneralAccessoryType (300a,0423) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getGeneralAccessoryType(OFString &value, const signed long pos = 0) const; - - /** get SourceToGeneralAccessoryDistance (300a,0425) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getSourceToGeneralAccessoryDistance(Float32 &value, const unsigned long pos = 0) const; - - // --- set DICOM attribute values --- - - /** set AccessoryCode (300a,00f9) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue); - - /** set GeneralAccessoryDescription (300a,0422) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (ST) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setGeneralAccessoryDescription(const OFString &value, const OFBool check = OFTrue); - - /** set GeneralAccessoryID (300a,0421) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setGeneralAccessoryID(const OFString &value, const OFBool check = OFTrue); - - /** set GeneralAccessoryNumber (300a,0424) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setGeneralAccessoryNumber(const OFString &value, const OFBool check = OFTrue); - - /** set GeneralAccessoryType (300a,0423) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setGeneralAccessoryType(const OFString &value, const OFBool check = OFTrue); - - /** set SourceToGeneralAccessoryDistance (300a,0425) - * @param value value to be set (should be valid for this VR) - * @param pos index of the value to be set (0..vm-1), vm=1 - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setSourceToGeneralAccessoryDistance(const Float32 value, const unsigned long pos = 0); - - private: - - /// internal flag used to mark the empty default item - /*const*/ OFBool EmptyDefaultItem; - - /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3 - DcmLongString AccessoryCode; - /// GeneralAccessoryDescription (300a,0422) vr=ST, vm=1, type=3 - DcmShortText GeneralAccessoryDescription; - /// GeneralAccessoryID (300a,0421) vr=SH, vm=1, type=1 - DcmShortString GeneralAccessoryID; - /// GeneralAccessoryNumber (300a,0424) vr=IS, vm=1, type=1 - DcmIntegerString GeneralAccessoryNumber; - /// GeneralAccessoryType (300a,0423) vr=CS, vm=1, type=3 - DcmCodeString GeneralAccessoryType; - /// SourceToGeneralAccessoryDistance (300a,0425) vr=FL, vm=1, type=3 - DcmFloatingPointSingle SourceToGeneralAccessoryDistance; - - }; - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultSequence internal flag used to mark the empty default sequence - */ - DRTGeneralAccessorySequence(const OFBool emptyDefaultSequence = OFFalse); - - /** copy constructor - * @param copy sequence object to be copied - */ - DRTGeneralAccessorySequence(const DRTGeneralAccessorySequence ©); - - /** destructor - */ - virtual ~DRTGeneralAccessorySequence(); - - /** assignment operator - * @param copy sequence object to be copied - * @return reference to this object - */ - DRTGeneralAccessorySequence &operator=(const DRTGeneralAccessorySequence ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if sequence is empty - * @return OFTrue if sequence is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if sequence is valid, i.e.\ not the empty default sequence - * @return OFTrue if sequence is valid, OFFalse otherwise - */ - OFBool isValid() const; - - /** get number of items in the sequence - * @return number of items - */ - size_t getNumberOfItems() const; - - /** goto first item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoFirstItem(); - - /** goto next item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoNextItem(); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num); - - /** get current item in the sequence - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getCurrentItem(Item *&item) const; - - /** get current item in the sequence - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getCurrentItem(); - - /** get current item in the sequence - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getCurrentItem() const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getItem(const size_t num, Item *&item); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getItem(const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getItem(const size_t num) const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &operator[](const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &operator[](const size_t num) const; - - /** add new item to the end of this sequence - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition addItem(Item *&item); - - /** insert new item into the sequence - * @param pos position where the new item is to be inserted (0..num) - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition insertItem(const size_t pos, Item *&item); - - /** remove particular item from the sequence - * @param pos position of the item to be removed (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition removeItem(const size_t pos); - - // --- input/output methods --- - - /** read sequence of items from dataset - * @param dataset reference to DICOM dataset from which the sequence should be read - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - /** write sequence of items to dataset - * @param dataset reference to DICOM dataset to which the sequence should be written - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - protected: - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListIterator(Item *) &iterator); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListConstIterator(Item *) &iterator) const; - - private: - - /// internal flag used to mark the empty default sequence - /*const*/ OFBool EmptyDefaultSequence; - - /// list of items in this sequence - OFList SequenceOfItems; - /// currently selected item - OFListIterator(Item *) CurrentItem; - /// empty default item - Item EmptyItem; - -}; - - -#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtgas1.h b/dcmrt/include/dcmtk/dcmrt/seq/drtgas1.h new file mode 100644 index 00000000..5172197f --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtgas1.h @@ -0,0 +1,391 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTGeneralAccessorySequenceInEquipmentSpecificationModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTGAS1_H +#define DRTGAS1_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for GeneralAccessorySequence (300a,0420) in EquipmentSpecificationModule + */ +class DCMTK_DCMRT_EXPORT DRTGeneralAccessorySequenceInEquipmentSpecificationModule + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get AccessoryCode (300a,00f9) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const; + + /** get GeneralAccessoryDescription (300a,0422) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getGeneralAccessoryDescription(OFString &value, const signed long pos = 0) const; + + /** get GeneralAccessoryID (300a,0421) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getGeneralAccessoryID(OFString &value, const signed long pos = 0) const; + + /** get GeneralAccessoryNumber (300a,0424) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getGeneralAccessoryNumber(OFString &value, const signed long pos = 0) const; + + /** get GeneralAccessoryNumber (300a,0424) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getGeneralAccessoryNumber(Sint32 &value, const unsigned long pos = 0) const; + + /** get GeneralAccessoryType (300a,0423) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getGeneralAccessoryType(OFString &value, const signed long pos = 0) const; + + /** get SourceToGeneralAccessoryDistance (300a,0425) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getSourceToGeneralAccessoryDistance(Float32 &value, const unsigned long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set AccessoryCode (300a,00f9) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue); + + /** set GeneralAccessoryDescription (300a,0422) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (ST) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setGeneralAccessoryDescription(const OFString &value, const OFBool check = OFTrue); + + /** set GeneralAccessoryID (300a,0421) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setGeneralAccessoryID(const OFString &value, const OFBool check = OFTrue); + + /** set GeneralAccessoryNumber (300a,0424) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setGeneralAccessoryNumber(const OFString &value, const OFBool check = OFTrue); + + /** set GeneralAccessoryType (300a,0423) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setGeneralAccessoryType(const OFString &value, const OFBool check = OFTrue); + + /** set SourceToGeneralAccessoryDistance (300a,0425) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setSourceToGeneralAccessoryDistance(const Float32 value, const unsigned long pos = 0); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3 + DcmLongString AccessoryCode; + /// GeneralAccessoryDescription (300a,0422) vr=ST, vm=1, type=3 + DcmShortText GeneralAccessoryDescription; + /// GeneralAccessoryID (300a,0421) vr=SH, vm=1, type=1 + DcmShortString GeneralAccessoryID; + /// GeneralAccessoryNumber (300a,0424) vr=IS, vm=1, type=1 + DcmIntegerString GeneralAccessoryNumber; + /// GeneralAccessoryType (300a,0423) vr=CS, vm=1, type=3 + DcmCodeString GeneralAccessoryType; + /// SourceToGeneralAccessoryDistance (300a,0425) vr=FL, vm=1, type=3 + DcmFloatingPointSingle SourceToGeneralAccessoryDistance; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTGeneralAccessorySequenceInEquipmentSpecificationModule(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTGeneralAccessorySequenceInEquipmentSpecificationModule(const DRTGeneralAccessorySequenceInEquipmentSpecificationModule ©); + + /** destructor + */ + virtual ~DRTGeneralAccessorySequenceInEquipmentSpecificationModule(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTGeneralAccessorySequenceInEquipmentSpecificationModule &operator=(const DRTGeneralAccessorySequenceInEquipmentSpecificationModule ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtgas2.h b/dcmrt/include/dcmtk/dcmrt/seq/drtgas2.h new file mode 100644 index 00000000..06044309 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtgas2.h @@ -0,0 +1,391 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTGeneralAccessorySequenceInRTBeamsModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTGAS2_H +#define DRTGAS2_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for GeneralAccessorySequence (300a,0420) in RTBeamsModule + */ +class DCMTK_DCMRT_EXPORT DRTGeneralAccessorySequenceInRTBeamsModule + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get AccessoryCode (300a,00f9) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const; + + /** get GeneralAccessoryDescription (300a,0422) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getGeneralAccessoryDescription(OFString &value, const signed long pos = 0) const; + + /** get GeneralAccessoryID (300a,0421) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getGeneralAccessoryID(OFString &value, const signed long pos = 0) const; + + /** get GeneralAccessoryNumber (300a,0424) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getGeneralAccessoryNumber(OFString &value, const signed long pos = 0) const; + + /** get GeneralAccessoryNumber (300a,0424) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getGeneralAccessoryNumber(Sint32 &value, const unsigned long pos = 0) const; + + /** get GeneralAccessoryType (300a,0423) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getGeneralAccessoryType(OFString &value, const signed long pos = 0) const; + + /** get SourceToGeneralAccessoryDistance (300a,0425) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getSourceToGeneralAccessoryDistance(Float32 &value, const unsigned long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set AccessoryCode (300a,00f9) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue); + + /** set GeneralAccessoryDescription (300a,0422) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (ST) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setGeneralAccessoryDescription(const OFString &value, const OFBool check = OFTrue); + + /** set GeneralAccessoryID (300a,0421) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setGeneralAccessoryID(const OFString &value, const OFBool check = OFTrue); + + /** set GeneralAccessoryNumber (300a,0424) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setGeneralAccessoryNumber(const OFString &value, const OFBool check = OFTrue); + + /** set GeneralAccessoryType (300a,0423) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setGeneralAccessoryType(const OFString &value, const OFBool check = OFTrue); + + /** set SourceToGeneralAccessoryDistance (300a,0425) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setSourceToGeneralAccessoryDistance(const Float32 value, const unsigned long pos = 0); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3 + DcmLongString AccessoryCode; + /// GeneralAccessoryDescription (300a,0422) vr=ST, vm=1, type=3 + DcmShortText GeneralAccessoryDescription; + /// GeneralAccessoryID (300a,0421) vr=SH, vm=1, type=1 + DcmShortString GeneralAccessoryID; + /// GeneralAccessoryNumber (300a,0424) vr=IS, vm=1, type=1 + DcmIntegerString GeneralAccessoryNumber; + /// GeneralAccessoryType (300a,0423) vr=CS, vm=1, type=3 + DcmCodeString GeneralAccessoryType; + /// SourceToGeneralAccessoryDistance (300a,0425) vr=FL, vm=1, type=3 + DcmFloatingPointSingle SourceToGeneralAccessoryDistance; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTGeneralAccessorySequenceInRTBeamsModule(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTGeneralAccessorySequenceInRTBeamsModule(const DRTGeneralAccessorySequenceInRTBeamsModule ©); + + /** destructor + */ + virtual ~DRTGeneralAccessorySequenceInRTBeamsModule(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTGeneralAccessorySequenceInRTBeamsModule &operator=(const DRTGeneralAccessorySequenceInRTBeamsModule ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtgas3.h b/dcmrt/include/dcmtk/dcmrt/seq/drtgas3.h new file mode 100644 index 00000000..d55603f4 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtgas3.h @@ -0,0 +1,391 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTGAS3_H +#define DRTGAS3_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for GeneralAccessorySequence (300a,0420) in RTBeamsSessionRecordModule + */ +class DCMTK_DCMRT_EXPORT DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get AccessoryCode (300a,00f9) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const; + + /** get GeneralAccessoryDescription (300a,0422) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getGeneralAccessoryDescription(OFString &value, const signed long pos = 0) const; + + /** get GeneralAccessoryID (300a,0421) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getGeneralAccessoryID(OFString &value, const signed long pos = 0) const; + + /** get GeneralAccessoryNumber (300a,0424) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getGeneralAccessoryNumber(OFString &value, const signed long pos = 0) const; + + /** get GeneralAccessoryNumber (300a,0424) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getGeneralAccessoryNumber(Sint32 &value, const unsigned long pos = 0) const; + + /** get GeneralAccessoryType (300a,0423) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getGeneralAccessoryType(OFString &value, const signed long pos = 0) const; + + /** get SourceToGeneralAccessoryDistance (300a,0425) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getSourceToGeneralAccessoryDistance(Float32 &value, const unsigned long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set AccessoryCode (300a,00f9) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue); + + /** set GeneralAccessoryDescription (300a,0422) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (ST) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setGeneralAccessoryDescription(const OFString &value, const OFBool check = OFTrue); + + /** set GeneralAccessoryID (300a,0421) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setGeneralAccessoryID(const OFString &value, const OFBool check = OFTrue); + + /** set GeneralAccessoryNumber (300a,0424) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setGeneralAccessoryNumber(const OFString &value, const OFBool check = OFTrue); + + /** set GeneralAccessoryType (300a,0423) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setGeneralAccessoryType(const OFString &value, const OFBool check = OFTrue); + + /** set SourceToGeneralAccessoryDistance (300a,0425) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setSourceToGeneralAccessoryDistance(const Float32 value, const unsigned long pos = 0); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3 + DcmLongString AccessoryCode; + /// GeneralAccessoryDescription (300a,0422) vr=ST, vm=1, type=3 + DcmShortText GeneralAccessoryDescription; + /// GeneralAccessoryID (300a,0421) vr=SH, vm=1, type=1 + DcmShortString GeneralAccessoryID; + /// GeneralAccessoryNumber (300a,0424) vr=IS, vm=1, type=1 + DcmIntegerString GeneralAccessoryNumber; + /// GeneralAccessoryType (300a,0423) vr=CS, vm=1, type=3 + DcmCodeString GeneralAccessoryType; + /// SourceToGeneralAccessoryDistance (300a,0425) vr=FL, vm=1, type=3 + DcmFloatingPointSingle SourceToGeneralAccessoryDistance; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule(const DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule ©); + + /** destructor + */ + virtual ~DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule &operator=(const DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtgas4.h b/dcmrt/include/dcmtk/dcmrt/seq/drtgas4.h new file mode 100644 index 00000000..7cfe37e8 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtgas4.h @@ -0,0 +1,391 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTGeneralAccessorySequenceInRTImageModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTGAS4_H +#define DRTGAS4_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for GeneralAccessorySequence (300a,0420) in RTImageModule + */ +class DCMTK_DCMRT_EXPORT DRTGeneralAccessorySequenceInRTImageModule + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get AccessoryCode (300a,00f9) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const; + + /** get GeneralAccessoryDescription (300a,0422) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getGeneralAccessoryDescription(OFString &value, const signed long pos = 0) const; + + /** get GeneralAccessoryID (300a,0421) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getGeneralAccessoryID(OFString &value, const signed long pos = 0) const; + + /** get GeneralAccessoryNumber (300a,0424) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getGeneralAccessoryNumber(OFString &value, const signed long pos = 0) const; + + /** get GeneralAccessoryNumber (300a,0424) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getGeneralAccessoryNumber(Sint32 &value, const unsigned long pos = 0) const; + + /** get GeneralAccessoryType (300a,0423) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getGeneralAccessoryType(OFString &value, const signed long pos = 0) const; + + /** get SourceToGeneralAccessoryDistance (300a,0425) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getSourceToGeneralAccessoryDistance(Float32 &value, const unsigned long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set AccessoryCode (300a,00f9) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue); + + /** set GeneralAccessoryDescription (300a,0422) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (ST) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setGeneralAccessoryDescription(const OFString &value, const OFBool check = OFTrue); + + /** set GeneralAccessoryID (300a,0421) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setGeneralAccessoryID(const OFString &value, const OFBool check = OFTrue); + + /** set GeneralAccessoryNumber (300a,0424) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setGeneralAccessoryNumber(const OFString &value, const OFBool check = OFTrue); + + /** set GeneralAccessoryType (300a,0423) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setGeneralAccessoryType(const OFString &value, const OFBool check = OFTrue); + + /** set SourceToGeneralAccessoryDistance (300a,0425) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setSourceToGeneralAccessoryDistance(const Float32 value, const unsigned long pos = 0); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3 + DcmLongString AccessoryCode; + /// GeneralAccessoryDescription (300a,0422) vr=ST, vm=1, type=3 + DcmShortText GeneralAccessoryDescription; + /// GeneralAccessoryID (300a,0421) vr=SH, vm=1, type=1 + DcmShortString GeneralAccessoryID; + /// GeneralAccessoryNumber (300a,0424) vr=IS, vm=1, type=1 + DcmIntegerString GeneralAccessoryNumber; + /// GeneralAccessoryType (300a,0423) vr=CS, vm=1, type=3 + DcmCodeString GeneralAccessoryType; + /// SourceToGeneralAccessoryDistance (300a,0425) vr=FL, vm=1, type=3 + DcmFloatingPointSingle SourceToGeneralAccessoryDistance; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTGeneralAccessorySequenceInRTImageModule(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTGeneralAccessorySequenceInRTImageModule(const DRTGeneralAccessorySequenceInRTImageModule ©); + + /** destructor + */ + virtual ~DRTGeneralAccessorySequenceInRTImageModule(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTGeneralAccessorySequenceInRTImageModule &operator=(const DRTGeneralAccessorySequenceInRTImageModule ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtgas5.h b/dcmrt/include/dcmtk/dcmrt/seq/drtgas5.h new file mode 100644 index 00000000..3c30d0e7 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtgas5.h @@ -0,0 +1,398 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTGeneralAccessorySequenceInRTIonBeamsModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTGAS5_H +#define DRTGAS5_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for GeneralAccessorySequence (300a,0420) in RTIonBeamsModule + */ +class DCMTK_DCMRT_EXPORT DRTGeneralAccessorySequenceInRTIonBeamsModule + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get AccessoryCode (300a,00f9) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const; + + /** get GeneralAccessoryDescription (300a,0422) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getGeneralAccessoryDescription(OFString &value, const signed long pos = 0) const; + + /** get GeneralAccessoryID (300a,0421) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getGeneralAccessoryID(OFString &value, const signed long pos = 0) const; + + /** get GeneralAccessoryNumber (300a,0424) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getGeneralAccessoryNumber(OFString &value, const signed long pos = 0) const; + + /** get GeneralAccessoryNumber (300a,0424) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getGeneralAccessoryNumber(Sint32 &value, const unsigned long pos = 0) const; + + /** get GeneralAccessoryType (300a,0423) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getGeneralAccessoryType(OFString &value, const signed long pos = 0) const; + + /** get IsocenterToGeneralAccessoryDistance (300a,0426) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getIsocenterToGeneralAccessoryDistance(OFString &value, const signed long pos = 0) const; + + /** get IsocenterToGeneralAccessoryDistance (300a,0426) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getIsocenterToGeneralAccessoryDistance(Float64 &value, const unsigned long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set AccessoryCode (300a,00f9) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue); + + /** set GeneralAccessoryDescription (300a,0422) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (ST) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setGeneralAccessoryDescription(const OFString &value, const OFBool check = OFTrue); + + /** set GeneralAccessoryID (300a,0421) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setGeneralAccessoryID(const OFString &value, const OFBool check = OFTrue); + + /** set GeneralAccessoryNumber (300a,0424) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setGeneralAccessoryNumber(const OFString &value, const OFBool check = OFTrue); + + /** set GeneralAccessoryType (300a,0423) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setGeneralAccessoryType(const OFString &value, const OFBool check = OFTrue); + + /** set IsocenterToGeneralAccessoryDistance (300a,0426) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setIsocenterToGeneralAccessoryDistance(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3 + DcmLongString AccessoryCode; + /// GeneralAccessoryDescription (300a,0422) vr=ST, vm=1, type=3 + DcmShortText GeneralAccessoryDescription; + /// GeneralAccessoryID (300a,0421) vr=SH, vm=1, type=1 + DcmShortString GeneralAccessoryID; + /// GeneralAccessoryNumber (300a,0424) vr=IS, vm=1, type=1 + DcmIntegerString GeneralAccessoryNumber; + /// GeneralAccessoryType (300a,0423) vr=CS, vm=1, type=3 + DcmCodeString GeneralAccessoryType; + /// IsocenterToGeneralAccessoryDistance (300a,0426) vr=DS, vm=1, type=3 + DcmDecimalString IsocenterToGeneralAccessoryDistance; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTGeneralAccessorySequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTGeneralAccessorySequenceInRTIonBeamsModule(const DRTGeneralAccessorySequenceInRTIonBeamsModule ©); + + /** destructor + */ + virtual ~DRTGeneralAccessorySequenceInRTIonBeamsModule(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTGeneralAccessorySequenceInRTIonBeamsModule &operator=(const DRTGeneralAccessorySequenceInRTIonBeamsModule ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtgas6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtgas6.h new file mode 100644 index 00000000..87b9fb2a --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtgas6.h @@ -0,0 +1,375 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTGAS6_H +#define DRTGAS6_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for GeneralAccessorySequence (300a,0420) in RTIonBeamsSessionRecordModule + */ +class DCMTK_DCMRT_EXPORT DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get AccessoryCode (300a,00f9) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const; + + /** get GeneralAccessoryDescription (300a,0422) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getGeneralAccessoryDescription(OFString &value, const signed long pos = 0) const; + + /** get GeneralAccessoryID (300a,0421) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getGeneralAccessoryID(OFString &value, const signed long pos = 0) const; + + /** get GeneralAccessoryNumber (300a,0424) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getGeneralAccessoryNumber(OFString &value, const signed long pos = 0) const; + + /** get GeneralAccessoryNumber (300a,0424) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getGeneralAccessoryNumber(Sint32 &value, const unsigned long pos = 0) const; + + /** get GeneralAccessoryType (300a,0423) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getGeneralAccessoryType(OFString &value, const signed long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set AccessoryCode (300a,00f9) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue); + + /** set GeneralAccessoryDescription (300a,0422) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (ST) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setGeneralAccessoryDescription(const OFString &value, const OFBool check = OFTrue); + + /** set GeneralAccessoryID (300a,0421) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setGeneralAccessoryID(const OFString &value, const OFBool check = OFTrue); + + /** set GeneralAccessoryNumber (300a,0424) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setGeneralAccessoryNumber(const OFString &value, const OFBool check = OFTrue); + + /** set GeneralAccessoryType (300a,0423) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setGeneralAccessoryType(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3 + DcmLongString AccessoryCode; + /// GeneralAccessoryDescription (300a,0422) vr=ST, vm=1, type=3 + DcmShortText GeneralAccessoryDescription; + /// GeneralAccessoryID (300a,0421) vr=SH, vm=1, type=1 + DcmShortString GeneralAccessoryID; + /// GeneralAccessoryNumber (300a,0424) vr=IS, vm=1, type=1 + DcmIntegerString GeneralAccessoryNumber; + /// GeneralAccessoryType (300a,0423) vr=CS, vm=1, type=3 + DcmCodeString GeneralAccessoryType; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule(const DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule ©); + + /** destructor + */ + virtual ~DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule &operator=(const DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtgmcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtgmcs.h index ede8d466..db424b5b 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtgmcs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtgmcs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTGeneticModificationsCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTGeneticModificationsCodeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtgms.h b/dcmrt/include/dcmtk/dcmrt/seq/drtgms.h index a0508e63..be2e7d27 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtgms.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtgms.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTGeneticModificationsSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -256,13 +256,13 @@ class DCMTK_DCMRT_EXPORT DRTGeneticModificationsSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtgpis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtgpis.h index a2b6264e..747f3f24 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtgpis.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtgpis.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTGroupOfPatientsIdentificationSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -288,13 +288,13 @@ class DCMTK_DCMRT_EXPORT DRTGroupOfPatientsIdentificationSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drthsdrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drthsdrs.h index d068fcff..1abb24a5 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drthsdrs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drthsdrs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTHL7StructuredDocumentReferenceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -271,13 +271,13 @@ class DCMTK_DCMRT_EXPORT DRTHL7StructuredDocumentReferenceSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtiais.h b/dcmrt/include/dcmtk/dcmrt/seq/drtiais.h index 636282fd..20feaca9 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtiais.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtiais.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTIssuerOfAdmissionIDSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -255,13 +255,13 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfAdmissionIDSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtians.h b/dcmrt/include/dcmtk/dcmrt/seq/drtians.h index 1cc54714..dc5313fd 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtians.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtians.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTIssuerOfAccessionNumberSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -255,13 +255,13 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfAccessionNumberSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtiblds.h b/dcmrt/include/dcmtk/dcmrt/seq/drtiblds.h index 163b2764..ffa2be80 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtiblds.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtiblds.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTIonBeamLimitingDeviceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -291,13 +291,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamLimitingDeviceSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtibls.h b/dcmrt/include/dcmtk/dcmrt/seq/drtibls.h index 29a1a780..05d4804b 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtibls.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtibls.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTIonBlockSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -473,13 +473,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBlockSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtibs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtibs.h index 8983ae0a..c5fbbff5 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtibs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtibs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTIonBeamSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -19,9 +19,10 @@ #include "dcmtk/ofstd/oflist.h" // for standard list class #include "dcmtk/dcmrt/drttypes.h" // module-specific helper class -#include "dcmtk/dcmrt/seq/drtas6.h" // for ApplicatorSequence +#include "dcmtk/dcmrt/seq/drtas3.h" // for ApplicatorSequence #include "dcmtk/dcmrt/seq/drtddps.h" // for DepthDoseParametersSequence -#include "dcmtk/dcmrt/seq/drtgas.h" // for GeneralAccessorySequence +#include "dcmtk/dcmrt/seq/drtgas5.h" // for GeneralAccessorySequence +#include "dcmtk/dcmrt/seq/drtidcs.h" // for InstitutionalDepartmentTypeCodeSequence #include "dcmtk/dcmrt/seq/drtiblds.h" // for IonBeamLimitingDeviceSequence #include "dcmtk/dcmrt/seq/drtibls.h" // for IonBlockSequence #include "dcmtk/dcmrt/seq/drticps.h" // for IonControlPointSequence @@ -30,9 +31,9 @@ #include "dcmtk/dcmrt/seq/drtlsds.h" // for LateralSpreadingDeviceSequence #include "dcmtk/dcmrt/seq/drtrms.h" // for RangeModulatorSequence #include "dcmtk/dcmrt/seq/drtrshs.h" // for RangeShifterSequence -#include "dcmtk/dcmrt/seq/drtrbos6.h" // for ReferencedBolusSequence +#include "dcmtk/dcmrt/seq/drtrbos2.h" // for ReferencedBolusSequence #include "dcmtk/dcmrt/seq/drtrds.h" // for ReferencedDoseSequence -#include "dcmtk/dcmrt/seq/drtrris6.h" // for ReferencedReferenceImageSequence +#include "dcmtk/dcmrt/seq/drtrris2.h" // for ReferencedReferenceImageSequence #include "dcmtk/dcmrt/seq/drtsns.h" // for SnoutSequence @@ -148,6 +149,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamSequence */ OFCondition getDeviceSerialNumber(OFString &value, const signed long pos = 0) const; + /** get EntityLongLabel (3010,0038) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getEntityLongLabel(OFString &value, const signed long pos = 0) const; + /** get FinalCumulativeMetersetWeight (300a,010e) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -513,15 +521,27 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamSequence /** get GeneralAccessorySequence (300a,0420) * @return reference to sequence element */ - DRTGeneralAccessorySequence &getGeneralAccessorySequence() + DRTGeneralAccessorySequenceInRTIonBeamsModule &getGeneralAccessorySequence() { return GeneralAccessorySequence; } /** get GeneralAccessorySequence (300a,0420) * @return const reference to sequence element */ - const DRTGeneralAccessorySequence &getGeneralAccessorySequence() const + const DRTGeneralAccessorySequenceInRTIonBeamsModule &getGeneralAccessorySequence() const { return GeneralAccessorySequence; } + /** get InstitutionalDepartmentTypeCodeSequence (0008,1041) + * @return reference to sequence element + */ + DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() + { return InstitutionalDepartmentTypeCodeSequence; } + + /** get InstitutionalDepartmentTypeCodeSequence (0008,1041) + * @return const reference to sequence element + */ + const DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() const + { return InstitutionalDepartmentTypeCodeSequence; } + /** get IonBeamLimitingDeviceSequence (300a,03a4) * @return reference to sequence element */ @@ -703,6 +723,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamSequence */ OFCondition setDeviceSerialNumber(const OFString &value, const OFBool check = OFTrue); + /** set EntityLongLabel (3010,0038) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setEntityLongLabel(const OFString &value, const OFBool check = OFTrue); + /** set FinalCumulativeMetersetWeight (300a,010e) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled @@ -967,6 +994,8 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamSequence DRTDepthDoseParametersSequence DepthDoseParametersSequence; /// DeviceSerialNumber (0018,1000) vr=LO, vm=1, type=3 DcmLongString DeviceSerialNumber; + /// EntityLongLabel (3010,0038) vr=LO, vm=1, type=3 + DcmLongString EntityLongLabel; /// FinalCumulativeMetersetWeight (300a,010e) vr=DS, vm=1, type=1C DcmDecimalString FinalCumulativeMetersetWeight; /// FixationEye (300a,0150) vr=CS, vm=1, type=3 @@ -976,13 +1005,15 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamSequence /// FixationLightPolarAngle (300a,0358) vr=FL, vm=1, type=3 DcmFloatingPointSingle FixationLightPolarAngle; /// GeneralAccessorySequence (300a,0420) vr=SQ, vm=1, type=3 - DRTGeneralAccessorySequence GeneralAccessorySequence; + DRTGeneralAccessorySequenceInRTIonBeamsModule GeneralAccessorySequence; /// InstitutionAddress (0008,0081) vr=ST, vm=1, type=3 DcmShortText InstitutionAddress; /// InstitutionName (0008,0080) vr=LO, vm=1, type=3 DcmLongString InstitutionName; /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3 DcmLongString InstitutionalDepartmentName; + /// InstitutionalDepartmentTypeCodeSequence (0008,1041) vr=SQ, vm=1, type=3 + DRTInstitutionalDepartmentTypeCodeSequence InstitutionalDepartmentTypeCodeSequence; /// IonBeamLimitingDeviceSequence (300a,03a4) vr=SQ, vm=1, type=3 DRTIonBeamLimitingDeviceSequence IonBeamLimitingDeviceSequence; /// IonBlockSequence (300a,03a6) vr=SQ, vm=1, type=1C @@ -1172,13 +1203,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drticpds.h b/dcmrt/include/dcmtk/dcmrt/seq/drticpds.h index b85e25f7..a1d57a81 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drticpds.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drticpds.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTIonControlPointDeliverySequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -22,10 +22,10 @@ #include "dcmtk/dcmrt/seq/drtbldps.h" // for BeamLimitingDevicePositionSequence #include "dcmtk/dcmrt/seq/drtcpas.h" // for CorrectedParameterSequence #include "dcmtk/dcmrt/seq/drtiwps.h" // for IonWedgePositionSequence -#include "dcmtk/dcmrt/seq/drtlsds7.h" // for LateralSpreadingDeviceSettingsSequence +#include "dcmtk/dcmrt/seq/drtlsds2.h" // for LateralSpreadingDeviceSettingsSequence #include "dcmtk/dcmrt/seq/drtos.h" // for OverrideSequence -#include "dcmtk/dcmrt/seq/drtrmss7.h" // for RangeModulatorSettingsSequence -#include "dcmtk/dcmrt/seq/drtrshs7.h" // for RangeShifterSettingsSequence +#include "dcmtk/dcmrt/seq/drtrmss2.h" // for RangeModulatorSettingsSequence +#include "dcmtk/dcmrt/seq/drtrshs2.h" // for RangeShifterSettingsSequence /** Interface class for IonControlPointDeliverySequence (3008,0041) in RTIonBeamsSessionRecordModule @@ -329,6 +329,13 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointDeliverySequence */ OFCondition getScanSpotReordered(OFString &value, const signed long pos = 0) const; + /** get ScanSpotSizesDelivered (300a,0399) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getScanSpotSizesDelivered(Float32 &value, const unsigned long pos = 0) const; + /** get ScanSpotTimeOffset (300a,038f) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1) @@ -697,6 +704,13 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointDeliverySequence */ OFCondition setScanSpotReordered(const OFString &value, const OFBool check = OFTrue); + /** set ScanSpotSizesDelivered (300a,0399) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=2-2n + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setScanSpotSizesDelivered(const Float32 value, const unsigned long pos = 0); + /** set ScanSpotTimeOffset (300a,038f) * @param value value to be set (should be valid for this VR) * @param pos index of the value to be set (0..vm-1), vm=1-n @@ -858,6 +872,8 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointDeliverySequence DcmIntegerString ScanSpotPrescribedIndices; /// ScanSpotReordered (300a,0393) vr=CS, vm=1, type=3 DcmCodeString ScanSpotReordered; + /// ScanSpotSizesDelivered (300a,0399) vr=FL, vm=2-2n, type=3 + DcmFloatingPointSingle ScanSpotSizesDelivered; /// ScanSpotTimeOffset (300a,038f) vr=FL, vm=1-n, type=3 DcmFloatingPointSingle ScanSpotTimeOffset; /// ScanSpotTuneID (300a,0390) vr=SH, vm=1, type=1C @@ -995,13 +1011,13 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointDeliverySequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drticps.h b/dcmrt/include/dcmtk/dcmrt/seq/drticps.h index 40261109..f5347773 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drticps.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drticps.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTIonControlPointSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -21,10 +21,10 @@ #include "dcmtk/dcmrt/drttypes.h" // module-specific helper class #include "dcmtk/dcmrt/seq/drtbldps.h" // for BeamLimitingDevicePositionSequence #include "dcmtk/dcmrt/seq/drtiwps.h" // for IonWedgePositionSequence -#include "dcmtk/dcmrt/seq/drtlsds6.h" // for LateralSpreadingDeviceSettingsSequence -#include "dcmtk/dcmrt/seq/drtrmss6.h" // for RangeModulatorSettingsSequence -#include "dcmtk/dcmrt/seq/drtrshs6.h" // for RangeShifterSettingsSequence -#include "dcmtk/dcmrt/seq/drtrdrs6.h" // for ReferencedDoseReferenceSequence +#include "dcmtk/dcmrt/seq/drtlsds1.h" // for LateralSpreadingDeviceSettingsSequence +#include "dcmtk/dcmrt/seq/drtrmss1.h" // for RangeModulatorSettingsSequence +#include "dcmtk/dcmrt/seq/drtrshs1.h" // for RangeShifterSettingsSequence +#include "dcmtk/dcmrt/seq/drtrdrs2.h" // for ReferencedDoseReferenceSequence /** Interface class for IonControlPointSequence (300a,03a8) in RTIonBeamsModule @@ -944,13 +944,13 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtics.h b/dcmrt/include/dcmtk/dcmrt/seq/drtics.h index 538cbbb9..acf8eea0 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtics.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtics.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTInstitutionCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTInstitutionCodeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtidcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtidcs.h new file mode 100644 index 00000000..71145d01 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtidcs.h @@ -0,0 +1,545 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTInstitutionalDepartmentTypeCodeSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTIDCS_H +#define DRTIDCS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtecs.h" // for EquivalentCodeSequence + + +/** Interface class for InstitutionalDepartmentTypeCodeSequence (0008,1041) + */ +class DCMTK_DCMRT_EXPORT DRTInstitutionalDepartmentTypeCodeSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get CodeMeaning (0008,0104) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodeMeaning(OFString &value, const signed long pos = 0) const; + + /** get CodeValue (0008,0100) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodeValue(OFString &value, const signed long pos = 0) const; + + /** get CodingSchemeDesignator (0008,0102) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodingSchemeDesignator(OFString &value, const signed long pos = 0) const; + + /** get CodingSchemeVersion (0008,0103) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupExtensionCreatorUID (0008,010d) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupExtensionCreatorUID(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupExtensionFlag (0008,010b) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupExtensionFlag(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupLocalVersion (0008,0107) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupLocalVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupVersion (0008,0106) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextIdentifier (0008,010f) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextIdentifier(OFString &value, const signed long pos = 0) const; + + /** get ContextUID (0008,0117) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextUID(OFString &value, const signed long pos = 0) const; + + /** get LongCodeValue (0008,0119) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const; + + /** get MappingResource (0008,0105) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResource(OFString &value, const signed long pos = 0) const; + + /** get MappingResourceName (0008,0122) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const; + + /** get MappingResourceUID (0008,0118) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const; + + /** get URNCodeValue (0008,0120) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const; + + // --- get DICOM sequence attributes --- + + /** get EquivalentCodeSequence (0008,0121) + * @return reference to sequence element + */ + DRTEquivalentCodeSequence &getEquivalentCodeSequence() + { return EquivalentCodeSequence; } + + /** get EquivalentCodeSequence (0008,0121) + * @return const reference to sequence element + */ + const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const + { return EquivalentCodeSequence; } + + // --- set DICOM attribute values --- + + /** set CodeMeaning (0008,0104) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodeMeaning(const OFString &value, const OFBool check = OFTrue); + + /** set CodeValue (0008,0100) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodeValue(const OFString &value, const OFBool check = OFTrue); + + /** set CodingSchemeDesignator (0008,0102) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodingSchemeDesignator(const OFString &value, const OFBool check = OFTrue); + + /** set CodingSchemeVersion (0008,0103) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupExtensionCreatorUID (0008,010d) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupExtensionFlag (0008,010b) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupExtensionFlag(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupLocalVersion (0008,0107) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupLocalVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupVersion (0008,0106) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextIdentifier (0008,010f) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextIdentifier(const OFString &value, const OFBool check = OFTrue); + + /** set ContextUID (0008,0117) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue); + + /** set LongCodeValue (0008,0119) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UC) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResource (0008,0105) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResourceName (0008,0122) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResourceUID (0008,0118) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue); + + /** set URNCodeValue (0008,0120) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UR) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1 + DcmLongString CodeMeaning; + /// CodeValue (0008,0100) vr=SH, vm=1, type=1C + DcmShortString CodeValue; + /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C + DcmShortString CodingSchemeDesignator; + /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C + DcmShortString CodingSchemeVersion; + /// ContextGroupExtensionCreatorUID (0008,010d) vr=UI, vm=1, type=1C + DcmUniqueIdentifier ContextGroupExtensionCreatorUID; + /// ContextGroupExtensionFlag (0008,010b) vr=CS, vm=1, type=3 + DcmCodeString ContextGroupExtensionFlag; + /// ContextGroupLocalVersion (0008,0107) vr=DT, vm=1, type=1C + DcmDateTime ContextGroupLocalVersion; + /// ContextGroupVersion (0008,0106) vr=DT, vm=1, type=1C + DcmDateTime ContextGroupVersion; + /// ContextIdentifier (0008,010f) vr=CS, vm=1, type=3 + DcmCodeString ContextIdentifier; + /// ContextUID (0008,0117) vr=UI, vm=1, type=3 + DcmUniqueIdentifier ContextUID; + /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3 + DRTEquivalentCodeSequence EquivalentCodeSequence; + /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C + DcmUnlimitedCharacters LongCodeValue; + /// MappingResource (0008,0105) vr=CS, vm=1, type=1C + DcmCodeString MappingResource; + /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3 + DcmLongString MappingResourceName; + /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3 + DcmUniqueIdentifier MappingResourceUID; + /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C + DcmUniversalResourceIdentifierOrLocator URNCodeValue; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTInstitutionalDepartmentTypeCodeSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTInstitutionalDepartmentTypeCodeSequence(const DRTInstitutionalDepartmentTypeCodeSequence ©); + + /** destructor + */ + virtual ~DRTInstitutionalDepartmentTypeCodeSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTInstitutionalDepartmentTypeCodeSequence &operator=(const DRTInstitutionalDepartmentTypeCodeSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtiis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtiis.h index a7cbf87d..6cb42e36 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtiis.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtiis.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTIconImageSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -550,13 +550,13 @@ class DCMTK_DCMRT_EXPORT DRTIconImageSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtipiqs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtipiqs.h index 91747392..27773970 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtipiqs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtipiqs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTIssuerOfPatientIDQualifiersSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -302,13 +302,13 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfPatientIDQualifiersSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtircs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtircs.h index b335c12e..1f8372da 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtircs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtircs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTIonRangeCompensatorSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -539,13 +539,13 @@ class DCMTK_DCMRT_EXPORT DRTIonRangeCompensatorSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtiseis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtiseis.h index 7da46477..b262c5c0 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtiseis.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtiseis.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTIssuerOfServiceEpisodeIDSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -255,13 +255,13 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfServiceEpisodeIDSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtitts.h b/dcmrt/include/dcmtk/dcmrt/seq/drtitts.h index 52d4bbe2..37afe203 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtitts.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtitts.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTIonToleranceTableSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -541,13 +541,13 @@ class DCMTK_DCMRT_EXPORT DRTIonToleranceTableSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtiwps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtiwps.h index 5e67359e..80c1623b 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtiwps.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtiwps.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTIonWedgePositionSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -262,13 +262,13 @@ class DCMTK_DCMRT_EXPORT DRTIonWedgePositionSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtiws.h b/dcmrt/include/dcmtk/dcmrt/seq/drtiws.h index 9628e838..a425ea70 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtiws.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtiws.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTIonWedgeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -340,13 +340,13 @@ class DCMTK_DCMRT_EXPORT DRTIonWedgeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtlsds.h b/dcmrt/include/dcmtk/dcmrt/seq/drtlsds.h index ee7e7f00..fb86cc7f 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtlsds.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtlsds.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTLateralSpreadingDeviceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -294,13 +294,13 @@ class DCMTK_DCMRT_EXPORT DRTLateralSpreadingDeviceSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtlsds1.h b/dcmrt/include/dcmtk/dcmrt/seq/drtlsds1.h new file mode 100644 index 00000000..e69a910c --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtlsds1.h @@ -0,0 +1,359 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTLSDS1_H +#define DRTLSDS1_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for LateralSpreadingDeviceSettingsSequence (300a,0370) in RTIonBeamsModule + */ +class DCMTK_DCMRT_EXPORT DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get IsocenterToLateralSpreadingDeviceDistance (300a,0374) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getIsocenterToLateralSpreadingDeviceDistance(Float32 &value, const unsigned long pos = 0) const; + + /** get LateralSpreadingDeviceSetting (300a,0372) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getLateralSpreadingDeviceSetting(OFString &value, const signed long pos = 0) const; + + /** get LateralSpreadingDeviceWaterEquivalentThickness (300a,033c) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getLateralSpreadingDeviceWaterEquivalentThickness(Float32 &value, const unsigned long pos = 0) const; + + /** get ReferencedLateralSpreadingDeviceNumber (300c,0102) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedLateralSpreadingDeviceNumber(OFString &value, const signed long pos = 0) const; + + /** get ReferencedLateralSpreadingDeviceNumber (300c,0102) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedLateralSpreadingDeviceNumber(Sint32 &value, const unsigned long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set IsocenterToLateralSpreadingDeviceDistance (300a,0374) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setIsocenterToLateralSpreadingDeviceDistance(const Float32 value, const unsigned long pos = 0); + + /** set LateralSpreadingDeviceSetting (300a,0372) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setLateralSpreadingDeviceSetting(const OFString &value, const OFBool check = OFTrue); + + /** set LateralSpreadingDeviceWaterEquivalentThickness (300a,033c) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setLateralSpreadingDeviceWaterEquivalentThickness(const Float32 value, const unsigned long pos = 0); + + /** set ReferencedLateralSpreadingDeviceNumber (300c,0102) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedLateralSpreadingDeviceNumber(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// IsocenterToLateralSpreadingDeviceDistance (300a,0374) vr=FL, vm=1, type=3 + DcmFloatingPointSingle IsocenterToLateralSpreadingDeviceDistance; + /// LateralSpreadingDeviceSetting (300a,0372) vr=LO, vm=1, type=1 + DcmLongString LateralSpreadingDeviceSetting; + /// LateralSpreadingDeviceWaterEquivalentThickness (300a,033c) vr=FL, vm=1, type=3 + DcmFloatingPointSingle LateralSpreadingDeviceWaterEquivalentThickness; + /// ReferencedLateralSpreadingDeviceNumber (300c,0102) vr=IS, vm=1, type=1 + DcmIntegerString ReferencedLateralSpreadingDeviceNumber; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule(const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule ©); + + /** destructor + */ + virtual ~DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule &operator=(const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtlsds2.h b/dcmrt/include/dcmtk/dcmrt/seq/drtlsds2.h new file mode 100644 index 00000000..5e09d226 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtlsds2.h @@ -0,0 +1,327 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTLSDS2_H +#define DRTLSDS2_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for LateralSpreadingDeviceSettingsSequence (300a,0370) in RTIonBeamsSessionRecordModule + */ +class DCMTK_DCMRT_EXPORT DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get LateralSpreadingDeviceSetting (300a,0372) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getLateralSpreadingDeviceSetting(OFString &value, const signed long pos = 0) const; + + /** get ReferencedLateralSpreadingDeviceNumber (300c,0102) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedLateralSpreadingDeviceNumber(OFString &value, const signed long pos = 0) const; + + /** get ReferencedLateralSpreadingDeviceNumber (300c,0102) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedLateralSpreadingDeviceNumber(Sint32 &value, const unsigned long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set LateralSpreadingDeviceSetting (300a,0372) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setLateralSpreadingDeviceSetting(const OFString &value, const OFBool check = OFTrue); + + /** set ReferencedLateralSpreadingDeviceNumber (300c,0102) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedLateralSpreadingDeviceNumber(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// LateralSpreadingDeviceSetting (300a,0372) vr=LO, vm=1, type=1 + DcmLongString LateralSpreadingDeviceSetting; + /// ReferencedLateralSpreadingDeviceNumber (300c,0102) vr=IS, vm=1, type=1 + DcmIntegerString ReferencedLateralSpreadingDeviceNumber; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule(const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule ©); + + /** destructor + */ + virtual ~DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule &operator=(const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtlsds6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtlsds6.h deleted file mode 100644 index f34a3ef9..00000000 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtlsds6.h +++ /dev/null @@ -1,359 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Header file for class DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#ifndef DRTLSDS6_H -#define DRTLSDS6_H - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/ofstd/oflist.h" // for standard list class -#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class - - -/** Interface class for LateralSpreadingDeviceSettingsSequence (300a,0370) in RTIonBeamsModule - */ -class DCMTK_DCMRT_EXPORT DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule - : protected DRTTypes -{ - - public: - - /** Item class - */ - class DCMTK_DCMRT_EXPORT Item - : protected DRTTypes - { - - public: - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultItem flag used to mark the empty default item - */ - Item(const OFBool emptyDefaultItem = OFFalse); - - /** copy constructor - * @param copy item object to be copied - */ - Item(const Item ©); - - /** destructor - */ - virtual ~Item(); - - /** assignment operator - * @param copy item object to be copied - * @return reference to this object - */ - Item &operator=(const Item ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if item is empty - * @return OFTrue if item is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if item is valid, i.e.\ not the empty default item - * @return OFTrue if item is valid, OFFalse otherwise - */ - OFBool isValid() const; - - // --- input/output methods --- - - /** read elements from sequence item - * @param item reference to DICOM sequence item from which the elements should be read - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &item); - - /** write elements to sequence item - * @param item reference to DICOM sequence item to which the elements should be written - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &item); - - // --- get DICOM attribute values --- - - /** get IsocenterToLateralSpreadingDeviceDistance (300a,0374) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getIsocenterToLateralSpreadingDeviceDistance(Float32 &value, const unsigned long pos = 0) const; - - /** get LateralSpreadingDeviceSetting (300a,0372) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getLateralSpreadingDeviceSetting(OFString &value, const signed long pos = 0) const; - - /** get LateralSpreadingDeviceWaterEquivalentThickness (300a,033c) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getLateralSpreadingDeviceWaterEquivalentThickness(Float32 &value, const unsigned long pos = 0) const; - - /** get ReferencedLateralSpreadingDeviceNumber (300c,0102) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedLateralSpreadingDeviceNumber(OFString &value, const signed long pos = 0) const; - - /** get ReferencedLateralSpreadingDeviceNumber (300c,0102) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedLateralSpreadingDeviceNumber(Sint32 &value, const unsigned long pos = 0) const; - - // --- set DICOM attribute values --- - - /** set IsocenterToLateralSpreadingDeviceDistance (300a,0374) - * @param value value to be set (should be valid for this VR) - * @param pos index of the value to be set (0..vm-1), vm=1 - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setIsocenterToLateralSpreadingDeviceDistance(const Float32 value, const unsigned long pos = 0); - - /** set LateralSpreadingDeviceSetting (300a,0372) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setLateralSpreadingDeviceSetting(const OFString &value, const OFBool check = OFTrue); - - /** set LateralSpreadingDeviceWaterEquivalentThickness (300a,033c) - * @param value value to be set (should be valid for this VR) - * @param pos index of the value to be set (0..vm-1), vm=1 - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setLateralSpreadingDeviceWaterEquivalentThickness(const Float32 value, const unsigned long pos = 0); - - /** set ReferencedLateralSpreadingDeviceNumber (300c,0102) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setReferencedLateralSpreadingDeviceNumber(const OFString &value, const OFBool check = OFTrue); - - private: - - /// internal flag used to mark the empty default item - /*const*/ OFBool EmptyDefaultItem; - - /// IsocenterToLateralSpreadingDeviceDistance (300a,0374) vr=FL, vm=1, type=3 - DcmFloatingPointSingle IsocenterToLateralSpreadingDeviceDistance; - /// LateralSpreadingDeviceSetting (300a,0372) vr=LO, vm=1, type=1 - DcmLongString LateralSpreadingDeviceSetting; - /// LateralSpreadingDeviceWaterEquivalentThickness (300a,033c) vr=FL, vm=1, type=3 - DcmFloatingPointSingle LateralSpreadingDeviceWaterEquivalentThickness; - /// ReferencedLateralSpreadingDeviceNumber (300c,0102) vr=IS, vm=1, type=1 - DcmIntegerString ReferencedLateralSpreadingDeviceNumber; - - }; - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultSequence internal flag used to mark the empty default sequence - */ - DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence = OFFalse); - - /** copy constructor - * @param copy sequence object to be copied - */ - DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule(const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule ©); - - /** destructor - */ - virtual ~DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule(); - - /** assignment operator - * @param copy sequence object to be copied - * @return reference to this object - */ - DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule &operator=(const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if sequence is empty - * @return OFTrue if sequence is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if sequence is valid, i.e.\ not the empty default sequence - * @return OFTrue if sequence is valid, OFFalse otherwise - */ - OFBool isValid() const; - - /** get number of items in the sequence - * @return number of items - */ - size_t getNumberOfItems() const; - - /** goto first item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoFirstItem(); - - /** goto next item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoNextItem(); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num); - - /** get current item in the sequence - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getCurrentItem(Item *&item) const; - - /** get current item in the sequence - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getCurrentItem(); - - /** get current item in the sequence - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getCurrentItem() const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getItem(const size_t num, Item *&item); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getItem(const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getItem(const size_t num) const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &operator[](const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &operator[](const size_t num) const; - - /** add new item to the end of this sequence - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition addItem(Item *&item); - - /** insert new item into the sequence - * @param pos position where the new item is to be inserted (0..num) - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition insertItem(const size_t pos, Item *&item); - - /** remove particular item from the sequence - * @param pos position of the item to be removed (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition removeItem(const size_t pos); - - // --- input/output methods --- - - /** read sequence of items from dataset - * @param dataset reference to DICOM dataset from which the sequence should be read - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - /** write sequence of items to dataset - * @param dataset reference to DICOM dataset to which the sequence should be written - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - protected: - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListIterator(Item *) &iterator); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListConstIterator(Item *) &iterator) const; - - private: - - /// internal flag used to mark the empty default sequence - /*const*/ OFBool EmptyDefaultSequence; - - /// list of items in this sequence - OFList SequenceOfItems; - /// currently selected item - OFListIterator(Item *) CurrentItem; - /// empty default item - Item EmptyItem; - -}; - - -#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtlsds7.h b/dcmrt/include/dcmtk/dcmrt/seq/drtlsds7.h deleted file mode 100644 index 687a28d4..00000000 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtlsds7.h +++ /dev/null @@ -1,327 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Header file for class DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#ifndef DRTLSDS7_H -#define DRTLSDS7_H - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/ofstd/oflist.h" // for standard list class -#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class - - -/** Interface class for LateralSpreadingDeviceSettingsSequence (300a,0370) in RTIonBeamsSessionRecordModule - */ -class DCMTK_DCMRT_EXPORT DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule - : protected DRTTypes -{ - - public: - - /** Item class - */ - class DCMTK_DCMRT_EXPORT Item - : protected DRTTypes - { - - public: - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultItem flag used to mark the empty default item - */ - Item(const OFBool emptyDefaultItem = OFFalse); - - /** copy constructor - * @param copy item object to be copied - */ - Item(const Item ©); - - /** destructor - */ - virtual ~Item(); - - /** assignment operator - * @param copy item object to be copied - * @return reference to this object - */ - Item &operator=(const Item ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if item is empty - * @return OFTrue if item is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if item is valid, i.e.\ not the empty default item - * @return OFTrue if item is valid, OFFalse otherwise - */ - OFBool isValid() const; - - // --- input/output methods --- - - /** read elements from sequence item - * @param item reference to DICOM sequence item from which the elements should be read - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &item); - - /** write elements to sequence item - * @param item reference to DICOM sequence item to which the elements should be written - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &item); - - // --- get DICOM attribute values --- - - /** get LateralSpreadingDeviceSetting (300a,0372) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getLateralSpreadingDeviceSetting(OFString &value, const signed long pos = 0) const; - - /** get ReferencedLateralSpreadingDeviceNumber (300c,0102) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedLateralSpreadingDeviceNumber(OFString &value, const signed long pos = 0) const; - - /** get ReferencedLateralSpreadingDeviceNumber (300c,0102) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedLateralSpreadingDeviceNumber(Sint32 &value, const unsigned long pos = 0) const; - - // --- set DICOM attribute values --- - - /** set LateralSpreadingDeviceSetting (300a,0372) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setLateralSpreadingDeviceSetting(const OFString &value, const OFBool check = OFTrue); - - /** set ReferencedLateralSpreadingDeviceNumber (300c,0102) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setReferencedLateralSpreadingDeviceNumber(const OFString &value, const OFBool check = OFTrue); - - private: - - /// internal flag used to mark the empty default item - /*const*/ OFBool EmptyDefaultItem; - - /// LateralSpreadingDeviceSetting (300a,0372) vr=LO, vm=1, type=1 - DcmLongString LateralSpreadingDeviceSetting; - /// ReferencedLateralSpreadingDeviceNumber (300c,0102) vr=IS, vm=1, type=1 - DcmIntegerString ReferencedLateralSpreadingDeviceNumber; - - }; - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultSequence internal flag used to mark the empty default sequence - */ - DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence = OFFalse); - - /** copy constructor - * @param copy sequence object to be copied - */ - DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule(const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule ©); - - /** destructor - */ - virtual ~DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule(); - - /** assignment operator - * @param copy sequence object to be copied - * @return reference to this object - */ - DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule &operator=(const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if sequence is empty - * @return OFTrue if sequence is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if sequence is valid, i.e.\ not the empty default sequence - * @return OFTrue if sequence is valid, OFFalse otherwise - */ - OFBool isValid() const; - - /** get number of items in the sequence - * @return number of items - */ - size_t getNumberOfItems() const; - - /** goto first item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoFirstItem(); - - /** goto next item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoNextItem(); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num); - - /** get current item in the sequence - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getCurrentItem(Item *&item) const; - - /** get current item in the sequence - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getCurrentItem(); - - /** get current item in the sequence - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getCurrentItem() const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getItem(const size_t num, Item *&item); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getItem(const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getItem(const size_t num) const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &operator[](const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &operator[](const size_t num) const; - - /** add new item to the end of this sequence - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition addItem(Item *&item); - - /** insert new item into the sequence - * @param pos position where the new item is to be inserted (0..num) - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition insertItem(const size_t pos, Item *&item); - - /** remove particular item from the sequence - * @param pos position of the item to be removed (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition removeItem(const size_t pos); - - // --- input/output methods --- - - /** read sequence of items from dataset - * @param dataset reference to DICOM dataset from which the sequence should be read - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - /** write sequence of items to dataset - * @param dataset reference to DICOM dataset to which the sequence should be written - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - protected: - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListIterator(Item *) &iterator); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListConstIterator(Item *) &iterator) const; - - private: - - /// internal flag used to mark the empty default sequence - /*const*/ OFBool EmptyDefaultSequence; - - /// list of items in this sequence - OFList SequenceOfItems; - /// currently selected item - OFListIterator(Item *) CurrentItem; - /// empty default item - Item EmptyItem; - -}; - - -#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtmacds.h b/dcmrt/include/dcmtk/dcmrt/seq/drtmacds.h index bddd560f..b908f850 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtmacds.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtmacds.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTMultiplexedAudioChannelsDescriptionCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -263,13 +263,13 @@ class DCMTK_DCMRT_EXPORT DRTMultiplexedAudioChannelsDescriptionCodeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtmas.h b/dcmrt/include/dcmtk/dcmrt/seq/drtmas.h index 21ecf748..493a5f29 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtmas.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtmas.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTModifiedAttributesSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -203,13 +203,13 @@ class DCMTK_DCMRT_EXPORT DRTModifiedAttributesSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtmdrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtmdrs.h index 4f20051e..c59094e8 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtmdrs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtmdrs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTMeasuredDoseReferenceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -324,13 +324,13 @@ class DCMTK_DCMRT_EXPORT DRTMeasuredDoseReferenceSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtmls.h b/dcmrt/include/dcmtk/dcmrt/seq/drtmls.h index 4aeb441d..345f4082 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtmls.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtmls.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTModalityLUTSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -271,13 +271,13 @@ class DCMTK_DCMRT_EXPORT DRTModalityLUTSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtmps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtmps.h index ce4ae9f5..f89f48e8 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtmps.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtmps.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTMACParametersSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -271,13 +271,13 @@ class DCMTK_DCMRT_EXPORT DRTMACParametersSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtmris.h b/dcmrt/include/dcmtk/dcmrt/seq/drtmris.h index f4c4e911..8c790b87 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtmris.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtmris.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTMappingResourceIdentificationSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -255,13 +255,13 @@ class DCMTK_DCMRT_EXPORT DRTMappingResourceIdentificationSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtmss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtmss.h index 89349778..2a19332e 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtmss.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtmss.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTMotionSynchronizationSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -271,13 +271,13 @@ class DCMTK_DCMRT_EXPORT DRTMotionSynchronizationSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtmttcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtmttcs.h new file mode 100644 index 00000000..8fb86667 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtmttcs.h @@ -0,0 +1,545 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTMachineSpecificTreatmentTerminationCodeSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTMTTCS_H +#define DRTMTTCS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtecs.h" // for EquivalentCodeSequence + + +/** Interface class for MachineSpecificTreatmentTerminationCodeSequence (300a,0716) + */ +class DCMTK_DCMRT_EXPORT DRTMachineSpecificTreatmentTerminationCodeSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get CodeMeaning (0008,0104) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodeMeaning(OFString &value, const signed long pos = 0) const; + + /** get CodeValue (0008,0100) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodeValue(OFString &value, const signed long pos = 0) const; + + /** get CodingSchemeDesignator (0008,0102) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodingSchemeDesignator(OFString &value, const signed long pos = 0) const; + + /** get CodingSchemeVersion (0008,0103) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupExtensionCreatorUID (0008,010d) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupExtensionCreatorUID(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupExtensionFlag (0008,010b) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupExtensionFlag(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupLocalVersion (0008,0107) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupLocalVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupVersion (0008,0106) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextIdentifier (0008,010f) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextIdentifier(OFString &value, const signed long pos = 0) const; + + /** get ContextUID (0008,0117) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextUID(OFString &value, const signed long pos = 0) const; + + /** get LongCodeValue (0008,0119) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const; + + /** get MappingResource (0008,0105) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResource(OFString &value, const signed long pos = 0) const; + + /** get MappingResourceName (0008,0122) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const; + + /** get MappingResourceUID (0008,0118) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const; + + /** get URNCodeValue (0008,0120) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const; + + // --- get DICOM sequence attributes --- + + /** get EquivalentCodeSequence (0008,0121) + * @return reference to sequence element + */ + DRTEquivalentCodeSequence &getEquivalentCodeSequence() + { return EquivalentCodeSequence; } + + /** get EquivalentCodeSequence (0008,0121) + * @return const reference to sequence element + */ + const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const + { return EquivalentCodeSequence; } + + // --- set DICOM attribute values --- + + /** set CodeMeaning (0008,0104) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodeMeaning(const OFString &value, const OFBool check = OFTrue); + + /** set CodeValue (0008,0100) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodeValue(const OFString &value, const OFBool check = OFTrue); + + /** set CodingSchemeDesignator (0008,0102) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodingSchemeDesignator(const OFString &value, const OFBool check = OFTrue); + + /** set CodingSchemeVersion (0008,0103) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupExtensionCreatorUID (0008,010d) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupExtensionFlag (0008,010b) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupExtensionFlag(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupLocalVersion (0008,0107) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupLocalVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupVersion (0008,0106) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextIdentifier (0008,010f) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextIdentifier(const OFString &value, const OFBool check = OFTrue); + + /** set ContextUID (0008,0117) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue); + + /** set LongCodeValue (0008,0119) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UC) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResource (0008,0105) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResourceName (0008,0122) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResourceUID (0008,0118) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue); + + /** set URNCodeValue (0008,0120) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UR) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1 + DcmLongString CodeMeaning; + /// CodeValue (0008,0100) vr=SH, vm=1, type=1C + DcmShortString CodeValue; + /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C + DcmShortString CodingSchemeDesignator; + /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C + DcmShortString CodingSchemeVersion; + /// ContextGroupExtensionCreatorUID (0008,010d) vr=UI, vm=1, type=1C + DcmUniqueIdentifier ContextGroupExtensionCreatorUID; + /// ContextGroupExtensionFlag (0008,010b) vr=CS, vm=1, type=3 + DcmCodeString ContextGroupExtensionFlag; + /// ContextGroupLocalVersion (0008,0107) vr=DT, vm=1, type=1C + DcmDateTime ContextGroupLocalVersion; + /// ContextGroupVersion (0008,0106) vr=DT, vm=1, type=1C + DcmDateTime ContextGroupVersion; + /// ContextIdentifier (0008,010f) vr=CS, vm=1, type=3 + DcmCodeString ContextIdentifier; + /// ContextUID (0008,0117) vr=UI, vm=1, type=3 + DcmUniqueIdentifier ContextUID; + /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3 + DRTEquivalentCodeSequence EquivalentCodeSequence; + /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C + DcmUnlimitedCharacters LongCodeValue; + /// MappingResource (0008,0105) vr=CS, vm=1, type=1C + DcmCodeString MappingResource; + /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3 + DcmLongString MappingResourceName; + /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3 + DcmUniqueIdentifier MappingResourceUID; + /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C + DcmUniversalResourceIdentifierOrLocator URNCodeValue; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTMachineSpecificTreatmentTerminationCodeSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTMachineSpecificTreatmentTerminationCodeSequence(const DRTMachineSpecificTreatmentTerminationCodeSequence ©); + + /** destructor + */ + virtual ~DRTMachineSpecificTreatmentTerminationCodeSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTMachineSpecificTreatmentTerminationCodeSequence &operator=(const DRTMachineSpecificTreatmentTerminationCodeSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtmucs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtmucs.h index cc590d55..5618fe3a 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtmucs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtmucs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTMeasurementUnitsCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTMeasurementUnitsCodeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtnmas.h b/dcmrt/include/dcmtk/dcmrt/seq/drtnmas.h new file mode 100644 index 00000000..0d3a82d5 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtnmas.h @@ -0,0 +1,407 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTNonconformingModifiedAttributesSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTNMAS_H +#define DRTNMAS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for NonconformingModifiedAttributesSequence (0400,0551) + */ +class DCMTK_DCMRT_EXPORT DRTNonconformingModifiedAttributesSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get NonconformingDataElementValue (0400,0552) + * @param value reference to variable in which the value should be stored + * @param count stores number of items in the result array (if not NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getNonconformingDataElementValue(Uint8 *&value, unsigned long *count = NULL) const; + + /** get SelectorAttribute (0072,0026) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getSelectorAttribute(OFString &value, const signed long pos = 0) const; + + /** get SelectorAttributePrivateCreator (0072,0056) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getSelectorAttributePrivateCreator(OFString &value, const signed long pos = 0) const; + + /** get SelectorSequencePointer (0072,0052) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getSelectorSequencePointer(OFString &value, const signed long pos = 0) const; + + /** get SelectorSequencePointerItems (0074,1057) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getSelectorSequencePointerItems(OFString &value, const signed long pos = 0) const; + + /** get SelectorSequencePointerItems (0074,1057) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getSelectorSequencePointerItems(Sint32 &value, const unsigned long pos = 0) const; + + /** get SelectorSequencePointerPrivateCreator (0072,0054) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getSelectorSequencePointerPrivateCreator(OFString &value, const signed long pos = 0) const; + + /** get SelectorValueNumber (0072,0028) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getSelectorValueNumber(Uint16 &value, const unsigned long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set NonconformingDataElementValue (0400,0552) + * @param value array value to be set (data is copied) + * @param count number of items in the array + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setNonconformingDataElementValue(const Uint8 *value, const unsigned long count); + + /** set SelectorAttribute (0072,0026) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (AT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setSelectorAttribute(const OFString &value, const OFBool check = OFTrue); + + /** set SelectorAttributePrivateCreator (0072,0056) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setSelectorAttributePrivateCreator(const OFString &value, const OFBool check = OFTrue); + + /** set SelectorSequencePointer (0072,0052) + * @param value value to be set (possibly multi-valued) or "" for no value + * @param check check 'value' for conformance with VR (AT) and VM (1-n) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setSelectorSequencePointer(const OFString &value, const OFBool check = OFTrue); + + /** set SelectorSequencePointerItems (0074,1057) + * @param value value to be set (possibly multi-valued) or "" for no value + * @param check check 'value' for conformance with VR (IS) and VM (1-n) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setSelectorSequencePointerItems(const OFString &value, const OFBool check = OFTrue); + + /** set SelectorSequencePointerPrivateCreator (0072,0054) + * @param value value to be set (possibly multi-valued) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1-n) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setSelectorSequencePointerPrivateCreator(const OFString &value, const OFBool check = OFTrue); + + /** set SelectorValueNumber (0072,0028) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setSelectorValueNumber(const Uint16 value, const unsigned long pos = 0); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// NonconformingDataElementValue (0400,0552) vr=OB, vm=1, type=1 + DcmOtherByteOtherWord NonconformingDataElementValue; + /// SelectorAttribute (0072,0026) vr=AT, vm=1, type=1C + DcmAttributeTag SelectorAttribute; + /// SelectorAttributePrivateCreator (0072,0056) vr=LO, vm=1, type=1C + DcmLongString SelectorAttributePrivateCreator; + /// SelectorSequencePointer (0072,0052) vr=AT, vm=1-n, type=1C + DcmAttributeTag SelectorSequencePointer; + /// SelectorSequencePointerItems (0074,1057) vr=IS, vm=1-n, type=1C + DcmIntegerString SelectorSequencePointerItems; + /// SelectorSequencePointerPrivateCreator (0072,0054) vr=LO, vm=1-n, type=1C + DcmLongString SelectorSequencePointerPrivateCreator; + /// SelectorValueNumber (0072,0028) vr=US, vm=1, type=1C + DcmUnsignedShort SelectorValueNumber; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTNonconformingModifiedAttributesSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTNonconformingModifiedAttributesSequence(const DRTNonconformingModifiedAttributesSequence ©); + + /** destructor + */ + virtual ~DRTNonconformingModifiedAttributesSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTNonconformingModifiedAttributesSequence &operator=(const DRTNonconformingModifiedAttributesSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtoas.h b/dcmrt/include/dcmtk/dcmrt/seq/drtoas.h index 592467e0..988125b1 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtoas.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtoas.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTOriginalAttributesSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -20,6 +20,7 @@ #include "dcmtk/ofstd/oflist.h" // for standard list class #include "dcmtk/dcmrt/drttypes.h" // module-specific helper class #include "dcmtk/dcmrt/seq/drtmas.h" // for ModifiedAttributesSequence +#include "dcmtk/dcmrt/seq/drtnmas.h" // for NonconformingModifiedAttributesSequence /** Interface class for OriginalAttributesSequence (0400,0561) @@ -134,6 +135,18 @@ class DCMTK_DCMRT_EXPORT DRTOriginalAttributesSequence const DRTModifiedAttributesSequence &getModifiedAttributesSequence() const { return ModifiedAttributesSequence; } + /** get NonconformingModifiedAttributesSequence (0400,0551) + * @return reference to sequence element + */ + DRTNonconformingModifiedAttributesSequence &getNonconformingModifiedAttributesSequence() + { return NonconformingModifiedAttributesSequence; } + + /** get NonconformingModifiedAttributesSequence (0400,0551) + * @return const reference to sequence element + */ + const DRTNonconformingModifiedAttributesSequence &getNonconformingModifiedAttributesSequence() const + { return NonconformingModifiedAttributesSequence; } + // --- set DICOM attribute values --- /** set AttributeModificationDateTime (0400,0562) @@ -175,6 +188,8 @@ class DCMTK_DCMRT_EXPORT DRTOriginalAttributesSequence DRTModifiedAttributesSequence ModifiedAttributesSequence; /// ModifyingSystem (0400,0563) vr=LO, vm=1, type=1 DcmLongString ModifyingSystem; + /// NonconformingModifiedAttributesSequence (0400,0551) vr=SQ, vm=1, type=3 + DRTNonconformingModifiedAttributesSequence NonconformingModifiedAttributesSequence; /// ReasonForTheAttributeModification (0400,0565) vr=CS, vm=1, type=1 DcmCodeString ReasonForTheAttributeModification; /// SourceOfPreviousValues (0400,0564) vr=LO, vm=1, type=2 @@ -288,13 +303,13 @@ class DCMTK_DCMRT_EXPORT DRTOriginalAttributesSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtois.h b/dcmrt/include/dcmtk/dcmrt/seq/drtois.h index 1d557ecd..d5bdd60e 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtois.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtois.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTOperatorIdentificationSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -20,6 +20,7 @@ #include "dcmtk/ofstd/oflist.h" // for standard list class #include "dcmtk/dcmrt/drttypes.h" // module-specific helper class #include "dcmtk/dcmrt/seq/drtics.h" // for InstitutionCodeSequence +#include "dcmtk/dcmrt/seq/drtidcs.h" // for InstitutionalDepartmentTypeCodeSequence #include "dcmtk/dcmrt/seq/drtpics.h" // for PersonIdentificationCodeSequence @@ -107,6 +108,13 @@ class DCMTK_DCMRT_EXPORT DRTOperatorIdentificationSequence */ OFCondition getInstitutionName(OFString &value, const signed long pos = 0) const; + /** get InstitutionalDepartmentName (0008,1040) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getInstitutionalDepartmentName(OFString &value, const signed long pos = 0) const; + /** get PersonAddress (0040,1102) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -142,6 +150,18 @@ class DCMTK_DCMRT_EXPORT DRTOperatorIdentificationSequence const DRTInstitutionCodeSequence &getInstitutionCodeSequence() const { return InstitutionCodeSequence; } + /** get InstitutionalDepartmentTypeCodeSequence (0008,1041) + * @return reference to sequence element + */ + DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() + { return InstitutionalDepartmentTypeCodeSequence; } + + /** get InstitutionalDepartmentTypeCodeSequence (0008,1041) + * @return const reference to sequence element + */ + const DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() const + { return InstitutionalDepartmentTypeCodeSequence; } + /** get PersonIdentificationCodeSequence (0040,1101) * @return reference to sequence element */ @@ -170,6 +190,13 @@ class DCMTK_DCMRT_EXPORT DRTOperatorIdentificationSequence */ OFCondition setInstitutionName(const OFString &value, const OFBool check = OFTrue); + /** set InstitutionalDepartmentName (0008,1040) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setInstitutionalDepartmentName(const OFString &value, const OFBool check = OFTrue); + /** set PersonAddress (0040,1102) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (ST) and VM (1) if enabled @@ -202,6 +229,10 @@ class DCMTK_DCMRT_EXPORT DRTOperatorIdentificationSequence DRTInstitutionCodeSequence InstitutionCodeSequence; /// InstitutionName (0008,0080) vr=LO, vm=1, type=1C DcmLongString InstitutionName; + /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3 + DcmLongString InstitutionalDepartmentName; + /// InstitutionalDepartmentTypeCodeSequence (0008,1041) vr=SQ, vm=1, type=3 + DRTInstitutionalDepartmentTypeCodeSequence InstitutionalDepartmentTypeCodeSequence; /// PersonAddress (0040,1102) vr=ST, vm=1, type=3 DcmShortText PersonAddress; /// PersonIdentificationCodeSequence (0040,1101) vr=SQ, vm=1, type=1 @@ -319,13 +350,13 @@ class DCMTK_DCMRT_EXPORT DRTOperatorIdentificationSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtopis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtopis.h index 71c60ece..3472a15c 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtopis.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtopis.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTOtherPatientIDsSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -272,13 +272,13 @@ class DCMTK_DCMRT_EXPORT DRTOtherPatientIDsSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtos.h b/dcmrt/include/dcmtk/dcmrt/seq/drtos.h index de3b6620..e7e8c80f 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtos.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtos.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTOverrideSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -327,13 +327,13 @@ class DCMTK_DCMRT_EXPORT DRTOverrideSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtosirs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtosirs.h new file mode 100644 index 00000000..15769646 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtosirs.h @@ -0,0 +1,320 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTOriginatingSOPInstanceReferenceSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTOSIRS_H +#define DRTOSIRS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for OriginatingSOPInstanceReferenceSequence (3010,0007) + */ +class DCMTK_DCMRT_EXPORT DRTOriginatingSOPInstanceReferenceSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get ReferencedSOPClassUID (0008,1150) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const; + + /** get ReferencedSOPInstanceUID (0008,1155) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set ReferencedSOPClassUID (0008,1150) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue); + + /** set ReferencedSOPInstanceUID (0008,1155) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1 + DcmUniqueIdentifier ReferencedSOPClassUID; + /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1 + DcmUniqueIdentifier ReferencedSOPInstanceUID; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTOriginatingSOPInstanceReferenceSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTOriginatingSOPInstanceReferenceSequence(const DRTOriginatingSOPInstanceReferenceSequence ©); + + /** destructor + */ + virtual ~DRTOriginatingSOPInstanceReferenceSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTOriginatingSOPInstanceReferenceSequence &operator=(const DRTOriginatingSOPInstanceReferenceSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpasms.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpasms.h new file mode 100644 index 00000000..e9aacadd --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtpasms.h @@ -0,0 +1,545 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTPrimaryAnatomicStructureModifierSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTPASMS_H +#define DRTPASMS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtecs.h" // for EquivalentCodeSequence + + +/** Interface class for PrimaryAnatomicStructureModifierSequence (0008,2230) + */ +class DCMTK_DCMRT_EXPORT DRTPrimaryAnatomicStructureModifierSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get CodeMeaning (0008,0104) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodeMeaning(OFString &value, const signed long pos = 0) const; + + /** get CodeValue (0008,0100) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodeValue(OFString &value, const signed long pos = 0) const; + + /** get CodingSchemeDesignator (0008,0102) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodingSchemeDesignator(OFString &value, const signed long pos = 0) const; + + /** get CodingSchemeVersion (0008,0103) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupExtensionCreatorUID (0008,010d) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupExtensionCreatorUID(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupExtensionFlag (0008,010b) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupExtensionFlag(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupLocalVersion (0008,0107) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupLocalVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupVersion (0008,0106) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextIdentifier (0008,010f) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextIdentifier(OFString &value, const signed long pos = 0) const; + + /** get ContextUID (0008,0117) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextUID(OFString &value, const signed long pos = 0) const; + + /** get LongCodeValue (0008,0119) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const; + + /** get MappingResource (0008,0105) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResource(OFString &value, const signed long pos = 0) const; + + /** get MappingResourceName (0008,0122) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const; + + /** get MappingResourceUID (0008,0118) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const; + + /** get URNCodeValue (0008,0120) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const; + + // --- get DICOM sequence attributes --- + + /** get EquivalentCodeSequence (0008,0121) + * @return reference to sequence element + */ + DRTEquivalentCodeSequence &getEquivalentCodeSequence() + { return EquivalentCodeSequence; } + + /** get EquivalentCodeSequence (0008,0121) + * @return const reference to sequence element + */ + const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const + { return EquivalentCodeSequence; } + + // --- set DICOM attribute values --- + + /** set CodeMeaning (0008,0104) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodeMeaning(const OFString &value, const OFBool check = OFTrue); + + /** set CodeValue (0008,0100) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodeValue(const OFString &value, const OFBool check = OFTrue); + + /** set CodingSchemeDesignator (0008,0102) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodingSchemeDesignator(const OFString &value, const OFBool check = OFTrue); + + /** set CodingSchemeVersion (0008,0103) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupExtensionCreatorUID (0008,010d) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupExtensionFlag (0008,010b) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupExtensionFlag(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupLocalVersion (0008,0107) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupLocalVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupVersion (0008,0106) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextIdentifier (0008,010f) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextIdentifier(const OFString &value, const OFBool check = OFTrue); + + /** set ContextUID (0008,0117) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue); + + /** set LongCodeValue (0008,0119) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UC) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResource (0008,0105) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResourceName (0008,0122) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResourceUID (0008,0118) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue); + + /** set URNCodeValue (0008,0120) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UR) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1 + DcmLongString CodeMeaning; + /// CodeValue (0008,0100) vr=SH, vm=1, type=1C + DcmShortString CodeValue; + /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C + DcmShortString CodingSchemeDesignator; + /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C + DcmShortString CodingSchemeVersion; + /// ContextGroupExtensionCreatorUID (0008,010d) vr=UI, vm=1, type=1C + DcmUniqueIdentifier ContextGroupExtensionCreatorUID; + /// ContextGroupExtensionFlag (0008,010b) vr=CS, vm=1, type=3 + DcmCodeString ContextGroupExtensionFlag; + /// ContextGroupLocalVersion (0008,0107) vr=DT, vm=1, type=1C + DcmDateTime ContextGroupLocalVersion; + /// ContextGroupVersion (0008,0106) vr=DT, vm=1, type=1C + DcmDateTime ContextGroupVersion; + /// ContextIdentifier (0008,010f) vr=CS, vm=1, type=3 + DcmCodeString ContextIdentifier; + /// ContextUID (0008,0117) vr=UI, vm=1, type=3 + DcmUniqueIdentifier ContextUID; + /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3 + DRTEquivalentCodeSequence EquivalentCodeSequence; + /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C + DcmUnlimitedCharacters LongCodeValue; + /// MappingResource (0008,0105) vr=CS, vm=1, type=1C + DcmCodeString MappingResource; + /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3 + DcmLongString MappingResourceName; + /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3 + DcmUniqueIdentifier MappingResourceUID; + /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C + DcmUniversalResourceIdentifierOrLocator URNCodeValue; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTPrimaryAnatomicStructureModifierSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTPrimaryAnatomicStructureModifierSequence(const DRTPrimaryAnatomicStructureModifierSequence ©); + + /** destructor + */ + virtual ~DRTPrimaryAnatomicStructureModifierSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTPrimaryAnatomicStructureModifierSequence &operator=(const DRTPrimaryAnatomicStructureModifierSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpass.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpass.h new file mode 100644 index 00000000..21778cf9 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtpass.h @@ -0,0 +1,560 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTPrimaryAnatomicStructureSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTPASS_H +#define DRTPASS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtecs.h" // for EquivalentCodeSequence +#include "dcmtk/dcmrt/seq/drtpasms.h" // for PrimaryAnatomicStructureModifierSequence + + +/** Interface class for PrimaryAnatomicStructureSequence (0008,2228) + */ +class DCMTK_DCMRT_EXPORT DRTPrimaryAnatomicStructureSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get CodeMeaning (0008,0104) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodeMeaning(OFString &value, const signed long pos = 0) const; + + /** get CodeValue (0008,0100) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodeValue(OFString &value, const signed long pos = 0) const; + + /** get CodingSchemeDesignator (0008,0102) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodingSchemeDesignator(OFString &value, const signed long pos = 0) const; + + /** get CodingSchemeVersion (0008,0103) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupExtensionCreatorUID (0008,010d) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupExtensionCreatorUID(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupExtensionFlag (0008,010b) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupExtensionFlag(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupLocalVersion (0008,0107) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupLocalVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupVersion (0008,0106) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextIdentifier (0008,010f) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextIdentifier(OFString &value, const signed long pos = 0) const; + + /** get ContextUID (0008,0117) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextUID(OFString &value, const signed long pos = 0) const; + + /** get LongCodeValue (0008,0119) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const; + + /** get MappingResource (0008,0105) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResource(OFString &value, const signed long pos = 0) const; + + /** get MappingResourceName (0008,0122) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const; + + /** get MappingResourceUID (0008,0118) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const; + + /** get URNCodeValue (0008,0120) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const; + + // --- get DICOM sequence attributes --- + + /** get EquivalentCodeSequence (0008,0121) + * @return reference to sequence element + */ + DRTEquivalentCodeSequence &getEquivalentCodeSequence() + { return EquivalentCodeSequence; } + + /** get EquivalentCodeSequence (0008,0121) + * @return const reference to sequence element + */ + const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const + { return EquivalentCodeSequence; } + + /** get PrimaryAnatomicStructureModifierSequence (0008,2230) + * @return reference to sequence element + */ + DRTPrimaryAnatomicStructureModifierSequence &getPrimaryAnatomicStructureModifierSequence() + { return PrimaryAnatomicStructureModifierSequence; } + + /** get PrimaryAnatomicStructureModifierSequence (0008,2230) + * @return const reference to sequence element + */ + const DRTPrimaryAnatomicStructureModifierSequence &getPrimaryAnatomicStructureModifierSequence() const + { return PrimaryAnatomicStructureModifierSequence; } + + // --- set DICOM attribute values --- + + /** set CodeMeaning (0008,0104) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodeMeaning(const OFString &value, const OFBool check = OFTrue); + + /** set CodeValue (0008,0100) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodeValue(const OFString &value, const OFBool check = OFTrue); + + /** set CodingSchemeDesignator (0008,0102) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodingSchemeDesignator(const OFString &value, const OFBool check = OFTrue); + + /** set CodingSchemeVersion (0008,0103) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupExtensionCreatorUID (0008,010d) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupExtensionFlag (0008,010b) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupExtensionFlag(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupLocalVersion (0008,0107) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupLocalVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupVersion (0008,0106) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextIdentifier (0008,010f) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextIdentifier(const OFString &value, const OFBool check = OFTrue); + + /** set ContextUID (0008,0117) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue); + + /** set LongCodeValue (0008,0119) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UC) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResource (0008,0105) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResourceName (0008,0122) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResourceUID (0008,0118) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue); + + /** set URNCodeValue (0008,0120) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UR) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1 + DcmLongString CodeMeaning; + /// CodeValue (0008,0100) vr=SH, vm=1, type=1C + DcmShortString CodeValue; + /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C + DcmShortString CodingSchemeDesignator; + /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C + DcmShortString CodingSchemeVersion; + /// ContextGroupExtensionCreatorUID (0008,010d) vr=UI, vm=1, type=1C + DcmUniqueIdentifier ContextGroupExtensionCreatorUID; + /// ContextGroupExtensionFlag (0008,010b) vr=CS, vm=1, type=3 + DcmCodeString ContextGroupExtensionFlag; + /// ContextGroupLocalVersion (0008,0107) vr=DT, vm=1, type=1C + DcmDateTime ContextGroupLocalVersion; + /// ContextGroupVersion (0008,0106) vr=DT, vm=1, type=1C + DcmDateTime ContextGroupVersion; + /// ContextIdentifier (0008,010f) vr=CS, vm=1, type=3 + DcmCodeString ContextIdentifier; + /// ContextUID (0008,0117) vr=UI, vm=1, type=3 + DcmUniqueIdentifier ContextUID; + /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3 + DRTEquivalentCodeSequence EquivalentCodeSequence; + /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C + DcmUnlimitedCharacters LongCodeValue; + /// MappingResource (0008,0105) vr=CS, vm=1, type=1C + DcmCodeString MappingResource; + /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3 + DcmLongString MappingResourceName; + /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3 + DcmUniqueIdentifier MappingResourceUID; + /// PrimaryAnatomicStructureModifierSequence (0008,2230) vr=SQ, vm=1, type=3 + DRTPrimaryAnatomicStructureModifierSequence PrimaryAnatomicStructureModifierSequence; + /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C + DcmUniversalResourceIdentifierOrLocator URNCodeValue; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTPrimaryAnatomicStructureSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTPrimaryAnatomicStructureSequence(const DRTPrimaryAnatomicStructureSequence ©); + + /** destructor + */ + virtual ~DRTPrimaryAnatomicStructureSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTPrimaryAnatomicStructureSequence &operator=(const DRTPrimaryAnatomicStructureSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpbcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpbcs.h index 92686fdd..0f1ba3ad 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtpbcs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtpbcs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTPatientBreedCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTPatientBreedCodeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpbdds.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpbdds.h new file mode 100644 index 00000000..bb5a17ac --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtpbdds.h @@ -0,0 +1,385 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTParallelRTBeamDelimiterDeviceSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTPBDDS_H +#define DRTPBDDS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtpbdos.h" // for ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence + + +/** Interface class for ParallelRTBeamDelimiterDeviceSequence (300a,0647) + */ +class DCMTK_DCMRT_EXPORT DRTParallelRTBeamDelimiterDeviceSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get NumberOfParallelRTBeamDelimiters (300a,0648) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getNumberOfParallelRTBeamDelimiters(Uint16 &value, const unsigned long pos = 0) const; + + /** get ParallelRTBeamDelimiterBoundaries (300a,0649) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getParallelRTBeamDelimiterBoundaries(Float64 &value, const unsigned long pos = 0) const; + + /** get ParallelRTBeamDelimiterLeafMountingSide (300a,064f) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getParallelRTBeamDelimiterLeafMountingSide(OFString &value, const signed long pos = 0) const; + + /** get ParallelRTBeamDelimiterOpeningExtents (3008,00a4) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getParallelRTBeamDelimiterOpeningExtents(Float64 &value, const unsigned long pos = 0) const; + + /** get ParallelRTBeamDelimiterOpeningMode (300a,064e) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getParallelRTBeamDelimiterOpeningMode(OFString &value, const signed long pos = 0) const; + + // --- get DICOM sequence attributes --- + + /** get ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence (300a,0644) + * @return reference to sequence element + */ + DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence &getParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence() + { return ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence; } + + /** get ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence (300a,0644) + * @return const reference to sequence element + */ + const DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence &getParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence() const + { return ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence; } + + // --- set DICOM attribute values --- + + /** set NumberOfParallelRTBeamDelimiters (300a,0648) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setNumberOfParallelRTBeamDelimiters(const Uint16 value, const unsigned long pos = 0); + + /** set ParallelRTBeamDelimiterBoundaries (300a,0649) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=2-n + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setParallelRTBeamDelimiterBoundaries(const Float64 value, const unsigned long pos = 0); + + /** set ParallelRTBeamDelimiterLeafMountingSide (300a,064f) + * @param value value to be set (possibly multi-valued) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1-n) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setParallelRTBeamDelimiterLeafMountingSide(const OFString &value, const OFBool check = OFTrue); + + /** set ParallelRTBeamDelimiterOpeningExtents (3008,00a4) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=2-2n + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setParallelRTBeamDelimiterOpeningExtents(const Float64 value, const unsigned long pos = 0); + + /** set ParallelRTBeamDelimiterOpeningMode (300a,064e) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setParallelRTBeamDelimiterOpeningMode(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// NumberOfParallelRTBeamDelimiters (300a,0648) vr=US, vm=1, type=1 + DcmUnsignedShort NumberOfParallelRTBeamDelimiters; + /// ParallelRTBeamDelimiterBoundaries (300a,0649) vr=FD, vm=2-n, type=1 + DcmFloatingPointDouble ParallelRTBeamDelimiterBoundaries; + /// ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence (300a,0644) vr=SQ, vm=1, type=1 + DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence; + /// ParallelRTBeamDelimiterLeafMountingSide (300a,064f) vr=CS, vm=1-n, type=1C + DcmCodeString ParallelRTBeamDelimiterLeafMountingSide; + /// ParallelRTBeamDelimiterOpeningExtents (3008,00a4) vr=FD, vm=2-2n, type=1C + DcmFloatingPointDouble ParallelRTBeamDelimiterOpeningExtents; + /// ParallelRTBeamDelimiterOpeningMode (300a,064e) vr=CS, vm=1, type=1 + DcmCodeString ParallelRTBeamDelimiterOpeningMode; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTParallelRTBeamDelimiterDeviceSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTParallelRTBeamDelimiterDeviceSequence(const DRTParallelRTBeamDelimiterDeviceSequence ©); + + /** destructor + */ + virtual ~DRTParallelRTBeamDelimiterDeviceSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTParallelRTBeamDelimiterDeviceSequence &operator=(const DRTParallelRTBeamDelimiterDeviceSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpbdos.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpbdos.h new file mode 100644 index 00000000..0afd583e --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtpbdos.h @@ -0,0 +1,545 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTPBDOS_H +#define DRTPBDOS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtecs.h" // for EquivalentCodeSequence + + +/** Interface class for ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence (300a,0644) + */ +class DCMTK_DCMRT_EXPORT DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get CodeMeaning (0008,0104) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodeMeaning(OFString &value, const signed long pos = 0) const; + + /** get CodeValue (0008,0100) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodeValue(OFString &value, const signed long pos = 0) const; + + /** get CodingSchemeDesignator (0008,0102) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodingSchemeDesignator(OFString &value, const signed long pos = 0) const; + + /** get CodingSchemeVersion (0008,0103) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupExtensionCreatorUID (0008,010d) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupExtensionCreatorUID(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupExtensionFlag (0008,010b) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupExtensionFlag(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupLocalVersion (0008,0107) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupLocalVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupVersion (0008,0106) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextIdentifier (0008,010f) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextIdentifier(OFString &value, const signed long pos = 0) const; + + /** get ContextUID (0008,0117) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextUID(OFString &value, const signed long pos = 0) const; + + /** get LongCodeValue (0008,0119) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const; + + /** get MappingResource (0008,0105) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResource(OFString &value, const signed long pos = 0) const; + + /** get MappingResourceName (0008,0122) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const; + + /** get MappingResourceUID (0008,0118) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const; + + /** get URNCodeValue (0008,0120) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const; + + // --- get DICOM sequence attributes --- + + /** get EquivalentCodeSequence (0008,0121) + * @return reference to sequence element + */ + DRTEquivalentCodeSequence &getEquivalentCodeSequence() + { return EquivalentCodeSequence; } + + /** get EquivalentCodeSequence (0008,0121) + * @return const reference to sequence element + */ + const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const + { return EquivalentCodeSequence; } + + // --- set DICOM attribute values --- + + /** set CodeMeaning (0008,0104) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodeMeaning(const OFString &value, const OFBool check = OFTrue); + + /** set CodeValue (0008,0100) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodeValue(const OFString &value, const OFBool check = OFTrue); + + /** set CodingSchemeDesignator (0008,0102) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodingSchemeDesignator(const OFString &value, const OFBool check = OFTrue); + + /** set CodingSchemeVersion (0008,0103) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupExtensionCreatorUID (0008,010d) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupExtensionFlag (0008,010b) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupExtensionFlag(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupLocalVersion (0008,0107) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupLocalVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupVersion (0008,0106) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextIdentifier (0008,010f) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextIdentifier(const OFString &value, const OFBool check = OFTrue); + + /** set ContextUID (0008,0117) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue); + + /** set LongCodeValue (0008,0119) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UC) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResource (0008,0105) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResourceName (0008,0122) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResourceUID (0008,0118) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue); + + /** set URNCodeValue (0008,0120) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UR) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1 + DcmLongString CodeMeaning; + /// CodeValue (0008,0100) vr=SH, vm=1, type=1C + DcmShortString CodeValue; + /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C + DcmShortString CodingSchemeDesignator; + /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C + DcmShortString CodingSchemeVersion; + /// ContextGroupExtensionCreatorUID (0008,010d) vr=UI, vm=1, type=1C + DcmUniqueIdentifier ContextGroupExtensionCreatorUID; + /// ContextGroupExtensionFlag (0008,010b) vr=CS, vm=1, type=3 + DcmCodeString ContextGroupExtensionFlag; + /// ContextGroupLocalVersion (0008,0107) vr=DT, vm=1, type=1C + DcmDateTime ContextGroupLocalVersion; + /// ContextGroupVersion (0008,0106) vr=DT, vm=1, type=1C + DcmDateTime ContextGroupVersion; + /// ContextIdentifier (0008,010f) vr=CS, vm=1, type=3 + DcmCodeString ContextIdentifier; + /// ContextUID (0008,0117) vr=UI, vm=1, type=3 + DcmUniqueIdentifier ContextUID; + /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3 + DRTEquivalentCodeSequence EquivalentCodeSequence; + /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C + DcmUnlimitedCharacters LongCodeValue; + /// MappingResource (0008,0105) vr=CS, vm=1, type=1C + DcmCodeString MappingResource; + /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3 + DcmLongString MappingResourceName; + /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3 + DcmUniqueIdentifier MappingResourceUID; + /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C + DcmUniversalResourceIdentifierOrLocator URNCodeValue; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence(const DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence ©); + + /** destructor + */ + virtual ~DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence &operator=(const DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpcs.h index f648e130..23dca8bd 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtpcs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtpcs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTProcedureCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTProcedureCodeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpcxs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpcxs.h index 409125f9..cf98a55f 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtpcxs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtpcxs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTProtocolContextSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -144,6 +144,13 @@ class DCMTK_DCMRT_EXPORT DRTProtocolContextSequence */ OFCondition getObservationDateTime(OFString &value, const signed long pos = 0) const; + /** get ObservationStartDateTime (0040,a033) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getObservationStartDateTime(OFString &value, const signed long pos = 0) const; + /** get PersonName (0040,a123) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -292,6 +299,13 @@ class DCMTK_DCMRT_EXPORT DRTProtocolContextSequence */ OFCondition setObservationDateTime(const OFString &value, const OFBool check = OFTrue); + /** set ObservationStartDateTime (0040,a033) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setObservationStartDateTime(const OFString &value, const OFBool check = OFTrue); + /** set PersonName (0040,a123) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (PN) and VM (1) if enabled @@ -364,6 +378,8 @@ class DCMTK_DCMRT_EXPORT DRTProtocolContextSequence DcmDecimalString NumericValue; /// ObservationDateTime (0040,a032) vr=DT, vm=1, type=3 DcmDateTime ObservationDateTime; + /// ObservationStartDateTime (0040,a033) vr=DT, vm=1, type=3 + DcmDateTime ObservationStartDateTime; /// PersonName (0040,a123) vr=PN, vm=1, type=1C DcmPersonName PersonName; /// RationalDenominatorValue (0040,a163) vr=UL, vm=1-n, type=1C @@ -489,13 +505,13 @@ class DCMTK_DCMRT_EXPORT DRTProtocolContextSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpdecs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpdecs.h index d3522531..ca63ec80 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtpdecs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtpdecs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTPrivateDataElementCharacteristicsSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -303,13 +303,13 @@ class DCMTK_DCMRT_EXPORT DRTPrivateDataElementCharacteristicsSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpdeds.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpdeds.h index fb2dcb58..45808790 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtpdeds.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtpdeds.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTPrivateDataElementDefinitionSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -351,13 +351,13 @@ class DCMTK_DCMRT_EXPORT DRTPrivateDataElementDefinitionSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpfms.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpfms.h index 7f617ece..69f446a9 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtpfms.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtpfms.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTPrimaryFluenceModeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTPrimaryFluenceModeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpics.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpics.h index a92590b1..fa61fc86 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtpics.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtpics.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTPersonIdentificationCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTPersonIdentificationCodeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtplos.h b/dcmrt/include/dcmtk/dcmrt/seq/drtplos.h new file mode 100644 index 00000000..575dfc7a --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtplos.h @@ -0,0 +1,437 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTPlanOverviewSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTPLOS_H +#define DRTPLOS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtpros.h" // for PrescriptionOverviewSequence +#include "dcmtk/dcmrt/seq/drtrims.h" // for ReferencedImageSequence +#include "dcmtk/dcmrt/seq/drtrsss.h" // for ReferencedStructureSetSequence +#include "dcmtk/dcmrt/seq/drttscs.h" // for TreatmentSiteCodeSequence + + +/** Interface class for PlanOverviewSequence (300c,0116) + */ +class DCMTK_DCMRT_EXPORT DRTPlanOverviewSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get CurrentFractionNumber (3008,0022) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentFractionNumber(OFString &value, const signed long pos = 0) const; + + /** get CurrentFractionNumber (3008,0022) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentFractionNumber(Sint32 &value, const unsigned long pos = 0) const; + + /** get NumberOfFractionsIncluded (300c,0119) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getNumberOfFractionsIncluded(Uint16 &value, const unsigned long pos = 0) const; + + /** get PlanOverviewIndex (300c,0117) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getPlanOverviewIndex(Uint16 &value, const unsigned long pos = 0) const; + + /** get RTPlanLabel (300a,0002) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getRTPlanLabel(OFString &value, const signed long pos = 0) const; + + /** get TreatmentSite (3010,0077) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getTreatmentSite(OFString &value, const signed long pos = 0) const; + + // --- get DICOM sequence attributes --- + + /** get PrescriptionOverviewSequence (300c,0114) + * @return reference to sequence element + */ + DRTPrescriptionOverviewSequence &getPrescriptionOverviewSequence() + { return PrescriptionOverviewSequence; } + + /** get PrescriptionOverviewSequence (300c,0114) + * @return const reference to sequence element + */ + const DRTPrescriptionOverviewSequence &getPrescriptionOverviewSequence() const + { return PrescriptionOverviewSequence; } + + /** get ReferencedImageSequence (0008,1140) + * @return reference to sequence element + */ + DRTReferencedImageSequence &getReferencedImageSequence() + { return ReferencedImageSequence; } + + /** get ReferencedImageSequence (0008,1140) + * @return const reference to sequence element + */ + const DRTReferencedImageSequence &getReferencedImageSequence() const + { return ReferencedImageSequence; } + + /** get ReferencedStructureSetSequence (300c,0060) + * @return reference to sequence element + */ + DRTReferencedStructureSetSequence &getReferencedStructureSetSequence() + { return ReferencedStructureSetSequence; } + + /** get ReferencedStructureSetSequence (300c,0060) + * @return const reference to sequence element + */ + const DRTReferencedStructureSetSequence &getReferencedStructureSetSequence() const + { return ReferencedStructureSetSequence; } + + /** get TreatmentSiteCodeSequence (3010,0078) + * @return reference to sequence element + */ + DRTTreatmentSiteCodeSequence &getTreatmentSiteCodeSequence() + { return TreatmentSiteCodeSequence; } + + /** get TreatmentSiteCodeSequence (3010,0078) + * @return const reference to sequence element + */ + const DRTTreatmentSiteCodeSequence &getTreatmentSiteCodeSequence() const + { return TreatmentSiteCodeSequence; } + + // --- set DICOM attribute values --- + + /** set CurrentFractionNumber (3008,0022) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCurrentFractionNumber(const OFString &value, const OFBool check = OFTrue); + + /** set NumberOfFractionsIncluded (300c,0119) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setNumberOfFractionsIncluded(const Uint16 value, const unsigned long pos = 0); + + /** set PlanOverviewIndex (300c,0117) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setPlanOverviewIndex(const Uint16 value, const unsigned long pos = 0); + + /** set RTPlanLabel (300a,0002) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setRTPlanLabel(const OFString &value, const OFBool check = OFTrue); + + /** set TreatmentSite (3010,0077) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setTreatmentSite(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// CurrentFractionNumber (3008,0022) vr=IS, vm=1, type=1C + DcmIntegerString CurrentFractionNumber; + /// NumberOfFractionsIncluded (300c,0119) vr=US, vm=1, type=1C + DcmUnsignedShort NumberOfFractionsIncluded; + /// PlanOverviewIndex (300c,0117) vr=US, vm=1, type=1 + DcmUnsignedShort PlanOverviewIndex; + /// PrescriptionOverviewSequence (300c,0114) vr=SQ, vm=1, type=2 + DRTPrescriptionOverviewSequence PrescriptionOverviewSequence; + /// RTPlanLabel (300a,0002) vr=SH, vm=1, type=2 + DcmShortString RTPlanLabel; + /// ReferencedImageSequence (0008,1140) vr=SQ, vm=1, type=1C + DRTReferencedImageSequence ReferencedImageSequence; + /// ReferencedStructureSetSequence (300c,0060) vr=SQ, vm=1, type=1C + DRTReferencedStructureSetSequence ReferencedStructureSetSequence; + /// TreatmentSite (3010,0077) vr=LO, vm=1, type=2 + DcmLongString TreatmentSite; + /// TreatmentSiteCodeSequence (3010,0078) vr=SQ, vm=1, type=2 + DRTTreatmentSiteCodeSequence TreatmentSiteCodeSequence; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTPlanOverviewSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTPlanOverviewSequence(const DRTPlanOverviewSequence ©); + + /** destructor + */ + virtual ~DRTPlanOverviewSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTPlanOverviewSequence &operator=(const DRTPlanOverviewSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtporcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtporcs.h index 1476bbd0..6d1d2523 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtporcs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtporcs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTPurposeOfReferenceCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTPurposeOfReferenceCodeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtporis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtporis.h index f83c80b2..ea70035d 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtporis.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtporis.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTPhysiciansOfRecordIdentificationSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -20,6 +20,7 @@ #include "dcmtk/ofstd/oflist.h" // for standard list class #include "dcmtk/dcmrt/drttypes.h" // module-specific helper class #include "dcmtk/dcmrt/seq/drtics.h" // for InstitutionCodeSequence +#include "dcmtk/dcmrt/seq/drtidcs.h" // for InstitutionalDepartmentTypeCodeSequence #include "dcmtk/dcmrt/seq/drtpics.h" // for PersonIdentificationCodeSequence @@ -107,6 +108,13 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansOfRecordIdentificationSequence */ OFCondition getInstitutionName(OFString &value, const signed long pos = 0) const; + /** get InstitutionalDepartmentName (0008,1040) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getInstitutionalDepartmentName(OFString &value, const signed long pos = 0) const; + /** get PersonAddress (0040,1102) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -142,6 +150,18 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansOfRecordIdentificationSequence const DRTInstitutionCodeSequence &getInstitutionCodeSequence() const { return InstitutionCodeSequence; } + /** get InstitutionalDepartmentTypeCodeSequence (0008,1041) + * @return reference to sequence element + */ + DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() + { return InstitutionalDepartmentTypeCodeSequence; } + + /** get InstitutionalDepartmentTypeCodeSequence (0008,1041) + * @return const reference to sequence element + */ + const DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() const + { return InstitutionalDepartmentTypeCodeSequence; } + /** get PersonIdentificationCodeSequence (0040,1101) * @return reference to sequence element */ @@ -170,6 +190,13 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansOfRecordIdentificationSequence */ OFCondition setInstitutionName(const OFString &value, const OFBool check = OFTrue); + /** set InstitutionalDepartmentName (0008,1040) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setInstitutionalDepartmentName(const OFString &value, const OFBool check = OFTrue); + /** set PersonAddress (0040,1102) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (ST) and VM (1) if enabled @@ -202,6 +229,10 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansOfRecordIdentificationSequence DRTInstitutionCodeSequence InstitutionCodeSequence; /// InstitutionName (0008,0080) vr=LO, vm=1, type=1C DcmLongString InstitutionName; + /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3 + DcmLongString InstitutionalDepartmentName; + /// InstitutionalDepartmentTypeCodeSequence (0008,1041) vr=SQ, vm=1, type=3 + DRTInstitutionalDepartmentTypeCodeSequence InstitutionalDepartmentTypeCodeSequence; /// PersonAddress (0040,1102) vr=ST, vm=1, type=3 DcmShortText PersonAddress; /// PersonIdentificationCodeSequence (0040,1101) vr=SQ, vm=1, type=1 @@ -319,13 +350,13 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansOfRecordIdentificationSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtppcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtppcs.h index 1586453e..bb386b5e 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtppcs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtppcs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTPerformedProtocolCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -479,13 +479,13 @@ class DCMTK_DCMRT_EXPORT DRTPerformedProtocolCodeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpros.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpros.h new file mode 100644 index 00000000..fca5e7d9 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtpros.h @@ -0,0 +1,343 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTPrescriptionOverviewSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTPROS_H +#define DRTPROS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for PrescriptionOverviewSequence (300c,0114) + */ +class DCMTK_DCMRT_EXPORT DRTPrescriptionOverviewSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get EntityLongLabel (3010,0038) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getEntityLongLabel(OFString &value, const signed long pos = 0) const; + + /** get ReferencedROINumber (3006,0084) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedROINumber(OFString &value, const signed long pos = 0) const; + + /** get ReferencedROINumber (3006,0084) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedROINumber(Sint32 &value, const unsigned long pos = 0) const; + + /** get TotalPrescriptionDose (300c,0115) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getTotalPrescriptionDose(Float32 &value, const unsigned long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set EntityLongLabel (3010,0038) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setEntityLongLabel(const OFString &value, const OFBool check = OFTrue); + + /** set ReferencedROINumber (3006,0084) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedROINumber(const OFString &value, const OFBool check = OFTrue); + + /** set TotalPrescriptionDose (300c,0115) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setTotalPrescriptionDose(const Float32 value, const unsigned long pos = 0); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// EntityLongLabel (3010,0038) vr=LO, vm=1, type=1C + DcmLongString EntityLongLabel; + /// ReferencedROINumber (3006,0084) vr=IS, vm=1, type=3 + DcmIntegerString ReferencedROINumber; + /// TotalPrescriptionDose (300c,0115) vr=FL, vm=1, type=1 + DcmFloatingPointSingle TotalPrescriptionDose; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTPrescriptionOverviewSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTPrescriptionOverviewSequence(const DRTPrescriptionOverviewSequence ©); + + /** destructor + */ + virtual ~DRTPrescriptionOverviewSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTPrescriptionOverviewSequence &operator=(const DRTPrescriptionOverviewSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtprsis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtprsis.h index d47d64b7..cd14f965 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtprsis.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtprsis.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTPhysiciansReadingStudyIdentificationSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -20,6 +20,7 @@ #include "dcmtk/ofstd/oflist.h" // for standard list class #include "dcmtk/dcmrt/drttypes.h" // module-specific helper class #include "dcmtk/dcmrt/seq/drtics.h" // for InstitutionCodeSequence +#include "dcmtk/dcmrt/seq/drtidcs.h" // for InstitutionalDepartmentTypeCodeSequence #include "dcmtk/dcmrt/seq/drtpics.h" // for PersonIdentificationCodeSequence @@ -107,6 +108,13 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansReadingStudyIdentificationSequence */ OFCondition getInstitutionName(OFString &value, const signed long pos = 0) const; + /** get InstitutionalDepartmentName (0008,1040) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getInstitutionalDepartmentName(OFString &value, const signed long pos = 0) const; + /** get PersonAddress (0040,1102) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -142,6 +150,18 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansReadingStudyIdentificationSequence const DRTInstitutionCodeSequence &getInstitutionCodeSequence() const { return InstitutionCodeSequence; } + /** get InstitutionalDepartmentTypeCodeSequence (0008,1041) + * @return reference to sequence element + */ + DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() + { return InstitutionalDepartmentTypeCodeSequence; } + + /** get InstitutionalDepartmentTypeCodeSequence (0008,1041) + * @return const reference to sequence element + */ + const DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() const + { return InstitutionalDepartmentTypeCodeSequence; } + /** get PersonIdentificationCodeSequence (0040,1101) * @return reference to sequence element */ @@ -170,6 +190,13 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansReadingStudyIdentificationSequence */ OFCondition setInstitutionName(const OFString &value, const OFBool check = OFTrue); + /** set InstitutionalDepartmentName (0008,1040) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setInstitutionalDepartmentName(const OFString &value, const OFBool check = OFTrue); + /** set PersonAddress (0040,1102) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (ST) and VM (1) if enabled @@ -202,6 +229,10 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansReadingStudyIdentificationSequence DRTInstitutionCodeSequence InstitutionCodeSequence; /// InstitutionName (0008,0080) vr=LO, vm=1, type=1C DcmLongString InstitutionName; + /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3 + DcmLongString InstitutionalDepartmentName; + /// InstitutionalDepartmentTypeCodeSequence (0008,1041) vr=SQ, vm=1, type=3 + DRTInstitutionalDepartmentTypeCodeSequence InstitutionalDepartmentTypeCodeSequence; /// PersonAddress (0040,1102) vr=ST, vm=1, type=3 DcmShortText PersonAddress; /// PersonIdentificationCodeSequence (0040,1101) vr=SQ, vm=1, type=1 @@ -319,13 +350,13 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansReadingStudyIdentificationSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpscs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpscs.h index 7cb68f85..68bb6dd1 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtpscs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtpscs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTPatientSpeciesCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTPatientSpeciesCodeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpsics.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpsics.h index 3a2f478a..a9dd030b 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtpsics.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtpsics.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTPatientSizeCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTPatientSizeCodeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpss.h index c6d6576e..f091f93f 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtpss.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtpss.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTPatientSetupSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -456,13 +456,13 @@ class DCMTK_DCMRT_EXPORT DRTPatientSetupSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpsss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpsss.h index e161103e..734f1ecd 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtpsss.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtpsss.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTPredecessorStructureSetSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTPredecessorStructureSetSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpvis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpvis.h index 5b52268a..7942742b 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtpvis.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtpvis.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTPlannedVerificationImageSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -435,13 +435,13 @@ class DCMTK_DCMRT_EXPORT DRTPlannedVerificationImageSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtqds.h b/dcmrt/include/dcmtk/dcmrt/seq/drtqds.h index e8a39cc6..6d581201 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtqds.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtqds.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTQuantityDefinitionSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -21,6 +21,7 @@ #include "dcmtk/dcmrt/drttypes.h" // module-specific helper class #include "dcmtk/dcmrt/seq/drtccs.h" // for ConceptCodeSequence #include "dcmtk/dcmrt/seq/drtcncs.h" // for ConceptNameCodeSequence +#include "dcmtk/dcmrt/seq/drtcims.h" // for ContentItemModifierSequence #include "dcmtk/dcmrt/seq/drtmucs.h" // for MeasurementUnitsCodeSequence #include "dcmtk/dcmrt/seq/drtrsos.h" // for ReferencedSOPSequence @@ -143,6 +144,13 @@ class DCMTK_DCMRT_EXPORT DRTQuantityDefinitionSequence */ OFCondition getObservationDateTime(OFString &value, const signed long pos = 0) const; + /** get ObservationStartDateTime (0040,a033) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getObservationStartDateTime(OFString &value, const signed long pos = 0) const; + /** get PersonName (0040,a123) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -218,6 +226,18 @@ class DCMTK_DCMRT_EXPORT DRTQuantityDefinitionSequence const DRTConceptNameCodeSequence &getConceptNameCodeSequence() const { return ConceptNameCodeSequence; } + /** get ContentItemModifierSequence (0040,0441) + * @return reference to sequence element + */ + DRTContentItemModifierSequence &getContentItemModifierSequence() + { return ContentItemModifierSequence; } + + /** get ContentItemModifierSequence (0040,0441) + * @return const reference to sequence element + */ + const DRTContentItemModifierSequence &getContentItemModifierSequence() const + { return ContentItemModifierSequence; } + /** get MeasurementUnitsCodeSequence (0040,08ea) * @return reference to sequence element */ @@ -279,6 +299,13 @@ class DCMTK_DCMRT_EXPORT DRTQuantityDefinitionSequence */ OFCondition setObservationDateTime(const OFString &value, const OFBool check = OFTrue); + /** set ObservationStartDateTime (0040,a033) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setObservationStartDateTime(const OFString &value, const OFBool check = OFTrue); + /** set PersonName (0040,a123) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (PN) and VM (1) if enabled @@ -337,6 +364,8 @@ class DCMTK_DCMRT_EXPORT DRTQuantityDefinitionSequence DRTConceptCodeSequence ConceptCodeSequence; /// ConceptNameCodeSequence (0040,a043) vr=SQ, vm=1, type=1 DRTConceptNameCodeSequence ConceptNameCodeSequence; + /// ContentItemModifierSequence (0040,0441) vr=SQ, vm=1, type=3 + DRTContentItemModifierSequence ContentItemModifierSequence; /// Date (0040,a121) vr=DA, vm=1, type=1C DcmDate Date; /// DateTime (0040,a120) vr=DT, vm=1, type=1C @@ -349,6 +378,8 @@ class DCMTK_DCMRT_EXPORT DRTQuantityDefinitionSequence DcmDecimalString NumericValue; /// ObservationDateTime (0040,a032) vr=DT, vm=1, type=3 DcmDateTime ObservationDateTime; + /// ObservationStartDateTime (0040,a033) vr=DT, vm=1, type=3 + DcmDateTime ObservationStartDateTime; /// PersonName (0040,a123) vr=PN, vm=1, type=1C DcmPersonName PersonName; /// RationalDenominatorValue (0040,a163) vr=UL, vm=1-n, type=1C @@ -474,13 +505,13 @@ class DCMTK_DCMRT_EXPORT DRTQuantityDefinitionSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtras.h b/dcmrt/include/dcmtk/dcmrt/seq/drtras.h index 3702cf0c..ccd9b3c4 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtras.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtras.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTRequestAttributesSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -396,13 +396,13 @@ class DCMTK_DCMRT_EXPORT DRTRequestAttributesSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbas1.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbas1.h new file mode 100644 index 00000000..94ecd320 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrbas1.h @@ -0,0 +1,311 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTRBAS1_H +#define DRTRBAS1_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for ReferencedBrachyApplicationSetupSequence (300c,000a) in RTDoseModule + */ +class DCMTK_DCMRT_EXPORT DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get ReferencedBrachyApplicationSetupNumber (300c,000c) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedBrachyApplicationSetupNumber(OFString &value, const signed long pos = 0) const; + + /** get ReferencedBrachyApplicationSetupNumber (300c,000c) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedBrachyApplicationSetupNumber(Sint32 &value, const unsigned long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set ReferencedBrachyApplicationSetupNumber (300c,000c) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedBrachyApplicationSetupNumber(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// ReferencedBrachyApplicationSetupNumber (300c,000c) vr=IS, vm=1, type=1 + DcmIntegerString ReferencedBrachyApplicationSetupNumber; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule(const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule ©); + + /** destructor + */ + virtual ~DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule &operator=(const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbas2.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbas2.h index 0a0c3a71..7d23e3b7 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrbas2.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrbas2.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * - * Header file for class DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule + * Header file for class DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -21,9 +21,9 @@ #include "dcmtk/dcmrt/drttypes.h" // module-specific helper class -/** Interface class for ReferencedBrachyApplicationSetupSequence (300c,000a) in RTDoseModule +/** Interface class for ReferencedBrachyApplicationSetupSequence (300c,000a) in RTFractionSchemeModule */ -class DCMTK_DCMRT_EXPORT DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule +class DCMTK_DCMRT_EXPORT DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule : protected DRTTypes { @@ -91,6 +91,40 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBrachyApplicationSetupSequenceInRTDoseModu // --- get DICOM attribute values --- + /** get BrachyApplicationSetupDose (300a,00a4) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBrachyApplicationSetupDose(OFString &value, const signed long pos = 0) const; + + /** get BrachyApplicationSetupDose (300a,00a4) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBrachyApplicationSetupDose(Float64 &value, const unsigned long pos = 0) const; + + /** get BrachyApplicationSetupDoseSpecificationPoint (300a,00a2) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBrachyApplicationSetupDoseSpecificationPoint(OFString &value, const signed long pos = 0) const; + + /** get BrachyApplicationSetupDoseSpecificationPoint (300a,00a2) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBrachyApplicationSetupDoseSpecificationPoint(Float64 &value, const unsigned long pos = 0) const; + + /** get BrachyApplicationSetupDoseSpecificationPoint (300a,00a2) + * @param value reference to variable in which the value(s) should be stored + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBrachyApplicationSetupDoseSpecificationPoint(OFVector &value) const; + /** get ReferencedBrachyApplicationSetupNumber (300c,000c) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -105,8 +139,29 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBrachyApplicationSetupSequenceInRTDoseModu */ OFCondition getReferencedBrachyApplicationSetupNumber(Sint32 &value, const unsigned long pos = 0) const; + /** get ReferencedDoseReferenceUID (300a,0083) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedDoseReferenceUID(OFString &value, const signed long pos = 0) const; + // --- set DICOM attribute values --- + /** set BrachyApplicationSetupDose (300a,00a4) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setBrachyApplicationSetupDose(const OFString &value, const OFBool check = OFTrue); + + /** set BrachyApplicationSetupDoseSpecificationPoint (300a,00a2) + * @param value value to be set (possibly multi-valued) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (3) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setBrachyApplicationSetupDoseSpecificationPoint(const OFString &value, const OFBool check = OFTrue); + /** set ReferencedBrachyApplicationSetupNumber (300c,000c) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled @@ -114,13 +169,26 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBrachyApplicationSetupSequenceInRTDoseModu */ OFCondition setReferencedBrachyApplicationSetupNumber(const OFString &value, const OFBool check = OFTrue); + /** set ReferencedDoseReferenceUID (300a,0083) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedDoseReferenceUID(const OFString &value, const OFBool check = OFTrue); + private: /// internal flag used to mark the empty default item /*const*/ OFBool EmptyDefaultItem; + /// BrachyApplicationSetupDose (300a,00a4) vr=DS, vm=1, type=3 + DcmDecimalString BrachyApplicationSetupDose; + /// BrachyApplicationSetupDoseSpecificationPoint (300a,00a2) vr=DS, vm=3, type=3 + DcmDecimalString BrachyApplicationSetupDoseSpecificationPoint; /// ReferencedBrachyApplicationSetupNumber (300c,000c) vr=IS, vm=1, type=1 DcmIntegerString ReferencedBrachyApplicationSetupNumber; + /// ReferencedDoseReferenceUID (300a,0083) vr=UI, vm=1, type=3 + DcmUniqueIdentifier ReferencedDoseReferenceUID; }; @@ -129,22 +197,22 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBrachyApplicationSetupSequenceInRTDoseModu /** (default) constructor * @param emptyDefaultSequence internal flag used to mark the empty default sequence */ - DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule(const OFBool emptyDefaultSequence = OFFalse); + DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule(const OFBool emptyDefaultSequence = OFFalse); /** copy constructor * @param copy sequence object to be copied */ - DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule(const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule ©); + DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule(const DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule ©); /** destructor */ - virtual ~DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule(); + virtual ~DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule(); /** assignment operator * @param copy sequence object to be copied * @return reference to this object */ - DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule &operator=(const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule ©); + DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule &operator=(const DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule ©); // --- general methods --- @@ -230,13 +298,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBrachyApplicationSetupSequenceInRTDoseModu */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbas8.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbas8.h deleted file mode 100644 index 86b7f2e0..00000000 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrbas8.h +++ /dev/null @@ -1,363 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Header file for class DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#ifndef DRTRBAS8_H -#define DRTRBAS8_H - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/ofstd/oflist.h" // for standard list class -#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class - - -/** Interface class for ReferencedBrachyApplicationSetupSequence (300c,000a) in RTFractionSchemeModule - */ -class DCMTK_DCMRT_EXPORT DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule - : protected DRTTypes -{ - - public: - - /** Item class - */ - class DCMTK_DCMRT_EXPORT Item - : protected DRTTypes - { - - public: - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultItem flag used to mark the empty default item - */ - Item(const OFBool emptyDefaultItem = OFFalse); - - /** copy constructor - * @param copy item object to be copied - */ - Item(const Item ©); - - /** destructor - */ - virtual ~Item(); - - /** assignment operator - * @param copy item object to be copied - * @return reference to this object - */ - Item &operator=(const Item ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if item is empty - * @return OFTrue if item is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if item is valid, i.e.\ not the empty default item - * @return OFTrue if item is valid, OFFalse otherwise - */ - OFBool isValid() const; - - // --- input/output methods --- - - /** read elements from sequence item - * @param item reference to DICOM sequence item from which the elements should be read - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &item); - - /** write elements to sequence item - * @param item reference to DICOM sequence item to which the elements should be written - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &item); - - // --- get DICOM attribute values --- - - /** get BrachyApplicationSetupDose (300a,00a4) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBrachyApplicationSetupDose(OFString &value, const signed long pos = 0) const; - - /** get BrachyApplicationSetupDose (300a,00a4) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBrachyApplicationSetupDose(Float64 &value, const unsigned long pos = 0) const; - - /** get BrachyApplicationSetupDoseSpecificationPoint (300a,00a2) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBrachyApplicationSetupDoseSpecificationPoint(OFString &value, const signed long pos = 0) const; - - /** get BrachyApplicationSetupDoseSpecificationPoint (300a,00a2) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBrachyApplicationSetupDoseSpecificationPoint(Float64 &value, const unsigned long pos = 0) const; - - /** get BrachyApplicationSetupDoseSpecificationPoint (300a,00a2) - * @param value reference to variable in which the value(s) should be stored - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBrachyApplicationSetupDoseSpecificationPoint(OFVector &value) const; - - /** get ReferencedBrachyApplicationSetupNumber (300c,000c) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedBrachyApplicationSetupNumber(OFString &value, const signed long pos = 0) const; - - /** get ReferencedBrachyApplicationSetupNumber (300c,000c) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedBrachyApplicationSetupNumber(Sint32 &value, const unsigned long pos = 0) const; - - // --- set DICOM attribute values --- - - /** set BrachyApplicationSetupDose (300a,00a4) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setBrachyApplicationSetupDose(const OFString &value, const OFBool check = OFTrue); - - /** set BrachyApplicationSetupDoseSpecificationPoint (300a,00a2) - * @param value value to be set (possibly multi-valued) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (3) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setBrachyApplicationSetupDoseSpecificationPoint(const OFString &value, const OFBool check = OFTrue); - - /** set ReferencedBrachyApplicationSetupNumber (300c,000c) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setReferencedBrachyApplicationSetupNumber(const OFString &value, const OFBool check = OFTrue); - - private: - - /// internal flag used to mark the empty default item - /*const*/ OFBool EmptyDefaultItem; - - /// BrachyApplicationSetupDose (300a,00a4) vr=DS, vm=1, type=3 - DcmDecimalString BrachyApplicationSetupDose; - /// BrachyApplicationSetupDoseSpecificationPoint (300a,00a2) vr=DS, vm=3, type=3 - DcmDecimalString BrachyApplicationSetupDoseSpecificationPoint; - /// ReferencedBrachyApplicationSetupNumber (300c,000c) vr=IS, vm=1, type=1 - DcmIntegerString ReferencedBrachyApplicationSetupNumber; - - }; - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultSequence internal flag used to mark the empty default sequence - */ - DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule(const OFBool emptyDefaultSequence = OFFalse); - - /** copy constructor - * @param copy sequence object to be copied - */ - DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule(const DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule ©); - - /** destructor - */ - virtual ~DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule(); - - /** assignment operator - * @param copy sequence object to be copied - * @return reference to this object - */ - DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule &operator=(const DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if sequence is empty - * @return OFTrue if sequence is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if sequence is valid, i.e.\ not the empty default sequence - * @return OFTrue if sequence is valid, OFFalse otherwise - */ - OFBool isValid() const; - - /** get number of items in the sequence - * @return number of items - */ - size_t getNumberOfItems() const; - - /** goto first item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoFirstItem(); - - /** goto next item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoNextItem(); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num); - - /** get current item in the sequence - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getCurrentItem(Item *&item) const; - - /** get current item in the sequence - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getCurrentItem(); - - /** get current item in the sequence - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getCurrentItem() const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getItem(const size_t num, Item *&item); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getItem(const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getItem(const size_t num) const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &operator[](const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &operator[](const size_t num) const; - - /** add new item to the end of this sequence - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition addItem(Item *&item); - - /** insert new item into the sequence - * @param pos position where the new item is to be inserted (0..num) - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition insertItem(const size_t pos, Item *&item); - - /** remove particular item from the sequence - * @param pos position of the item to be removed (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition removeItem(const size_t pos); - - // --- input/output methods --- - - /** read sequence of items from dataset - * @param dataset reference to DICOM dataset from which the sequence should be read - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - /** write sequence of items to dataset - * @param dataset reference to DICOM dataset to which the sequence should be written - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - protected: - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListIterator(Item *) &iterator); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListConstIterator(Item *) &iterator) const; - - private: - - /// internal flag used to mark the empty default sequence - /*const*/ OFBool EmptyDefaultSequence; - - /// list of items in this sequence - OFList SequenceOfItems; - /// currently selected item - OFListIterator(Item *) CurrentItem; - /// empty default item - Item EmptyItem; - -}; - - -#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbdgs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbdgs.h new file mode 100644 index 00000000..f212a8f0 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrbdgs.h @@ -0,0 +1,422 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTRTBeamDelimiterGeometrySequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTRBDGS_H +#define DRTRBDGS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for RTBeamDelimiterGeometrySequence (300a,064c) + */ +class DCMTK_DCMRT_EXPORT DRTRTBeamDelimiterGeometrySequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get CenterOfCircularOutline (0018,1635) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCenterOfCircularOutline(Float64 &value, const unsigned long pos = 0) const; + + /** get DiameterOfCircularOutline (0018,1636) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getDiameterOfCircularOutline(Float64 &value, const unsigned long pos = 0) const; + + /** get NumberOfPolygonalVertices (0018,1637) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getNumberOfPolygonalVertices(Uint32 &value, const unsigned long pos = 0) const; + + /** get OutlineLeftVerticalEdge (0018,1631) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getOutlineLeftVerticalEdge(Float64 &value, const unsigned long pos = 0) const; + + /** get OutlineLowerHorizontalEdge (0018,1634) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getOutlineLowerHorizontalEdge(Float64 &value, const unsigned long pos = 0) const; + + /** get OutlineRightVerticalEdge (0018,1632) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getOutlineRightVerticalEdge(Float64 &value, const unsigned long pos = 0) const; + + /** get OutlineShapeType (0018,1630) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getOutlineShapeType(OFString &value, const signed long pos = 0) const; + + /** get OutlineUpperHorizontalEdge (0018,1633) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getOutlineUpperHorizontalEdge(Float64 &value, const unsigned long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set CenterOfCircularOutline (0018,1635) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=2 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCenterOfCircularOutline(const Float64 value, const unsigned long pos = 0); + + /** set DiameterOfCircularOutline (0018,1636) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setDiameterOfCircularOutline(const Float64 value, const unsigned long pos = 0); + + /** set NumberOfPolygonalVertices (0018,1637) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setNumberOfPolygonalVertices(const Uint32 value, const unsigned long pos = 0); + + /** set OutlineLeftVerticalEdge (0018,1631) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setOutlineLeftVerticalEdge(const Float64 value, const unsigned long pos = 0); + + /** set OutlineLowerHorizontalEdge (0018,1634) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setOutlineLowerHorizontalEdge(const Float64 value, const unsigned long pos = 0); + + /** set OutlineRightVerticalEdge (0018,1632) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setOutlineRightVerticalEdge(const Float64 value, const unsigned long pos = 0); + + /** set OutlineShapeType (0018,1630) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setOutlineShapeType(const OFString &value, const OFBool check = OFTrue); + + /** set OutlineUpperHorizontalEdge (0018,1633) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setOutlineUpperHorizontalEdge(const Float64 value, const unsigned long pos = 0); + + // --- all other attributes (without get/set methods) --- + + // - VerticesOfThePolygonalOutline (0018,1638) + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// CenterOfCircularOutline (0018,1635) vr=FD, vm=2, type=1C + DcmFloatingPointDouble CenterOfCircularOutline; + /// DiameterOfCircularOutline (0018,1636) vr=FD, vm=1, type=1C + DcmFloatingPointDouble DiameterOfCircularOutline; + /// NumberOfPolygonalVertices (0018,1637) vr=UL, vm=1, type=1C + DcmUnsignedLong NumberOfPolygonalVertices; + /// OutlineLeftVerticalEdge (0018,1631) vr=FD, vm=1, type=1C + DcmFloatingPointDouble OutlineLeftVerticalEdge; + /// OutlineLowerHorizontalEdge (0018,1634) vr=FD, vm=1, type=1C + DcmFloatingPointDouble OutlineLowerHorizontalEdge; + /// OutlineRightVerticalEdge (0018,1632) vr=FD, vm=1, type=1C + DcmFloatingPointDouble OutlineRightVerticalEdge; + /// OutlineShapeType (0018,1630) vr=CS, vm=1, type=1 + DcmCodeString OutlineShapeType; + /// OutlineUpperHorizontalEdge (0018,1633) vr=FD, vm=1, type=1C + DcmFloatingPointDouble OutlineUpperHorizontalEdge; + /// VerticesOfThePolygonalOutline (0018,1638) vr=OF, vm=1, type=1C + DcmOtherFloat VerticesOfThePolygonalOutline; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTRTBeamDelimiterGeometrySequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTRTBeamDelimiterGeometrySequence(const DRTRTBeamDelimiterGeometrySequence ©); + + /** destructor + */ + virtual ~DRTRTBeamDelimiterGeometrySequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTRTBeamDelimiterGeometrySequence &operator=(const DRTRTBeamDelimiterGeometrySequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbls.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbls.h index e7e85fa3..d6023176 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrbls.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrbls.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTRecordedBlockSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -19,6 +19,7 @@ #include "dcmtk/ofstd/oflist.h" // for standard list class #include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtrbss.h" // for RecordedBlockSlabSequence /** Interface class for RecordedBlockSequence (3008,00d0) @@ -112,6 +113,20 @@ class DCMTK_DCMRT_EXPORT DRTRecordedBlockSequence */ OFCondition getBlockTrayID(OFString &value, const signed long pos = 0) const; + /** get NumberOfBlockSlabItems (300a,0440) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getNumberOfBlockSlabItems(OFString &value, const signed long pos = 0) const; + + /** get NumberOfBlockSlabItems (300a,0440) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getNumberOfBlockSlabItems(Sint32 &value, const unsigned long pos = 0) const; + /** get ReferencedBlockNumber (300c,00e0) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -126,6 +141,20 @@ class DCMTK_DCMRT_EXPORT DRTRecordedBlockSequence */ OFCondition getReferencedBlockNumber(Sint32 &value, const unsigned long pos = 0) const; + // --- get DICOM sequence attributes --- + + /** get RecordedBlockSlabSequence (3008,00d1) + * @return reference to sequence element + */ + DRTRecordedBlockSlabSequence &getRecordedBlockSlabSequence() + { return RecordedBlockSlabSequence; } + + /** get RecordedBlockSlabSequence (3008,00d1) + * @return const reference to sequence element + */ + const DRTRecordedBlockSlabSequence &getRecordedBlockSlabSequence() const + { return RecordedBlockSlabSequence; } + // --- set DICOM attribute values --- /** set AccessoryCode (300a,00f9) @@ -149,6 +178,13 @@ class DCMTK_DCMRT_EXPORT DRTRecordedBlockSequence */ OFCondition setBlockTrayID(const OFString &value, const OFBool check = OFTrue); + /** set NumberOfBlockSlabItems (300a,0440) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setNumberOfBlockSlabItems(const OFString &value, const OFBool check = OFTrue); + /** set ReferencedBlockNumber (300c,00e0) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled @@ -167,6 +203,10 @@ class DCMTK_DCMRT_EXPORT DRTRecordedBlockSequence DcmLongString BlockName; /// BlockTrayID (300a,00f5) vr=SH, vm=1, type=3 DcmShortString BlockTrayID; + /// NumberOfBlockSlabItems (300a,0440) vr=IS, vm=1, type=3 + DcmIntegerString NumberOfBlockSlabItems; + /// RecordedBlockSlabSequence (3008,00d1) vr=SQ, vm=1, type=1C + DRTRecordedBlockSlabSequence RecordedBlockSlabSequence; /// ReferencedBlockNumber (300c,00e0) vr=IS, vm=1, type=1 DcmIntegerString ReferencedBlockNumber; @@ -278,13 +318,13 @@ class DCMTK_DCMRT_EXPORT DRTRecordedBlockSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbos1.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbos1.h index c2a13940..d2169ad3 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrbos1.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrbos1.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTReferencedBolusSequenceInRTBeamsModule * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -278,13 +278,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBolusSequenceInRTBeamsModule */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbos2.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbos2.h new file mode 100644 index 00000000..eb9fa904 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrbos2.h @@ -0,0 +1,327 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTReferencedBolusSequenceInRTIonBeamsModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTRBOS2_H +#define DRTRBOS2_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for ReferencedBolusSequence (300c,00b0) in RTIonBeamsModule + */ +class DCMTK_DCMRT_EXPORT DRTReferencedBolusSequenceInRTIonBeamsModule + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get AccessoryCode (300a,00f9) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const; + + /** get ReferencedROINumber (3006,0084) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedROINumber(OFString &value, const signed long pos = 0) const; + + /** get ReferencedROINumber (3006,0084) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedROINumber(Sint32 &value, const unsigned long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set AccessoryCode (300a,00f9) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue); + + /** set ReferencedROINumber (3006,0084) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedROINumber(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3 + DcmLongString AccessoryCode; + /// ReferencedROINumber (3006,0084) vr=IS, vm=1, type=1 + DcmIntegerString ReferencedROINumber; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTReferencedBolusSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTReferencedBolusSequenceInRTIonBeamsModule(const DRTReferencedBolusSequenceInRTIonBeamsModule ©); + + /** destructor + */ + virtual ~DRTReferencedBolusSequenceInRTIonBeamsModule(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTReferencedBolusSequenceInRTIonBeamsModule &operator=(const DRTReferencedBolusSequenceInRTIonBeamsModule ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbos3.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbos3.h new file mode 100644 index 00000000..4a4d742b --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrbos3.h @@ -0,0 +1,327 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTRBOS3_H +#define DRTRBOS3_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for ReferencedBolusSequence (300c,00b0) in RTIonBeamsSessionRecordModule + */ +class DCMTK_DCMRT_EXPORT DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get AccessoryCode (300a,00f9) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const; + + /** get ReferencedROINumber (3006,0084) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedROINumber(OFString &value, const signed long pos = 0) const; + + /** get ReferencedROINumber (3006,0084) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedROINumber(Sint32 &value, const unsigned long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set AccessoryCode (300a,00f9) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue); + + /** set ReferencedROINumber (3006,0084) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedROINumber(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3 + DcmLongString AccessoryCode; + /// ReferencedROINumber (3006,0084) vr=IS, vm=1, type=1 + DcmIntegerString ReferencedROINumber; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule(const DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule ©); + + /** destructor + */ + virtual ~DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule &operator=(const DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbos6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbos6.h deleted file mode 100644 index 469ddc40..00000000 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrbos6.h +++ /dev/null @@ -1,327 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Header file for class DRTReferencedBolusSequenceInRTIonBeamsModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#ifndef DRTRBOS6_H -#define DRTRBOS6_H - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/ofstd/oflist.h" // for standard list class -#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class - - -/** Interface class for ReferencedBolusSequence (300c,00b0) in RTIonBeamsModule - */ -class DCMTK_DCMRT_EXPORT DRTReferencedBolusSequenceInRTIonBeamsModule - : protected DRTTypes -{ - - public: - - /** Item class - */ - class DCMTK_DCMRT_EXPORT Item - : protected DRTTypes - { - - public: - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultItem flag used to mark the empty default item - */ - Item(const OFBool emptyDefaultItem = OFFalse); - - /** copy constructor - * @param copy item object to be copied - */ - Item(const Item ©); - - /** destructor - */ - virtual ~Item(); - - /** assignment operator - * @param copy item object to be copied - * @return reference to this object - */ - Item &operator=(const Item ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if item is empty - * @return OFTrue if item is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if item is valid, i.e.\ not the empty default item - * @return OFTrue if item is valid, OFFalse otherwise - */ - OFBool isValid() const; - - // --- input/output methods --- - - /** read elements from sequence item - * @param item reference to DICOM sequence item from which the elements should be read - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &item); - - /** write elements to sequence item - * @param item reference to DICOM sequence item to which the elements should be written - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &item); - - // --- get DICOM attribute values --- - - /** get AccessoryCode (300a,00f9) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const; - - /** get ReferencedROINumber (3006,0084) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedROINumber(OFString &value, const signed long pos = 0) const; - - /** get ReferencedROINumber (3006,0084) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedROINumber(Sint32 &value, const unsigned long pos = 0) const; - - // --- set DICOM attribute values --- - - /** set AccessoryCode (300a,00f9) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue); - - /** set ReferencedROINumber (3006,0084) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setReferencedROINumber(const OFString &value, const OFBool check = OFTrue); - - private: - - /// internal flag used to mark the empty default item - /*const*/ OFBool EmptyDefaultItem; - - /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3 - DcmLongString AccessoryCode; - /// ReferencedROINumber (3006,0084) vr=IS, vm=1, type=1 - DcmIntegerString ReferencedROINumber; - - }; - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultSequence internal flag used to mark the empty default sequence - */ - DRTReferencedBolusSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence = OFFalse); - - /** copy constructor - * @param copy sequence object to be copied - */ - DRTReferencedBolusSequenceInRTIonBeamsModule(const DRTReferencedBolusSequenceInRTIonBeamsModule ©); - - /** destructor - */ - virtual ~DRTReferencedBolusSequenceInRTIonBeamsModule(); - - /** assignment operator - * @param copy sequence object to be copied - * @return reference to this object - */ - DRTReferencedBolusSequenceInRTIonBeamsModule &operator=(const DRTReferencedBolusSequenceInRTIonBeamsModule ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if sequence is empty - * @return OFTrue if sequence is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if sequence is valid, i.e.\ not the empty default sequence - * @return OFTrue if sequence is valid, OFFalse otherwise - */ - OFBool isValid() const; - - /** get number of items in the sequence - * @return number of items - */ - size_t getNumberOfItems() const; - - /** goto first item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoFirstItem(); - - /** goto next item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoNextItem(); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num); - - /** get current item in the sequence - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getCurrentItem(Item *&item) const; - - /** get current item in the sequence - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getCurrentItem(); - - /** get current item in the sequence - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getCurrentItem() const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getItem(const size_t num, Item *&item); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getItem(const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getItem(const size_t num) const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &operator[](const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &operator[](const size_t num) const; - - /** add new item to the end of this sequence - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition addItem(Item *&item); - - /** insert new item into the sequence - * @param pos position where the new item is to be inserted (0..num) - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition insertItem(const size_t pos, Item *&item); - - /** remove particular item from the sequence - * @param pos position of the item to be removed (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition removeItem(const size_t pos); - - // --- input/output methods --- - - /** read sequence of items from dataset - * @param dataset reference to DICOM dataset from which the sequence should be read - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - /** write sequence of items to dataset - * @param dataset reference to DICOM dataset to which the sequence should be written - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - protected: - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListIterator(Item *) &iterator); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListConstIterator(Item *) &iterator) const; - - private: - - /// internal flag used to mark the empty default sequence - /*const*/ OFBool EmptyDefaultSequence; - - /// list of items in this sequence - OFList SequenceOfItems; - /// currently selected item - OFListIterator(Item *) CurrentItem; - /// empty default item - Item EmptyItem; - -}; - - -#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbos7.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbos7.h deleted file mode 100644 index 011a0b34..00000000 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrbos7.h +++ /dev/null @@ -1,327 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Header file for class DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#ifndef DRTRBOS7_H -#define DRTRBOS7_H - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/ofstd/oflist.h" // for standard list class -#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class - - -/** Interface class for ReferencedBolusSequence (300c,00b0) in RTIonBeamsSessionRecordModule - */ -class DCMTK_DCMRT_EXPORT DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule - : protected DRTTypes -{ - - public: - - /** Item class - */ - class DCMTK_DCMRT_EXPORT Item - : protected DRTTypes - { - - public: - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultItem flag used to mark the empty default item - */ - Item(const OFBool emptyDefaultItem = OFFalse); - - /** copy constructor - * @param copy item object to be copied - */ - Item(const Item ©); - - /** destructor - */ - virtual ~Item(); - - /** assignment operator - * @param copy item object to be copied - * @return reference to this object - */ - Item &operator=(const Item ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if item is empty - * @return OFTrue if item is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if item is valid, i.e.\ not the empty default item - * @return OFTrue if item is valid, OFFalse otherwise - */ - OFBool isValid() const; - - // --- input/output methods --- - - /** read elements from sequence item - * @param item reference to DICOM sequence item from which the elements should be read - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &item); - - /** write elements to sequence item - * @param item reference to DICOM sequence item to which the elements should be written - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &item); - - // --- get DICOM attribute values --- - - /** get AccessoryCode (300a,00f9) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const; - - /** get ReferencedROINumber (3006,0084) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedROINumber(OFString &value, const signed long pos = 0) const; - - /** get ReferencedROINumber (3006,0084) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedROINumber(Sint32 &value, const unsigned long pos = 0) const; - - // --- set DICOM attribute values --- - - /** set AccessoryCode (300a,00f9) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue); - - /** set ReferencedROINumber (3006,0084) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setReferencedROINumber(const OFString &value, const OFBool check = OFTrue); - - private: - - /// internal flag used to mark the empty default item - /*const*/ OFBool EmptyDefaultItem; - - /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3 - DcmLongString AccessoryCode; - /// ReferencedROINumber (3006,0084) vr=IS, vm=1, type=1 - DcmIntegerString ReferencedROINumber; - - }; - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultSequence internal flag used to mark the empty default sequence - */ - DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence = OFFalse); - - /** copy constructor - * @param copy sequence object to be copied - */ - DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule(const DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule ©); - - /** destructor - */ - virtual ~DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule(); - - /** assignment operator - * @param copy sequence object to be copied - * @return reference to this object - */ - DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule &operator=(const DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if sequence is empty - * @return OFTrue if sequence is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if sequence is valid, i.e.\ not the empty default sequence - * @return OFTrue if sequence is valid, OFFalse otherwise - */ - OFBool isValid() const; - - /** get number of items in the sequence - * @return number of items - */ - size_t getNumberOfItems() const; - - /** goto first item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoFirstItem(); - - /** goto next item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoNextItem(); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num); - - /** get current item in the sequence - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getCurrentItem(Item *&item) const; - - /** get current item in the sequence - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getCurrentItem(); - - /** get current item in the sequence - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getCurrentItem() const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getItem(const size_t num, Item *&item); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getItem(const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getItem(const size_t num) const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &operator[](const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &operator[](const size_t num) const; - - /** add new item to the end of this sequence - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition addItem(Item *&item); - - /** insert new item into the sequence - * @param pos position where the new item is to be inserted (0..num) - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition insertItem(const size_t pos, Item *&item); - - /** remove particular item from the sequence - * @param pos position of the item to be removed (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition removeItem(const size_t pos); - - // --- input/output methods --- - - /** read sequence of items from dataset - * @param dataset reference to DICOM dataset from which the sequence should be read - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - /** write sequence of items to dataset - * @param dataset reference to DICOM dataset to which the sequence should be written - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - protected: - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListIterator(Item *) &iterator); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListConstIterator(Item *) &iterator) const; - - private: - - /// internal flag used to mark the empty default sequence - /*const*/ OFBool EmptyDefaultSequence; - - /// list of items in this sequence - OFList SequenceOfItems; - /// currently selected item - OFListIterator(Item *) CurrentItem; - /// empty default item - Item EmptyItem; - -}; - - -#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbs1.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbs1.h new file mode 100644 index 00000000..018b87f4 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrbs1.h @@ -0,0 +1,328 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTReferencedBeamSequenceInRTDoseModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTRBS1_H +#define DRTRBS1_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtrcps.h" // for ReferencedControlPointSequence + + +/** Interface class for ReferencedBeamSequence (300c,0004) in RTDoseModule + */ +class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTDoseModule + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get ReferencedBeamNumber (300c,0006) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedBeamNumber(OFString &value, const signed long pos = 0) const; + + /** get ReferencedBeamNumber (300c,0006) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedBeamNumber(Sint32 &value, const unsigned long pos = 0) const; + + // --- get DICOM sequence attributes --- + + /** get ReferencedControlPointSequence (300c,00f2) + * @return reference to sequence element + */ + DRTReferencedControlPointSequence &getReferencedControlPointSequence() + { return ReferencedControlPointSequence; } + + /** get ReferencedControlPointSequence (300c,00f2) + * @return const reference to sequence element + */ + const DRTReferencedControlPointSequence &getReferencedControlPointSequence() const + { return ReferencedControlPointSequence; } + + // --- set DICOM attribute values --- + + /** set ReferencedBeamNumber (300c,0006) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedBeamNumber(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// ReferencedBeamNumber (300c,0006) vr=IS, vm=1, type=1 + DcmIntegerString ReferencedBeamNumber; + /// ReferencedControlPointSequence (300c,00f2) vr=SQ, vm=1, type=1C + DRTReferencedControlPointSequence ReferencedControlPointSequence; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTReferencedBeamSequenceInRTDoseModule(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTReferencedBeamSequenceInRTDoseModule(const DRTReferencedBeamSequenceInRTDoseModule ©); + + /** destructor + */ + virtual ~DRTReferencedBeamSequenceInRTDoseModule(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTReferencedBeamSequenceInRTDoseModule &operator=(const DRTReferencedBeamSequenceInRTDoseModule ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbs2.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbs2.h index e3631a5a..e6833308 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrbs2.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrbs2.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * - * Header file for class DRTReferencedBeamSequenceInRTDoseModule + * Header file for class DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -19,12 +19,13 @@ #include "dcmtk/ofstd/oflist.h" // for standard list class #include "dcmtk/dcmrt/drttypes.h" // module-specific helper class -#include "dcmtk/dcmrt/seq/drtrcps.h" // for ReferencedControlPointSequence +#include "dcmtk/dcmrt/seq/drtdccs.h" // for DoseCalibrationConditionsSequence +#include "dcmtk/dcmrt/seq/drtrdcks.h" // for RadiationDeviceConfigurationAndCommissioningKeySequence -/** Interface class for ReferencedBeamSequence (300c,0004) in RTDoseModule +/** Interface class for ReferencedBeamSequence (300c,0004) in RTGeneralTreatmentRecordModule */ -class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTDoseModule +class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule : protected DRTTypes { @@ -92,6 +93,76 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTDoseModule // --- get DICOM attribute values --- + /** get AlternateBeamDose (300a,0091) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getAlternateBeamDose(OFString &value, const signed long pos = 0) const; + + /** get AlternateBeamDose (300a,0091) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getAlternateBeamDose(Float64 &value, const unsigned long pos = 0) const; + + /** get AlternateBeamDoseType (300a,0092) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getAlternateBeamDoseType(OFString &value, const signed long pos = 0) const; + + /** get BeamDeliveryDurationLimit (300a,00c5) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBeamDeliveryDurationLimit(Float64 &value, const unsigned long pos = 0) const; + + /** get BeamDose (300a,0084) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBeamDose(OFString &value, const signed long pos = 0) const; + + /** get BeamDose (300a,0084) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBeamDose(Float64 &value, const unsigned long pos = 0) const; + + /** get BeamDoseType (300a,0090) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBeamDoseType(OFString &value, const signed long pos = 0) const; + + /** get BeamMeterset (300a,0086) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBeamMeterset(OFString &value, const signed long pos = 0) const; + + /** get BeamMeterset (300a,0086) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBeamMeterset(Float64 &value, const unsigned long pos = 0) const; + + /** get DoseCalibrationConditionsVerifiedFlag (300c,0123) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getDoseCalibrationConditionsVerifiedFlag(OFString &value, const signed long pos = 0) const; + /** get ReferencedBeamNumber (300c,0006) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -106,22 +177,90 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTDoseModule */ OFCondition getReferencedBeamNumber(Sint32 &value, const unsigned long pos = 0) const; + /** get ReferencedDoseReferenceUID (300a,0083) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedDoseReferenceUID(OFString &value, const signed long pos = 0) const; + // --- get DICOM sequence attributes --- - /** get ReferencedControlPointSequence (300c,00f2) + /** get DoseCalibrationConditionsSequence (300c,0120) * @return reference to sequence element */ - DRTReferencedControlPointSequence &getReferencedControlPointSequence() - { return ReferencedControlPointSequence; } + DRTDoseCalibrationConditionsSequence &getDoseCalibrationConditionsSequence() + { return DoseCalibrationConditionsSequence; } - /** get ReferencedControlPointSequence (300c,00f2) + /** get DoseCalibrationConditionsSequence (300c,0120) * @return const reference to sequence element */ - const DRTReferencedControlPointSequence &getReferencedControlPointSequence() const - { return ReferencedControlPointSequence; } + const DRTDoseCalibrationConditionsSequence &getDoseCalibrationConditionsSequence() const + { return DoseCalibrationConditionsSequence; } + + /** get RadiationDeviceConfigurationAndCommissioningKeySequence (300a,065a) + * @return reference to sequence element + */ + DRTRadiationDeviceConfigurationAndCommissioningKeySequence &getRadiationDeviceConfigurationAndCommissioningKeySequence() + { return RadiationDeviceConfigurationAndCommissioningKeySequence; } + + /** get RadiationDeviceConfigurationAndCommissioningKeySequence (300a,065a) + * @return const reference to sequence element + */ + const DRTRadiationDeviceConfigurationAndCommissioningKeySequence &getRadiationDeviceConfigurationAndCommissioningKeySequence() const + { return RadiationDeviceConfigurationAndCommissioningKeySequence; } // --- set DICOM attribute values --- + /** set AlternateBeamDose (300a,0091) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setAlternateBeamDose(const OFString &value, const OFBool check = OFTrue); + + /** set AlternateBeamDoseType (300a,0092) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setAlternateBeamDoseType(const OFString &value, const OFBool check = OFTrue); + + /** set BeamDeliveryDurationLimit (300a,00c5) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setBeamDeliveryDurationLimit(const Float64 value, const unsigned long pos = 0); + + /** set BeamDose (300a,0084) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setBeamDose(const OFString &value, const OFBool check = OFTrue); + + /** set BeamDoseType (300a,0090) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setBeamDoseType(const OFString &value, const OFBool check = OFTrue); + + /** set BeamMeterset (300a,0086) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setBeamMeterset(const OFString &value, const OFBool check = OFTrue); + + /** set DoseCalibrationConditionsVerifiedFlag (300c,0123) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setDoseCalibrationConditionsVerifiedFlag(const OFString &value, const OFBool check = OFTrue); + /** set ReferencedBeamNumber (300c,0006) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled @@ -129,15 +268,40 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTDoseModule */ OFCondition setReferencedBeamNumber(const OFString &value, const OFBool check = OFTrue); + /** set ReferencedDoseReferenceUID (300a,0083) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedDoseReferenceUID(const OFString &value, const OFBool check = OFTrue); + private: /// internal flag used to mark the empty default item /*const*/ OFBool EmptyDefaultItem; + /// AlternateBeamDose (300a,0091) vr=DS, vm=1, type=3 + DcmDecimalString AlternateBeamDose; + /// AlternateBeamDoseType (300a,0092) vr=CS, vm=1, type=1C + DcmCodeString AlternateBeamDoseType; + /// BeamDeliveryDurationLimit (300a,00c5) vr=FD, vm=1, type=3 + DcmFloatingPointDouble BeamDeliveryDurationLimit; + /// BeamDose (300a,0084) vr=DS, vm=1, type=3 + DcmDecimalString BeamDose; + /// BeamDoseType (300a,0090) vr=CS, vm=1, type=1C + DcmCodeString BeamDoseType; + /// BeamMeterset (300a,0086) vr=DS, vm=1, type=3 + DcmDecimalString BeamMeterset; + /// DoseCalibrationConditionsSequence (300c,0120) vr=SQ, vm=1, type=1C + DRTDoseCalibrationConditionsSequence DoseCalibrationConditionsSequence; + /// DoseCalibrationConditionsVerifiedFlag (300c,0123) vr=CS, vm=1, type=3 + DcmCodeString DoseCalibrationConditionsVerifiedFlag; + /// RadiationDeviceConfigurationAndCommissioningKeySequence (300a,065a) vr=SQ, vm=1, type=1C + DRTRadiationDeviceConfigurationAndCommissioningKeySequence RadiationDeviceConfigurationAndCommissioningKeySequence; /// ReferencedBeamNumber (300c,0006) vr=IS, vm=1, type=1 DcmIntegerString ReferencedBeamNumber; - /// ReferencedControlPointSequence (300c,00f2) vr=SQ, vm=1, type=1C - DRTReferencedControlPointSequence ReferencedControlPointSequence; + /// ReferencedDoseReferenceUID (300a,0083) vr=UI, vm=1, type=3 + DcmUniqueIdentifier ReferencedDoseReferenceUID; }; @@ -146,22 +310,22 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTDoseModule /** (default) constructor * @param emptyDefaultSequence internal flag used to mark the empty default sequence */ - DRTReferencedBeamSequenceInRTDoseModule(const OFBool emptyDefaultSequence = OFFalse); + DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule(const OFBool emptyDefaultSequence = OFFalse); /** copy constructor * @param copy sequence object to be copied */ - DRTReferencedBeamSequenceInRTDoseModule(const DRTReferencedBeamSequenceInRTDoseModule ©); + DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule(const DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule ©); /** destructor */ - virtual ~DRTReferencedBeamSequenceInRTDoseModule(); + virtual ~DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule(); /** assignment operator * @param copy sequence object to be copied * @return reference to this object */ - DRTReferencedBeamSequenceInRTDoseModule &operator=(const DRTReferencedBeamSequenceInRTDoseModule ©); + DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule &operator=(const DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule ©); // --- general methods --- @@ -247,13 +411,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTDoseModule */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbs3.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbs3.h new file mode 100644 index 00000000..26e399c1 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrbs3.h @@ -0,0 +1,492 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTReferencedBeamSequenceInRTFractionSchemeModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTRBS3_H +#define DRTRBS3_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtdccs.h" // for DoseCalibrationConditionsSequence +#include "dcmtk/dcmrt/seq/drtrdcks.h" // for RadiationDeviceConfigurationAndCommissioningKeySequence + + +/** Interface class for ReferencedBeamSequence (300c,0004) in RTFractionSchemeModule + */ +class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTFractionSchemeModule + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get AlternateBeamDose (300a,0091) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getAlternateBeamDose(OFString &value, const signed long pos = 0) const; + + /** get AlternateBeamDose (300a,0091) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getAlternateBeamDose(Float64 &value, const unsigned long pos = 0) const; + + /** get AlternateBeamDoseType (300a,0092) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getAlternateBeamDoseType(OFString &value, const signed long pos = 0) const; + + /** get BeamDeliveryDurationLimit (300a,00c5) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBeamDeliveryDurationLimit(Float64 &value, const unsigned long pos = 0) const; + + /** get BeamDose (300a,0084) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBeamDose(OFString &value, const signed long pos = 0) const; + + /** get BeamDose (300a,0084) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBeamDose(Float64 &value, const unsigned long pos = 0) const; + + /** get BeamDoseType (300a,0090) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBeamDoseType(OFString &value, const signed long pos = 0) const; + + /** get BeamMeterset (300a,0086) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBeamMeterset(OFString &value, const signed long pos = 0) const; + + /** get BeamMeterset (300a,0086) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBeamMeterset(Float64 &value, const unsigned long pos = 0) const; + + /** get DoseCalibrationConditionsVerifiedFlag (300c,0123) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getDoseCalibrationConditionsVerifiedFlag(OFString &value, const signed long pos = 0) const; + + /** get ReferencedBeamNumber (300c,0006) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedBeamNumber(OFString &value, const signed long pos = 0) const; + + /** get ReferencedBeamNumber (300c,0006) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedBeamNumber(Sint32 &value, const unsigned long pos = 0) const; + + /** get ReferencedDoseReferenceUID (300a,0083) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedDoseReferenceUID(OFString &value, const signed long pos = 0) const; + + // --- get DICOM sequence attributes --- + + /** get DoseCalibrationConditionsSequence (300c,0120) + * @return reference to sequence element + */ + DRTDoseCalibrationConditionsSequence &getDoseCalibrationConditionsSequence() + { return DoseCalibrationConditionsSequence; } + + /** get DoseCalibrationConditionsSequence (300c,0120) + * @return const reference to sequence element + */ + const DRTDoseCalibrationConditionsSequence &getDoseCalibrationConditionsSequence() const + { return DoseCalibrationConditionsSequence; } + + /** get RadiationDeviceConfigurationAndCommissioningKeySequence (300a,065a) + * @return reference to sequence element + */ + DRTRadiationDeviceConfigurationAndCommissioningKeySequence &getRadiationDeviceConfigurationAndCommissioningKeySequence() + { return RadiationDeviceConfigurationAndCommissioningKeySequence; } + + /** get RadiationDeviceConfigurationAndCommissioningKeySequence (300a,065a) + * @return const reference to sequence element + */ + const DRTRadiationDeviceConfigurationAndCommissioningKeySequence &getRadiationDeviceConfigurationAndCommissioningKeySequence() const + { return RadiationDeviceConfigurationAndCommissioningKeySequence; } + + // --- set DICOM attribute values --- + + /** set AlternateBeamDose (300a,0091) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setAlternateBeamDose(const OFString &value, const OFBool check = OFTrue); + + /** set AlternateBeamDoseType (300a,0092) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setAlternateBeamDoseType(const OFString &value, const OFBool check = OFTrue); + + /** set BeamDeliveryDurationLimit (300a,00c5) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setBeamDeliveryDurationLimit(const Float64 value, const unsigned long pos = 0); + + /** set BeamDose (300a,0084) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setBeamDose(const OFString &value, const OFBool check = OFTrue); + + /** set BeamDoseType (300a,0090) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setBeamDoseType(const OFString &value, const OFBool check = OFTrue); + + /** set BeamMeterset (300a,0086) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setBeamMeterset(const OFString &value, const OFBool check = OFTrue); + + /** set DoseCalibrationConditionsVerifiedFlag (300c,0123) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setDoseCalibrationConditionsVerifiedFlag(const OFString &value, const OFBool check = OFTrue); + + /** set ReferencedBeamNumber (300c,0006) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedBeamNumber(const OFString &value, const OFBool check = OFTrue); + + /** set ReferencedDoseReferenceUID (300a,0083) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedDoseReferenceUID(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// AlternateBeamDose (300a,0091) vr=DS, vm=1, type=3 + DcmDecimalString AlternateBeamDose; + /// AlternateBeamDoseType (300a,0092) vr=CS, vm=1, type=1C + DcmCodeString AlternateBeamDoseType; + /// BeamDeliveryDurationLimit (300a,00c5) vr=FD, vm=1, type=3 + DcmFloatingPointDouble BeamDeliveryDurationLimit; + /// BeamDose (300a,0084) vr=DS, vm=1, type=3 + DcmDecimalString BeamDose; + /// BeamDoseType (300a,0090) vr=CS, vm=1, type=1C + DcmCodeString BeamDoseType; + /// BeamMeterset (300a,0086) vr=DS, vm=1, type=3 + DcmDecimalString BeamMeterset; + /// DoseCalibrationConditionsSequence (300c,0120) vr=SQ, vm=1, type=1C + DRTDoseCalibrationConditionsSequence DoseCalibrationConditionsSequence; + /// DoseCalibrationConditionsVerifiedFlag (300c,0123) vr=CS, vm=1, type=3 + DcmCodeString DoseCalibrationConditionsVerifiedFlag; + /// RadiationDeviceConfigurationAndCommissioningKeySequence (300a,065a) vr=SQ, vm=1, type=1C + DRTRadiationDeviceConfigurationAndCommissioningKeySequence RadiationDeviceConfigurationAndCommissioningKeySequence; + /// ReferencedBeamNumber (300c,0006) vr=IS, vm=1, type=1 + DcmIntegerString ReferencedBeamNumber; + /// ReferencedDoseReferenceUID (300a,0083) vr=UI, vm=1, type=3 + DcmUniqueIdentifier ReferencedDoseReferenceUID; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTReferencedBeamSequenceInRTFractionSchemeModule(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTReferencedBeamSequenceInRTFractionSchemeModule(const DRTReferencedBeamSequenceInRTFractionSchemeModule ©); + + /** destructor + */ + virtual ~DRTReferencedBeamSequenceInRTFractionSchemeModule(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTReferencedBeamSequenceInRTFractionSchemeModule &operator=(const DRTReferencedBeamSequenceInRTFractionSchemeModule ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbs4.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbs4.h deleted file mode 100644 index 8e7320c1..00000000 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrbs4.h +++ /dev/null @@ -1,473 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Header file for class DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#ifndef DRTRBS4_H -#define DRTRBS4_H - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/ofstd/oflist.h" // for standard list class -#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class - - -/** Interface class for ReferencedBeamSequence (300c,0004) in RTGeneralTreatmentRecordModule - */ -class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule - : protected DRTTypes -{ - - public: - - /** Item class - */ - class DCMTK_DCMRT_EXPORT Item - : protected DRTTypes - { - - public: - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultItem flag used to mark the empty default item - */ - Item(const OFBool emptyDefaultItem = OFFalse); - - /** copy constructor - * @param copy item object to be copied - */ - Item(const Item ©); - - /** destructor - */ - virtual ~Item(); - - /** assignment operator - * @param copy item object to be copied - * @return reference to this object - */ - Item &operator=(const Item ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if item is empty - * @return OFTrue if item is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if item is valid, i.e.\ not the empty default item - * @return OFTrue if item is valid, OFFalse otherwise - */ - OFBool isValid() const; - - // --- input/output methods --- - - /** read elements from sequence item - * @param item reference to DICOM sequence item from which the elements should be read - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &item); - - /** write elements to sequence item - * @param item reference to DICOM sequence item to which the elements should be written - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &item); - - // --- get DICOM attribute values --- - - /** get AlternateBeamDose (300a,0091) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getAlternateBeamDose(OFString &value, const signed long pos = 0) const; - - /** get AlternateBeamDose (300a,0091) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getAlternateBeamDose(Float64 &value, const unsigned long pos = 0) const; - - /** get AlternateBeamDoseType (300a,0092) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getAlternateBeamDoseType(OFString &value, const signed long pos = 0) const; - - /** get BeamDeliveryDurationLimit (300a,00c5) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBeamDeliveryDurationLimit(Float64 &value, const unsigned long pos = 0) const; - - /** get BeamDose (300a,0084) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBeamDose(OFString &value, const signed long pos = 0) const; - - /** get BeamDose (300a,0084) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBeamDose(Float64 &value, const unsigned long pos = 0) const; - - /** get BeamDoseSpecificationPoint (300a,0082) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBeamDoseSpecificationPoint(OFString &value, const signed long pos = 0) const; - - /** get BeamDoseSpecificationPoint (300a,0082) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBeamDoseSpecificationPoint(Float64 &value, const unsigned long pos = 0) const; - - /** get BeamDoseSpecificationPoint (300a,0082) - * @param value reference to variable in which the value(s) should be stored - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBeamDoseSpecificationPoint(OFVector &value) const; - - /** get BeamDoseType (300a,0090) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBeamDoseType(OFString &value, const signed long pos = 0) const; - - /** get BeamMeterset (300a,0086) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBeamMeterset(OFString &value, const signed long pos = 0) const; - - /** get BeamMeterset (300a,0086) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBeamMeterset(Float64 &value, const unsigned long pos = 0) const; - - /** get ReferencedBeamNumber (300c,0006) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedBeamNumber(OFString &value, const signed long pos = 0) const; - - /** get ReferencedBeamNumber (300c,0006) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedBeamNumber(Sint32 &value, const unsigned long pos = 0) const; - - /** get ReferencedDoseReferenceUID (300a,0083) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedDoseReferenceUID(OFString &value, const signed long pos = 0) const; - - // --- set DICOM attribute values --- - - /** set AlternateBeamDose (300a,0091) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setAlternateBeamDose(const OFString &value, const OFBool check = OFTrue); - - /** set AlternateBeamDoseType (300a,0092) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setAlternateBeamDoseType(const OFString &value, const OFBool check = OFTrue); - - /** set BeamDeliveryDurationLimit (300a,00c5) - * @param value value to be set (should be valid for this VR) - * @param pos index of the value to be set (0..vm-1), vm=1 - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setBeamDeliveryDurationLimit(const Float64 value, const unsigned long pos = 0); - - /** set BeamDose (300a,0084) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setBeamDose(const OFString &value, const OFBool check = OFTrue); - - /** set BeamDoseSpecificationPoint (300a,0082) - * @param value value to be set (possibly multi-valued) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (3) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setBeamDoseSpecificationPoint(const OFString &value, const OFBool check = OFTrue); - - /** set BeamDoseType (300a,0090) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setBeamDoseType(const OFString &value, const OFBool check = OFTrue); - - /** set BeamMeterset (300a,0086) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setBeamMeterset(const OFString &value, const OFBool check = OFTrue); - - /** set ReferencedBeamNumber (300c,0006) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setReferencedBeamNumber(const OFString &value, const OFBool check = OFTrue); - - /** set ReferencedDoseReferenceUID (300a,0083) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setReferencedDoseReferenceUID(const OFString &value, const OFBool check = OFTrue); - - private: - - /// internal flag used to mark the empty default item - /*const*/ OFBool EmptyDefaultItem; - - /// AlternateBeamDose (300a,0091) vr=DS, vm=1, type=3 - DcmDecimalString AlternateBeamDose; - /// AlternateBeamDoseType (300a,0092) vr=CS, vm=1, type=1C - DcmCodeString AlternateBeamDoseType; - /// BeamDeliveryDurationLimit (300a,00c5) vr=FD, vm=1, type=3 - DcmFloatingPointDouble BeamDeliveryDurationLimit; - /// BeamDose (300a,0084) vr=DS, vm=1, type=3 - DcmDecimalString BeamDose; - /// BeamDoseSpecificationPoint (300a,0082) vr=DS, vm=3, type=3 - DcmDecimalString BeamDoseSpecificationPoint; - /// BeamDoseType (300a,0090) vr=CS, vm=1, type=1C - DcmCodeString BeamDoseType; - /// BeamMeterset (300a,0086) vr=DS, vm=1, type=3 - DcmDecimalString BeamMeterset; - /// ReferencedBeamNumber (300c,0006) vr=IS, vm=1, type=1 - DcmIntegerString ReferencedBeamNumber; - /// ReferencedDoseReferenceUID (300a,0083) vr=UI, vm=1, type=3 - DcmUniqueIdentifier ReferencedDoseReferenceUID; - - }; - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultSequence internal flag used to mark the empty default sequence - */ - DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule(const OFBool emptyDefaultSequence = OFFalse); - - /** copy constructor - * @param copy sequence object to be copied - */ - DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule(const DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule ©); - - /** destructor - */ - virtual ~DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule(); - - /** assignment operator - * @param copy sequence object to be copied - * @return reference to this object - */ - DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule &operator=(const DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if sequence is empty - * @return OFTrue if sequence is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if sequence is valid, i.e.\ not the empty default sequence - * @return OFTrue if sequence is valid, OFFalse otherwise - */ - OFBool isValid() const; - - /** get number of items in the sequence - * @return number of items - */ - size_t getNumberOfItems() const; - - /** goto first item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoFirstItem(); - - /** goto next item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoNextItem(); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num); - - /** get current item in the sequence - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getCurrentItem(Item *&item) const; - - /** get current item in the sequence - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getCurrentItem(); - - /** get current item in the sequence - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getCurrentItem() const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getItem(const size_t num, Item *&item); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getItem(const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getItem(const size_t num) const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &operator[](const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &operator[](const size_t num) const; - - /** add new item to the end of this sequence - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition addItem(Item *&item); - - /** insert new item into the sequence - * @param pos position where the new item is to be inserted (0..num) - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition insertItem(const size_t pos, Item *&item); - - /** remove particular item from the sequence - * @param pos position of the item to be removed (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition removeItem(const size_t pos); - - // --- input/output methods --- - - /** read sequence of items from dataset - * @param dataset reference to DICOM dataset from which the sequence should be read - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - /** write sequence of items to dataset - * @param dataset reference to DICOM dataset to which the sequence should be written - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - protected: - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListIterator(Item *) &iterator); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListConstIterator(Item *) &iterator) const; - - private: - - /// internal flag used to mark the empty default sequence - /*const*/ OFBool EmptyDefaultSequence; - - /// list of items in this sequence - OFList SequenceOfItems; - /// currently selected item - OFListIterator(Item *) CurrentItem; - /// empty default item - Item EmptyItem; - -}; - - -#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbs8.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbs8.h deleted file mode 100644 index 42305d93..00000000 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrbs8.h +++ /dev/null @@ -1,473 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Header file for class DRTReferencedBeamSequenceInRTFractionSchemeModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#ifndef DRTRBS8_H -#define DRTRBS8_H - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/ofstd/oflist.h" // for standard list class -#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class - - -/** Interface class for ReferencedBeamSequence (300c,0004) in RTFractionSchemeModule - */ -class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTFractionSchemeModule - : protected DRTTypes -{ - - public: - - /** Item class - */ - class DCMTK_DCMRT_EXPORT Item - : protected DRTTypes - { - - public: - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultItem flag used to mark the empty default item - */ - Item(const OFBool emptyDefaultItem = OFFalse); - - /** copy constructor - * @param copy item object to be copied - */ - Item(const Item ©); - - /** destructor - */ - virtual ~Item(); - - /** assignment operator - * @param copy item object to be copied - * @return reference to this object - */ - Item &operator=(const Item ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if item is empty - * @return OFTrue if item is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if item is valid, i.e.\ not the empty default item - * @return OFTrue if item is valid, OFFalse otherwise - */ - OFBool isValid() const; - - // --- input/output methods --- - - /** read elements from sequence item - * @param item reference to DICOM sequence item from which the elements should be read - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &item); - - /** write elements to sequence item - * @param item reference to DICOM sequence item to which the elements should be written - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &item); - - // --- get DICOM attribute values --- - - /** get AlternateBeamDose (300a,0091) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getAlternateBeamDose(OFString &value, const signed long pos = 0) const; - - /** get AlternateBeamDose (300a,0091) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getAlternateBeamDose(Float64 &value, const unsigned long pos = 0) const; - - /** get AlternateBeamDoseType (300a,0092) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getAlternateBeamDoseType(OFString &value, const signed long pos = 0) const; - - /** get BeamDeliveryDurationLimit (300a,00c5) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBeamDeliveryDurationLimit(Float64 &value, const unsigned long pos = 0) const; - - /** get BeamDose (300a,0084) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBeamDose(OFString &value, const signed long pos = 0) const; - - /** get BeamDose (300a,0084) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBeamDose(Float64 &value, const unsigned long pos = 0) const; - - /** get BeamDoseSpecificationPoint (300a,0082) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBeamDoseSpecificationPoint(OFString &value, const signed long pos = 0) const; - - /** get BeamDoseSpecificationPoint (300a,0082) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBeamDoseSpecificationPoint(Float64 &value, const unsigned long pos = 0) const; - - /** get BeamDoseSpecificationPoint (300a,0082) - * @param value reference to variable in which the value(s) should be stored - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBeamDoseSpecificationPoint(OFVector &value) const; - - /** get BeamDoseType (300a,0090) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBeamDoseType(OFString &value, const signed long pos = 0) const; - - /** get BeamMeterset (300a,0086) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBeamMeterset(OFString &value, const signed long pos = 0) const; - - /** get BeamMeterset (300a,0086) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getBeamMeterset(Float64 &value, const unsigned long pos = 0) const; - - /** get ReferencedBeamNumber (300c,0006) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedBeamNumber(OFString &value, const signed long pos = 0) const; - - /** get ReferencedBeamNumber (300c,0006) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedBeamNumber(Sint32 &value, const unsigned long pos = 0) const; - - /** get ReferencedDoseReferenceUID (300a,0083) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedDoseReferenceUID(OFString &value, const signed long pos = 0) const; - - // --- set DICOM attribute values --- - - /** set AlternateBeamDose (300a,0091) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setAlternateBeamDose(const OFString &value, const OFBool check = OFTrue); - - /** set AlternateBeamDoseType (300a,0092) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setAlternateBeamDoseType(const OFString &value, const OFBool check = OFTrue); - - /** set BeamDeliveryDurationLimit (300a,00c5) - * @param value value to be set (should be valid for this VR) - * @param pos index of the value to be set (0..vm-1), vm=1 - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setBeamDeliveryDurationLimit(const Float64 value, const unsigned long pos = 0); - - /** set BeamDose (300a,0084) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setBeamDose(const OFString &value, const OFBool check = OFTrue); - - /** set BeamDoseSpecificationPoint (300a,0082) - * @param value value to be set (possibly multi-valued) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (3) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setBeamDoseSpecificationPoint(const OFString &value, const OFBool check = OFTrue); - - /** set BeamDoseType (300a,0090) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setBeamDoseType(const OFString &value, const OFBool check = OFTrue); - - /** set BeamMeterset (300a,0086) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setBeamMeterset(const OFString &value, const OFBool check = OFTrue); - - /** set ReferencedBeamNumber (300c,0006) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setReferencedBeamNumber(const OFString &value, const OFBool check = OFTrue); - - /** set ReferencedDoseReferenceUID (300a,0083) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setReferencedDoseReferenceUID(const OFString &value, const OFBool check = OFTrue); - - private: - - /// internal flag used to mark the empty default item - /*const*/ OFBool EmptyDefaultItem; - - /// AlternateBeamDose (300a,0091) vr=DS, vm=1, type=3 - DcmDecimalString AlternateBeamDose; - /// AlternateBeamDoseType (300a,0092) vr=CS, vm=1, type=1C - DcmCodeString AlternateBeamDoseType; - /// BeamDeliveryDurationLimit (300a,00c5) vr=FD, vm=1, type=3 - DcmFloatingPointDouble BeamDeliveryDurationLimit; - /// BeamDose (300a,0084) vr=DS, vm=1, type=3 - DcmDecimalString BeamDose; - /// BeamDoseSpecificationPoint (300a,0082) vr=DS, vm=3, type=3 - DcmDecimalString BeamDoseSpecificationPoint; - /// BeamDoseType (300a,0090) vr=CS, vm=1, type=1C - DcmCodeString BeamDoseType; - /// BeamMeterset (300a,0086) vr=DS, vm=1, type=3 - DcmDecimalString BeamMeterset; - /// ReferencedBeamNumber (300c,0006) vr=IS, vm=1, type=1 - DcmIntegerString ReferencedBeamNumber; - /// ReferencedDoseReferenceUID (300a,0083) vr=UI, vm=1, type=3 - DcmUniqueIdentifier ReferencedDoseReferenceUID; - - }; - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultSequence internal flag used to mark the empty default sequence - */ - DRTReferencedBeamSequenceInRTFractionSchemeModule(const OFBool emptyDefaultSequence = OFFalse); - - /** copy constructor - * @param copy sequence object to be copied - */ - DRTReferencedBeamSequenceInRTFractionSchemeModule(const DRTReferencedBeamSequenceInRTFractionSchemeModule ©); - - /** destructor - */ - virtual ~DRTReferencedBeamSequenceInRTFractionSchemeModule(); - - /** assignment operator - * @param copy sequence object to be copied - * @return reference to this object - */ - DRTReferencedBeamSequenceInRTFractionSchemeModule &operator=(const DRTReferencedBeamSequenceInRTFractionSchemeModule ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if sequence is empty - * @return OFTrue if sequence is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if sequence is valid, i.e.\ not the empty default sequence - * @return OFTrue if sequence is valid, OFFalse otherwise - */ - OFBool isValid() const; - - /** get number of items in the sequence - * @return number of items - */ - size_t getNumberOfItems() const; - - /** goto first item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoFirstItem(); - - /** goto next item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoNextItem(); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num); - - /** get current item in the sequence - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getCurrentItem(Item *&item) const; - - /** get current item in the sequence - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getCurrentItem(); - - /** get current item in the sequence - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getCurrentItem() const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getItem(const size_t num, Item *&item); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getItem(const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getItem(const size_t num) const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &operator[](const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &operator[](const size_t num) const; - - /** add new item to the end of this sequence - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition addItem(Item *&item); - - /** insert new item into the sequence - * @param pos position where the new item is to be inserted (0..num) - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition insertItem(const size_t pos, Item *&item); - - /** remove particular item from the sequence - * @param pos position of the item to be removed (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition removeItem(const size_t pos); - - // --- input/output methods --- - - /** read sequence of items from dataset - * @param dataset reference to DICOM dataset from which the sequence should be read - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - /** write sequence of items to dataset - * @param dataset reference to DICOM dataset to which the sequence should be written - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - protected: - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListIterator(Item *) &iterator); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListConstIterator(Item *) &iterator) const; - - private: - - /// internal flag used to mark the empty default sequence - /*const*/ OFBool EmptyDefaultSequence; - - /// list of items in this sequence - OFList SequenceOfItems; - /// currently selected item - OFListIterator(Item *) CurrentItem; - /// empty default item - Item EmptyItem; - -}; - - -#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbss.h new file mode 100644 index 00000000..3871b133 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrbss.h @@ -0,0 +1,320 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTRecordedBlockSlabSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTRBSS_H +#define DRTRBSS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for RecordedBlockSlabSequence (3008,00d1) + */ +class DCMTK_DCMRT_EXPORT DRTRecordedBlockSlabSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get AccessoryCode (300a,00f9) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const; + + /** get BlockSlabNumber (300a,0443) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getBlockSlabNumber(Uint16 &value, const unsigned long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set AccessoryCode (300a,00f9) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue); + + /** set BlockSlabNumber (300a,0443) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setBlockSlabNumber(const Uint16 value, const unsigned long pos = 0); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3 + DcmLongString AccessoryCode; + /// BlockSlabNumber (300a,0443) vr=US, vm=1, type=1 + DcmUnsignedShort BlockSlabNumber; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTRecordedBlockSlabSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTRecordedBlockSlabSequence(const DRTRecordedBlockSlabSequence ©); + + /** destructor + */ + virtual ~DRTRecordedBlockSlabSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTRecordedBlockSlabSequence &operator=(const DRTRecordedBlockSlabSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrcdrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrcdrs.h index 88fc8291..43fbbad3 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrcdrs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrcdrs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTReferencedCalculatedDoseReferenceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -276,13 +276,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedCalculatedDoseReferenceSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrcos.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrcos.h index d7d17bb0..29aed0d5 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrcos.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrcos.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTRecordedCompensatorSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -262,13 +262,13 @@ class DCMTK_DCMRT_EXPORT DRTRecordedCompensatorSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrcps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrcps.h index 7833d634..bdabbe0c 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrcps.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrcps.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTReferencedControlPointSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -253,13 +253,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedControlPointSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrcs.h index 23fbb9f3..6783e6de 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrcs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrcs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTROIContourSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -20,6 +20,7 @@ #include "dcmtk/ofstd/oflist.h" // for standard list class #include "dcmtk/dcmrt/drttypes.h" // module-specific helper class #include "dcmtk/dcmrt/seq/drtcs.h" // for ContourSequence +#include "dcmtk/dcmrt/seq/drtsppcs.h" // for SourcePixelPlanesCharacteristicsSequence /** Interface class for ROIContourSequence (3006,0039) @@ -148,6 +149,18 @@ class DCMTK_DCMRT_EXPORT DRTROIContourSequence const DRTContourSequence &getContourSequence() const { return ContourSequence; } + /** get SourcePixelPlanesCharacteristicsSequence (3006,004a) + * @return reference to sequence element + */ + DRTSourcePixelPlanesCharacteristicsSequence &getSourcePixelPlanesCharacteristicsSequence() + { return SourcePixelPlanesCharacteristicsSequence; } + + /** get SourcePixelPlanesCharacteristicsSequence (3006,004a) + * @return const reference to sequence element + */ + const DRTSourcePixelPlanesCharacteristicsSequence &getSourcePixelPlanesCharacteristicsSequence() const + { return SourcePixelPlanesCharacteristicsSequence; } + // --- set DICOM attribute values --- /** set ROIDisplayColor (3006,002a) @@ -193,6 +206,8 @@ class DCMTK_DCMRT_EXPORT DRTROIContourSequence DcmUnsignedShort RecommendedDisplayGrayscaleValue; /// ReferencedROINumber (3006,0084) vr=IS, vm=1, type=1 DcmIntegerString ReferencedROINumber; + /// SourcePixelPlanesCharacteristicsSequence (3006,004a) vr=SQ, vm=1, type=3 + DRTSourcePixelPlanesCharacteristicsSequence SourcePixelPlanesCharacteristicsSequence; }; @@ -302,13 +317,13 @@ class DCMTK_DCMRT_EXPORT DRTROIContourSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrdais.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrdais.h new file mode 100644 index 00000000..b4131104 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrdais.h @@ -0,0 +1,384 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTROIDerivationAlgorithmIdentificationSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTRDAIS_H +#define DRTRDAIS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtafcs.h" // for AlgorithmFamilyCodeSequence +#include "dcmtk/dcmrt/seq/drtancs.h" // for AlgorithmNameCodeSequence + + +/** Interface class for ROIDerivationAlgorithmIdentificationSequence (3006,0037) + */ +class DCMTK_DCMRT_EXPORT DRTROIDerivationAlgorithmIdentificationSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get AlgorithmName (0066,0036) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getAlgorithmName(OFString &value, const signed long pos = 0) const; + + /** get AlgorithmParameters (0066,0032) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getAlgorithmParameters(OFString &value, const signed long pos = 0) const; + + /** get AlgorithmSource (0024,0202) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getAlgorithmSource(OFString &value, const signed long pos = 0) const; + + /** get AlgorithmVersion (0066,0031) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getAlgorithmVersion(OFString &value, const signed long pos = 0) const; + + // --- get DICOM sequence attributes --- + + /** get AlgorithmFamilyCodeSequence (0066,002f) + * @return reference to sequence element + */ + DRTAlgorithmFamilyCodeSequence &getAlgorithmFamilyCodeSequence() + { return AlgorithmFamilyCodeSequence; } + + /** get AlgorithmFamilyCodeSequence (0066,002f) + * @return const reference to sequence element + */ + const DRTAlgorithmFamilyCodeSequence &getAlgorithmFamilyCodeSequence() const + { return AlgorithmFamilyCodeSequence; } + + /** get AlgorithmNameCodeSequence (0066,0030) + * @return reference to sequence element + */ + DRTAlgorithmNameCodeSequence &getAlgorithmNameCodeSequence() + { return AlgorithmNameCodeSequence; } + + /** get AlgorithmNameCodeSequence (0066,0030) + * @return const reference to sequence element + */ + const DRTAlgorithmNameCodeSequence &getAlgorithmNameCodeSequence() const + { return AlgorithmNameCodeSequence; } + + // --- set DICOM attribute values --- + + /** set AlgorithmName (0066,0036) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setAlgorithmName(const OFString &value, const OFBool check = OFTrue); + + /** set AlgorithmParameters (0066,0032) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setAlgorithmParameters(const OFString &value, const OFBool check = OFTrue); + + /** set AlgorithmSource (0024,0202) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setAlgorithmSource(const OFString &value, const OFBool check = OFTrue); + + /** set AlgorithmVersion (0066,0031) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setAlgorithmVersion(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// AlgorithmFamilyCodeSequence (0066,002f) vr=SQ, vm=1, type=1 + DRTAlgorithmFamilyCodeSequence AlgorithmFamilyCodeSequence; + /// AlgorithmName (0066,0036) vr=LO, vm=1, type=1 + DcmLongString AlgorithmName; + /// AlgorithmNameCodeSequence (0066,0030) vr=SQ, vm=1, type=3 + DRTAlgorithmNameCodeSequence AlgorithmNameCodeSequence; + /// AlgorithmParameters (0066,0032) vr=LT, vm=1, type=3 + DcmLongText AlgorithmParameters; + /// AlgorithmSource (0024,0202) vr=LO, vm=1, type=3 + DcmLongString AlgorithmSource; + /// AlgorithmVersion (0066,0031) vr=LO, vm=1, type=1 + DcmLongString AlgorithmVersion; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTROIDerivationAlgorithmIdentificationSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTROIDerivationAlgorithmIdentificationSequence(const DRTROIDerivationAlgorithmIdentificationSequence ©); + + /** destructor + */ + virtual ~DRTROIDerivationAlgorithmIdentificationSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTROIDerivationAlgorithmIdentificationSequence &operator=(const DRTROIDerivationAlgorithmIdentificationSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrdcks.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrdcks.h new file mode 100644 index 00000000..e53589f7 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrdcks.h @@ -0,0 +1,571 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTRadiationDeviceConfigurationAndCommissioningKeySequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTRDCKS_H +#define DRTRDCKS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtccs.h" // for ConceptCodeSequence +#include "dcmtk/dcmrt/seq/drtcncs.h" // for ConceptNameCodeSequence +#include "dcmtk/dcmrt/seq/drtmucs.h" // for MeasurementUnitsCodeSequence +#include "dcmtk/dcmrt/seq/drtrsos.h" // for ReferencedSOPSequence + + +/** Interface class for RadiationDeviceConfigurationAndCommissioningKeySequence (300a,065a) + */ +class DCMTK_DCMRT_EXPORT DRTRadiationDeviceConfigurationAndCommissioningKeySequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get Date (0040,a121) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getDate(OFString &value, const signed long pos = 0) const; + + /** get DateTime (0040,a120) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getDateTime(OFString &value, const signed long pos = 0) const; + + /** get FloatingPointValue (0040,a161) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getFloatingPointValue(Float64 &value, const unsigned long pos = 0) const; + + /** get NumericValue (0040,a30a) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getNumericValue(OFString &value, const signed long pos = 0) const; + + /** get NumericValue (0040,a30a) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getNumericValue(Float64 &value, const unsigned long pos = 0) const; + + /** get NumericValue (0040,a30a) + * @param value reference to variable in which the value(s) should be stored + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getNumericValue(OFVector &value) const; + + /** get ObservationDateTime (0040,a032) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getObservationDateTime(OFString &value, const signed long pos = 0) const; + + /** get ObservationStartDateTime (0040,a033) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getObservationStartDateTime(OFString &value, const signed long pos = 0) const; + + /** get PersonName (0040,a123) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getPersonName(OFString &value, const signed long pos = 0) const; + + /** get RationalDenominatorValue (0040,a163) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getRationalDenominatorValue(Uint32 &value, const unsigned long pos = 0) const; + + /** get RationalNumeratorValue (0040,a162) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getRationalNumeratorValue(Sint32 &value, const unsigned long pos = 0) const; + + /** get TextValue (0040,a160) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getTextValue(OFString &value, const signed long pos = 0) const; + + /** get Time (0040,a122) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getTime(OFString &value, const signed long pos = 0) const; + + /** get UID (0040,a124) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getUID(OFString &value, const signed long pos = 0) const; + + /** get ValueType (0040,a040) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getValueType(OFString &value, const signed long pos = 0) const; + + // --- get DICOM sequence attributes --- + + /** get ConceptCodeSequence (0040,a168) + * @return reference to sequence element + */ + DRTConceptCodeSequence &getConceptCodeSequence() + { return ConceptCodeSequence; } + + /** get ConceptCodeSequence (0040,a168) + * @return const reference to sequence element + */ + const DRTConceptCodeSequence &getConceptCodeSequence() const + { return ConceptCodeSequence; } + + /** get ConceptNameCodeSequence (0040,a043) + * @return reference to sequence element + */ + DRTConceptNameCodeSequence &getConceptNameCodeSequence() + { return ConceptNameCodeSequence; } + + /** get ConceptNameCodeSequence (0040,a043) + * @return const reference to sequence element + */ + const DRTConceptNameCodeSequence &getConceptNameCodeSequence() const + { return ConceptNameCodeSequence; } + + /** get MeasurementUnitsCodeSequence (0040,08ea) + * @return reference to sequence element + */ + DRTMeasurementUnitsCodeSequence &getMeasurementUnitsCodeSequence() + { return MeasurementUnitsCodeSequence; } + + /** get MeasurementUnitsCodeSequence (0040,08ea) + * @return const reference to sequence element + */ + const DRTMeasurementUnitsCodeSequence &getMeasurementUnitsCodeSequence() const + { return MeasurementUnitsCodeSequence; } + + /** get ReferencedSOPSequence (0008,1199) + * @return reference to sequence element + */ + DRTReferencedSOPSequence &getReferencedSOPSequence() + { return ReferencedSOPSequence; } + + /** get ReferencedSOPSequence (0008,1199) + * @return const reference to sequence element + */ + const DRTReferencedSOPSequence &getReferencedSOPSequence() const + { return ReferencedSOPSequence; } + + // --- set DICOM attribute values --- + + /** set Date (0040,a121) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DA) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setDate(const OFString &value, const OFBool check = OFTrue); + + /** set DateTime (0040,a120) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setDateTime(const OFString &value, const OFBool check = OFTrue); + + /** set FloatingPointValue (0040,a161) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1-n + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setFloatingPointValue(const Float64 value, const unsigned long pos = 0); + + /** set NumericValue (0040,a30a) + * @param value value to be set (possibly multi-valued) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (1-n) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setNumericValue(const OFString &value, const OFBool check = OFTrue); + + /** set ObservationDateTime (0040,a032) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setObservationDateTime(const OFString &value, const OFBool check = OFTrue); + + /** set ObservationStartDateTime (0040,a033) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setObservationStartDateTime(const OFString &value, const OFBool check = OFTrue); + + /** set PersonName (0040,a123) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (PN) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setPersonName(const OFString &value, const OFBool check = OFTrue); + + /** set RationalDenominatorValue (0040,a163) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1-n + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setRationalDenominatorValue(const Uint32 value, const unsigned long pos = 0); + + /** set RationalNumeratorValue (0040,a162) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1-n + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setRationalNumeratorValue(const Sint32 value, const unsigned long pos = 0); + + /** set TextValue (0040,a160) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setTextValue(const OFString &value, const OFBool check = OFTrue); + + /** set Time (0040,a122) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (TM) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setTime(const OFString &value, const OFBool check = OFTrue); + + /** set UID (0040,a124) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setUID(const OFString &value, const OFBool check = OFTrue); + + /** set ValueType (0040,a040) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setValueType(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// ConceptCodeSequence (0040,a168) vr=SQ, vm=1, type=1C + DRTConceptCodeSequence ConceptCodeSequence; + /// ConceptNameCodeSequence (0040,a043) vr=SQ, vm=1, type=1 + DRTConceptNameCodeSequence ConceptNameCodeSequence; + /// Date (0040,a121) vr=DA, vm=1, type=1C + DcmDate Date; + /// DateTime (0040,a120) vr=DT, vm=1, type=1C + DcmDateTime DateTime; + /// FloatingPointValue (0040,a161) vr=FD, vm=1-n, type=1C + DcmFloatingPointDouble FloatingPointValue; + /// MeasurementUnitsCodeSequence (0040,08ea) vr=SQ, vm=1, type=1C + DRTMeasurementUnitsCodeSequence MeasurementUnitsCodeSequence; + /// NumericValue (0040,a30a) vr=DS, vm=1-n, type=1C + DcmDecimalString NumericValue; + /// ObservationDateTime (0040,a032) vr=DT, vm=1, type=3 + DcmDateTime ObservationDateTime; + /// ObservationStartDateTime (0040,a033) vr=DT, vm=1, type=3 + DcmDateTime ObservationStartDateTime; + /// PersonName (0040,a123) vr=PN, vm=1, type=1C + DcmPersonName PersonName; + /// RationalDenominatorValue (0040,a163) vr=UL, vm=1-n, type=1C + DcmUnsignedLong RationalDenominatorValue; + /// RationalNumeratorValue (0040,a162) vr=SL, vm=1-n, type=1C + DcmSignedLong RationalNumeratorValue; + /// ReferencedSOPSequence (0008,1199) vr=SQ, vm=1, type=1C + DRTReferencedSOPSequence ReferencedSOPSequence; + /// TextValue (0040,a160) vr=UT, vm=1, type=1C + DcmUnlimitedText TextValue; + /// Time (0040,a122) vr=TM, vm=1, type=1C + DcmTime Time; + /// UID (0040,a124) vr=UI, vm=1, type=1C + DcmUniqueIdentifier UID; + /// ValueType (0040,a040) vr=CS, vm=1, type=1 + DcmCodeString ValueType; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTRadiationDeviceConfigurationAndCommissioningKeySequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTRadiationDeviceConfigurationAndCommissioningKeySequence(const DRTRadiationDeviceConfigurationAndCommissioningKeySequence ©); + + /** destructor + */ + virtual ~DRTRadiationDeviceConfigurationAndCommissioningKeySequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTRadiationDeviceConfigurationAndCommissioningKeySequence &operator=(const DRTRadiationDeviceConfigurationAndCommissioningKeySequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrdps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrdps.h new file mode 100644 index 00000000..138855e3 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrdps.h @@ -0,0 +1,352 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTReferencedDefinedProtocolSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTRDPS_H +#define DRTRDPS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for ReferencedDefinedProtocolSequence (0018,990c) + */ +class DCMTK_DCMRT_EXPORT DRTReferencedDefinedProtocolSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get ReferencedSOPClassUID (0008,1150) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const; + + /** get ReferencedSOPInstanceUID (0008,1155) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const; + + /** get SourceAcquisitionProtocolElementNumber (0018,9938) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getSourceAcquisitionProtocolElementNumber(Uint16 &value, const unsigned long pos = 0) const; + + /** get SourceReconstructionProtocolElementNumber (0018,993a) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getSourceReconstructionProtocolElementNumber(Uint16 &value, const unsigned long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set ReferencedSOPClassUID (0008,1150) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue); + + /** set ReferencedSOPInstanceUID (0008,1155) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue); + + /** set SourceAcquisitionProtocolElementNumber (0018,9938) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1-n + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setSourceAcquisitionProtocolElementNumber(const Uint16 value, const unsigned long pos = 0); + + /** set SourceReconstructionProtocolElementNumber (0018,993a) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1-n + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setSourceReconstructionProtocolElementNumber(const Uint16 value, const unsigned long pos = 0); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1 + DcmUniqueIdentifier ReferencedSOPClassUID; + /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1 + DcmUniqueIdentifier ReferencedSOPInstanceUID; + /// SourceAcquisitionProtocolElementNumber (0018,9938) vr=US, vm=1-n, type=3 + DcmUnsignedShort SourceAcquisitionProtocolElementNumber; + /// SourceReconstructionProtocolElementNumber (0018,993a) vr=US, vm=1-n, type=3 + DcmUnsignedShort SourceReconstructionProtocolElementNumber; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTReferencedDefinedProtocolSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTReferencedDefinedProtocolSequence(const DRTReferencedDefinedProtocolSequence ©); + + /** destructor + */ + virtual ~DRTReferencedDefinedProtocolSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTReferencedDefinedProtocolSequence &operator=(const DRTReferencedDefinedProtocolSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrdros.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrdros.h deleted file mode 100644 index 802748d8..00000000 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrdros.h +++ /dev/null @@ -1,350 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Header file for class DRTRTDoseROISequence - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#ifndef DRTRDROS_H -#define DRTRDROS_H - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/ofstd/oflist.h" // for standard list class -#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class - - -/** Interface class for RTDoseROISequence (3004,0010) - */ -class DCMTK_DCMRT_EXPORT DRTRTDoseROISequence - : protected DRTTypes -{ - - public: - - /** Item class - */ - class DCMTK_DCMRT_EXPORT Item - : protected DRTTypes - { - - public: - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultItem flag used to mark the empty default item - */ - Item(const OFBool emptyDefaultItem = OFFalse); - - /** copy constructor - * @param copy item object to be copied - */ - Item(const Item ©); - - /** destructor - */ - virtual ~Item(); - - /** assignment operator - * @param copy item object to be copied - * @return reference to this object - */ - Item &operator=(const Item ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if item is empty - * @return OFTrue if item is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if item is valid, i.e.\ not the empty default item - * @return OFTrue if item is valid, OFFalse otherwise - */ - OFBool isValid() const; - - // --- input/output methods --- - - /** read elements from sequence item - * @param item reference to DICOM sequence item from which the elements should be read - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &item); - - /** write elements to sequence item - * @param item reference to DICOM sequence item to which the elements should be written - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &item); - - // --- get DICOM attribute values --- - - /** get DoseUnits (3004,0002) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getDoseUnits(OFString &value, const signed long pos = 0) const; - - /** get DoseValue (3004,0012) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getDoseValue(OFString &value, const signed long pos = 0) const; - - /** get DoseValue (3004,0012) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getDoseValue(Float64 &value, const unsigned long pos = 0) const; - - /** get ReferencedROINumber (3006,0084) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedROINumber(OFString &value, const signed long pos = 0) const; - - /** get ReferencedROINumber (3006,0084) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedROINumber(Sint32 &value, const unsigned long pos = 0) const; - - // --- set DICOM attribute values --- - - /** set DoseUnits (3004,0002) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setDoseUnits(const OFString &value, const OFBool check = OFTrue); - - /** set DoseValue (3004,0012) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setDoseValue(const OFString &value, const OFBool check = OFTrue); - - /** set ReferencedROINumber (3006,0084) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setReferencedROINumber(const OFString &value, const OFBool check = OFTrue); - - private: - - /// internal flag used to mark the empty default item - /*const*/ OFBool EmptyDefaultItem; - - /// DoseUnits (3004,0002) vr=CS, vm=1, type=1 - DcmCodeString DoseUnits; - /// DoseValue (3004,0012) vr=DS, vm=1, type=1 - DcmDecimalString DoseValue; - /// ReferencedROINumber (3006,0084) vr=IS, vm=1, type=1 - DcmIntegerString ReferencedROINumber; - - }; - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultSequence internal flag used to mark the empty default sequence - */ - DRTRTDoseROISequence(const OFBool emptyDefaultSequence = OFFalse); - - /** copy constructor - * @param copy sequence object to be copied - */ - DRTRTDoseROISequence(const DRTRTDoseROISequence ©); - - /** destructor - */ - virtual ~DRTRTDoseROISequence(); - - /** assignment operator - * @param copy sequence object to be copied - * @return reference to this object - */ - DRTRTDoseROISequence &operator=(const DRTRTDoseROISequence ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if sequence is empty - * @return OFTrue if sequence is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if sequence is valid, i.e.\ not the empty default sequence - * @return OFTrue if sequence is valid, OFFalse otherwise - */ - OFBool isValid() const; - - /** get number of items in the sequence - * @return number of items - */ - size_t getNumberOfItems() const; - - /** goto first item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoFirstItem(); - - /** goto next item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoNextItem(); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num); - - /** get current item in the sequence - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getCurrentItem(Item *&item) const; - - /** get current item in the sequence - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getCurrentItem(); - - /** get current item in the sequence - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getCurrentItem() const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getItem(const size_t num, Item *&item); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getItem(const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getItem(const size_t num) const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &operator[](const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &operator[](const size_t num) const; - - /** add new item to the end of this sequence - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition addItem(Item *&item); - - /** insert new item into the sequence - * @param pos position where the new item is to be inserted (0..num) - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition insertItem(const size_t pos, Item *&item); - - /** remove particular item from the sequence - * @param pos position of the item to be removed (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition removeItem(const size_t pos); - - // --- input/output methods --- - - /** read sequence of items from dataset - * @param dataset reference to DICOM dataset from which the sequence should be read - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - /** write sequence of items to dataset - * @param dataset reference to DICOM dataset to which the sequence should be written - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - protected: - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListIterator(Item *) &iterator); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListConstIterator(Item *) &iterator) const; - - private: - - /// internal flag used to mark the empty default sequence - /*const*/ OFBool EmptyDefaultSequence; - - /// list of items in this sequence - OFList SequenceOfItems; - /// currently selected item - OFListIterator(Item *) CurrentItem; - /// empty default item - Item EmptyItem; - -}; - - -#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs1.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs1.h index 4dbd16cd..a5366423 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs1.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs1.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTReferencedDoseReferenceSequenceInRTBeamsModule * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -263,13 +263,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseReferenceSequenceInRTBeamsModule */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs2.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs2.h new file mode 100644 index 00000000..2eeaa3af --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs2.h @@ -0,0 +1,334 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTReferencedDoseReferenceSequenceInRTIonBeamsModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTRDRS2_H +#define DRTRDRS2_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for ReferencedDoseReferenceSequence (300c,0050) in RTIonBeamsModule + */ +class DCMTK_DCMRT_EXPORT DRTReferencedDoseReferenceSequenceInRTIonBeamsModule + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get CumulativeDoseReferenceCoefficient (300a,010c) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCumulativeDoseReferenceCoefficient(OFString &value, const signed long pos = 0) const; + + /** get CumulativeDoseReferenceCoefficient (300a,010c) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCumulativeDoseReferenceCoefficient(Float64 &value, const unsigned long pos = 0) const; + + /** get ReferencedDoseReferenceNumber (300c,0051) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedDoseReferenceNumber(OFString &value, const signed long pos = 0) const; + + /** get ReferencedDoseReferenceNumber (300c,0051) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedDoseReferenceNumber(Sint32 &value, const unsigned long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set CumulativeDoseReferenceCoefficient (300a,010c) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCumulativeDoseReferenceCoefficient(const OFString &value, const OFBool check = OFTrue); + + /** set ReferencedDoseReferenceNumber (300c,0051) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedDoseReferenceNumber(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// CumulativeDoseReferenceCoefficient (300a,010c) vr=DS, vm=1, type=2 + DcmDecimalString CumulativeDoseReferenceCoefficient; + /// ReferencedDoseReferenceNumber (300c,0051) vr=IS, vm=1, type=1 + DcmIntegerString ReferencedDoseReferenceNumber; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTReferencedDoseReferenceSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTReferencedDoseReferenceSequenceInRTIonBeamsModule(const DRTReferencedDoseReferenceSequenceInRTIonBeamsModule ©); + + /** destructor + */ + virtual ~DRTReferencedDoseReferenceSequenceInRTIonBeamsModule(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTReferencedDoseReferenceSequenceInRTIonBeamsModule &operator=(const DRTReferencedDoseReferenceSequenceInRTIonBeamsModule ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs3.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs3.h new file mode 100644 index 00000000..58497b3d --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs3.h @@ -0,0 +1,564 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTRDRS3_H +#define DRTRDRS3_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for ReferencedDoseReferenceSequence (300c,0050) in RTFractionSchemeModule + */ +class DCMTK_DCMRT_EXPORT DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get ConstraintWeight (300a,0021) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getConstraintWeight(OFString &value, const signed long pos = 0) const; + + /** get ConstraintWeight (300a,0021) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getConstraintWeight(Float64 &value, const unsigned long pos = 0) const; + + /** get DeliveryMaximumDose (300a,0023) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getDeliveryMaximumDose(OFString &value, const signed long pos = 0) const; + + /** get DeliveryMaximumDose (300a,0023) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getDeliveryMaximumDose(Float64 &value, const unsigned long pos = 0) const; + + /** get DeliveryWarningDose (300a,0022) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getDeliveryWarningDose(OFString &value, const signed long pos = 0) const; + + /** get DeliveryWarningDose (300a,0022) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getDeliveryWarningDose(Float64 &value, const unsigned long pos = 0) const; + + /** get OrganAtRiskFullVolumeDose (300a,002a) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getOrganAtRiskFullVolumeDose(OFString &value, const signed long pos = 0) const; + + /** get OrganAtRiskFullVolumeDose (300a,002a) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getOrganAtRiskFullVolumeDose(Float64 &value, const unsigned long pos = 0) const; + + /** get OrganAtRiskLimitDose (300a,002b) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getOrganAtRiskLimitDose(OFString &value, const signed long pos = 0) const; + + /** get OrganAtRiskLimitDose (300a,002b) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getOrganAtRiskLimitDose(Float64 &value, const unsigned long pos = 0) const; + + /** get OrganAtRiskMaximumDose (300a,002c) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getOrganAtRiskMaximumDose(OFString &value, const signed long pos = 0) const; + + /** get OrganAtRiskMaximumDose (300a,002c) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getOrganAtRiskMaximumDose(Float64 &value, const unsigned long pos = 0) const; + + /** get OrganAtRiskOverdoseVolumeFraction (300a,002d) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getOrganAtRiskOverdoseVolumeFraction(OFString &value, const signed long pos = 0) const; + + /** get OrganAtRiskOverdoseVolumeFraction (300a,002d) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getOrganAtRiskOverdoseVolumeFraction(Float64 &value, const unsigned long pos = 0) const; + + /** get ReferencedDoseReferenceNumber (300c,0051) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedDoseReferenceNumber(OFString &value, const signed long pos = 0) const; + + /** get ReferencedDoseReferenceNumber (300c,0051) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedDoseReferenceNumber(Sint32 &value, const unsigned long pos = 0) const; + + /** get TargetMaximumDose (300a,0027) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getTargetMaximumDose(OFString &value, const signed long pos = 0) const; + + /** get TargetMaximumDose (300a,0027) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getTargetMaximumDose(Float64 &value, const unsigned long pos = 0) const; + + /** get TargetMinimumDose (300a,0025) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getTargetMinimumDose(OFString &value, const signed long pos = 0) const; + + /** get TargetMinimumDose (300a,0025) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getTargetMinimumDose(Float64 &value, const unsigned long pos = 0) const; + + /** get TargetPrescriptionDose (300a,0026) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getTargetPrescriptionDose(OFString &value, const signed long pos = 0) const; + + /** get TargetPrescriptionDose (300a,0026) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getTargetPrescriptionDose(Float64 &value, const unsigned long pos = 0) const; + + /** get TargetUnderdoseVolumeFraction (300a,0028) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getTargetUnderdoseVolumeFraction(OFString &value, const signed long pos = 0) const; + + /** get TargetUnderdoseVolumeFraction (300a,0028) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getTargetUnderdoseVolumeFraction(Float64 &value, const unsigned long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set ConstraintWeight (300a,0021) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setConstraintWeight(const OFString &value, const OFBool check = OFTrue); + + /** set DeliveryMaximumDose (300a,0023) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setDeliveryMaximumDose(const OFString &value, const OFBool check = OFTrue); + + /** set DeliveryWarningDose (300a,0022) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setDeliveryWarningDose(const OFString &value, const OFBool check = OFTrue); + + /** set OrganAtRiskFullVolumeDose (300a,002a) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setOrganAtRiskFullVolumeDose(const OFString &value, const OFBool check = OFTrue); + + /** set OrganAtRiskLimitDose (300a,002b) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setOrganAtRiskLimitDose(const OFString &value, const OFBool check = OFTrue); + + /** set OrganAtRiskMaximumDose (300a,002c) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setOrganAtRiskMaximumDose(const OFString &value, const OFBool check = OFTrue); + + /** set OrganAtRiskOverdoseVolumeFraction (300a,002d) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setOrganAtRiskOverdoseVolumeFraction(const OFString &value, const OFBool check = OFTrue); + + /** set ReferencedDoseReferenceNumber (300c,0051) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedDoseReferenceNumber(const OFString &value, const OFBool check = OFTrue); + + /** set TargetMaximumDose (300a,0027) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setTargetMaximumDose(const OFString &value, const OFBool check = OFTrue); + + /** set TargetMinimumDose (300a,0025) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setTargetMinimumDose(const OFString &value, const OFBool check = OFTrue); + + /** set TargetPrescriptionDose (300a,0026) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setTargetPrescriptionDose(const OFString &value, const OFBool check = OFTrue); + + /** set TargetUnderdoseVolumeFraction (300a,0028) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setTargetUnderdoseVolumeFraction(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// ConstraintWeight (300a,0021) vr=DS, vm=1, type=3 + DcmDecimalString ConstraintWeight; + /// DeliveryMaximumDose (300a,0023) vr=DS, vm=1, type=3 + DcmDecimalString DeliveryMaximumDose; + /// DeliveryWarningDose (300a,0022) vr=DS, vm=1, type=3 + DcmDecimalString DeliveryWarningDose; + /// OrganAtRiskFullVolumeDose (300a,002a) vr=DS, vm=1, type=3 + DcmDecimalString OrganAtRiskFullVolumeDose; + /// OrganAtRiskLimitDose (300a,002b) vr=DS, vm=1, type=3 + DcmDecimalString OrganAtRiskLimitDose; + /// OrganAtRiskMaximumDose (300a,002c) vr=DS, vm=1, type=3 + DcmDecimalString OrganAtRiskMaximumDose; + /// OrganAtRiskOverdoseVolumeFraction (300a,002d) vr=DS, vm=1, type=3 + DcmDecimalString OrganAtRiskOverdoseVolumeFraction; + /// ReferencedDoseReferenceNumber (300c,0051) vr=IS, vm=1, type=1 + DcmIntegerString ReferencedDoseReferenceNumber; + /// TargetMaximumDose (300a,0027) vr=DS, vm=1, type=3 + DcmDecimalString TargetMaximumDose; + /// TargetMinimumDose (300a,0025) vr=DS, vm=1, type=3 + DcmDecimalString TargetMinimumDose; + /// TargetPrescriptionDose (300a,0026) vr=DS, vm=1, type=3 + DcmDecimalString TargetPrescriptionDose; + /// TargetUnderdoseVolumeFraction (300a,0028) vr=DS, vm=1, type=3 + DcmDecimalString TargetUnderdoseVolumeFraction; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule(const DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule ©); + + /** destructor + */ + virtual ~DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule &operator=(const DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs6.h deleted file mode 100644 index 20892e26..00000000 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs6.h +++ /dev/null @@ -1,334 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Header file for class DRTReferencedDoseReferenceSequenceInRTIonBeamsModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#ifndef DRTRDRS6_H -#define DRTRDRS6_H - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/ofstd/oflist.h" // for standard list class -#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class - - -/** Interface class for ReferencedDoseReferenceSequence (300c,0050) in RTIonBeamsModule - */ -class DCMTK_DCMRT_EXPORT DRTReferencedDoseReferenceSequenceInRTIonBeamsModule - : protected DRTTypes -{ - - public: - - /** Item class - */ - class DCMTK_DCMRT_EXPORT Item - : protected DRTTypes - { - - public: - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultItem flag used to mark the empty default item - */ - Item(const OFBool emptyDefaultItem = OFFalse); - - /** copy constructor - * @param copy item object to be copied - */ - Item(const Item ©); - - /** destructor - */ - virtual ~Item(); - - /** assignment operator - * @param copy item object to be copied - * @return reference to this object - */ - Item &operator=(const Item ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if item is empty - * @return OFTrue if item is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if item is valid, i.e.\ not the empty default item - * @return OFTrue if item is valid, OFFalse otherwise - */ - OFBool isValid() const; - - // --- input/output methods --- - - /** read elements from sequence item - * @param item reference to DICOM sequence item from which the elements should be read - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &item); - - /** write elements to sequence item - * @param item reference to DICOM sequence item to which the elements should be written - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &item); - - // --- get DICOM attribute values --- - - /** get CumulativeDoseReferenceCoefficient (300a,010c) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getCumulativeDoseReferenceCoefficient(OFString &value, const signed long pos = 0) const; - - /** get CumulativeDoseReferenceCoefficient (300a,010c) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getCumulativeDoseReferenceCoefficient(Float64 &value, const unsigned long pos = 0) const; - - /** get ReferencedDoseReferenceNumber (300c,0051) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedDoseReferenceNumber(OFString &value, const signed long pos = 0) const; - - /** get ReferencedDoseReferenceNumber (300c,0051) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedDoseReferenceNumber(Sint32 &value, const unsigned long pos = 0) const; - - // --- set DICOM attribute values --- - - /** set CumulativeDoseReferenceCoefficient (300a,010c) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setCumulativeDoseReferenceCoefficient(const OFString &value, const OFBool check = OFTrue); - - /** set ReferencedDoseReferenceNumber (300c,0051) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setReferencedDoseReferenceNumber(const OFString &value, const OFBool check = OFTrue); - - private: - - /// internal flag used to mark the empty default item - /*const*/ OFBool EmptyDefaultItem; - - /// CumulativeDoseReferenceCoefficient (300a,010c) vr=DS, vm=1, type=2 - DcmDecimalString CumulativeDoseReferenceCoefficient; - /// ReferencedDoseReferenceNumber (300c,0051) vr=IS, vm=1, type=1 - DcmIntegerString ReferencedDoseReferenceNumber; - - }; - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultSequence internal flag used to mark the empty default sequence - */ - DRTReferencedDoseReferenceSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence = OFFalse); - - /** copy constructor - * @param copy sequence object to be copied - */ - DRTReferencedDoseReferenceSequenceInRTIonBeamsModule(const DRTReferencedDoseReferenceSequenceInRTIonBeamsModule ©); - - /** destructor - */ - virtual ~DRTReferencedDoseReferenceSequenceInRTIonBeamsModule(); - - /** assignment operator - * @param copy sequence object to be copied - * @return reference to this object - */ - DRTReferencedDoseReferenceSequenceInRTIonBeamsModule &operator=(const DRTReferencedDoseReferenceSequenceInRTIonBeamsModule ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if sequence is empty - * @return OFTrue if sequence is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if sequence is valid, i.e.\ not the empty default sequence - * @return OFTrue if sequence is valid, OFFalse otherwise - */ - OFBool isValid() const; - - /** get number of items in the sequence - * @return number of items - */ - size_t getNumberOfItems() const; - - /** goto first item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoFirstItem(); - - /** goto next item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoNextItem(); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num); - - /** get current item in the sequence - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getCurrentItem(Item *&item) const; - - /** get current item in the sequence - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getCurrentItem(); - - /** get current item in the sequence - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getCurrentItem() const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getItem(const size_t num, Item *&item); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getItem(const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getItem(const size_t num) const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &operator[](const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &operator[](const size_t num) const; - - /** add new item to the end of this sequence - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition addItem(Item *&item); - - /** insert new item into the sequence - * @param pos position where the new item is to be inserted (0..num) - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition insertItem(const size_t pos, Item *&item); - - /** remove particular item from the sequence - * @param pos position of the item to be removed (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition removeItem(const size_t pos); - - // --- input/output methods --- - - /** read sequence of items from dataset - * @param dataset reference to DICOM dataset from which the sequence should be read - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - /** write sequence of items to dataset - * @param dataset reference to DICOM dataset to which the sequence should be written - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - protected: - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListIterator(Item *) &iterator); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListConstIterator(Item *) &iterator) const; - - private: - - /// internal flag used to mark the empty default sequence - /*const*/ OFBool EmptyDefaultSequence; - - /// list of items in this sequence - OFList SequenceOfItems; - /// currently selected item - OFListIterator(Item *) CurrentItem; - /// empty default item - Item EmptyItem; - -}; - - -#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs8.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs8.h deleted file mode 100644 index 64ce8d7e..00000000 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs8.h +++ /dev/null @@ -1,564 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Header file for class DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#ifndef DRTRDRS8_H -#define DRTRDRS8_H - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/ofstd/oflist.h" // for standard list class -#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class - - -/** Interface class for ReferencedDoseReferenceSequence (300c,0050) in RTFractionSchemeModule - */ -class DCMTK_DCMRT_EXPORT DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule - : protected DRTTypes -{ - - public: - - /** Item class - */ - class DCMTK_DCMRT_EXPORT Item - : protected DRTTypes - { - - public: - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultItem flag used to mark the empty default item - */ - Item(const OFBool emptyDefaultItem = OFFalse); - - /** copy constructor - * @param copy item object to be copied - */ - Item(const Item ©); - - /** destructor - */ - virtual ~Item(); - - /** assignment operator - * @param copy item object to be copied - * @return reference to this object - */ - Item &operator=(const Item ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if item is empty - * @return OFTrue if item is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if item is valid, i.e.\ not the empty default item - * @return OFTrue if item is valid, OFFalse otherwise - */ - OFBool isValid() const; - - // --- input/output methods --- - - /** read elements from sequence item - * @param item reference to DICOM sequence item from which the elements should be read - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &item); - - /** write elements to sequence item - * @param item reference to DICOM sequence item to which the elements should be written - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &item); - - // --- get DICOM attribute values --- - - /** get ConstraintWeight (300a,0021) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getConstraintWeight(OFString &value, const signed long pos = 0) const; - - /** get ConstraintWeight (300a,0021) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getConstraintWeight(Float64 &value, const unsigned long pos = 0) const; - - /** get DeliveryMaximumDose (300a,0023) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getDeliveryMaximumDose(OFString &value, const signed long pos = 0) const; - - /** get DeliveryMaximumDose (300a,0023) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getDeliveryMaximumDose(Float64 &value, const unsigned long pos = 0) const; - - /** get DeliveryWarningDose (300a,0022) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getDeliveryWarningDose(OFString &value, const signed long pos = 0) const; - - /** get DeliveryWarningDose (300a,0022) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getDeliveryWarningDose(Float64 &value, const unsigned long pos = 0) const; - - /** get OrganAtRiskFullVolumeDose (300a,002a) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getOrganAtRiskFullVolumeDose(OFString &value, const signed long pos = 0) const; - - /** get OrganAtRiskFullVolumeDose (300a,002a) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getOrganAtRiskFullVolumeDose(Float64 &value, const unsigned long pos = 0) const; - - /** get OrganAtRiskLimitDose (300a,002b) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getOrganAtRiskLimitDose(OFString &value, const signed long pos = 0) const; - - /** get OrganAtRiskLimitDose (300a,002b) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getOrganAtRiskLimitDose(Float64 &value, const unsigned long pos = 0) const; - - /** get OrganAtRiskMaximumDose (300a,002c) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getOrganAtRiskMaximumDose(OFString &value, const signed long pos = 0) const; - - /** get OrganAtRiskMaximumDose (300a,002c) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getOrganAtRiskMaximumDose(Float64 &value, const unsigned long pos = 0) const; - - /** get OrganAtRiskOverdoseVolumeFraction (300a,002d) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getOrganAtRiskOverdoseVolumeFraction(OFString &value, const signed long pos = 0) const; - - /** get OrganAtRiskOverdoseVolumeFraction (300a,002d) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getOrganAtRiskOverdoseVolumeFraction(Float64 &value, const unsigned long pos = 0) const; - - /** get ReferencedDoseReferenceNumber (300c,0051) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedDoseReferenceNumber(OFString &value, const signed long pos = 0) const; - - /** get ReferencedDoseReferenceNumber (300c,0051) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedDoseReferenceNumber(Sint32 &value, const unsigned long pos = 0) const; - - /** get TargetMaximumDose (300a,0027) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getTargetMaximumDose(OFString &value, const signed long pos = 0) const; - - /** get TargetMaximumDose (300a,0027) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getTargetMaximumDose(Float64 &value, const unsigned long pos = 0) const; - - /** get TargetMinimumDose (300a,0025) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getTargetMinimumDose(OFString &value, const signed long pos = 0) const; - - /** get TargetMinimumDose (300a,0025) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getTargetMinimumDose(Float64 &value, const unsigned long pos = 0) const; - - /** get TargetPrescriptionDose (300a,0026) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getTargetPrescriptionDose(OFString &value, const signed long pos = 0) const; - - /** get TargetPrescriptionDose (300a,0026) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getTargetPrescriptionDose(Float64 &value, const unsigned long pos = 0) const; - - /** get TargetUnderdoseVolumeFraction (300a,0028) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getTargetUnderdoseVolumeFraction(OFString &value, const signed long pos = 0) const; - - /** get TargetUnderdoseVolumeFraction (300a,0028) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getTargetUnderdoseVolumeFraction(Float64 &value, const unsigned long pos = 0) const; - - // --- set DICOM attribute values --- - - /** set ConstraintWeight (300a,0021) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setConstraintWeight(const OFString &value, const OFBool check = OFTrue); - - /** set DeliveryMaximumDose (300a,0023) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setDeliveryMaximumDose(const OFString &value, const OFBool check = OFTrue); - - /** set DeliveryWarningDose (300a,0022) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setDeliveryWarningDose(const OFString &value, const OFBool check = OFTrue); - - /** set OrganAtRiskFullVolumeDose (300a,002a) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setOrganAtRiskFullVolumeDose(const OFString &value, const OFBool check = OFTrue); - - /** set OrganAtRiskLimitDose (300a,002b) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setOrganAtRiskLimitDose(const OFString &value, const OFBool check = OFTrue); - - /** set OrganAtRiskMaximumDose (300a,002c) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setOrganAtRiskMaximumDose(const OFString &value, const OFBool check = OFTrue); - - /** set OrganAtRiskOverdoseVolumeFraction (300a,002d) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setOrganAtRiskOverdoseVolumeFraction(const OFString &value, const OFBool check = OFTrue); - - /** set ReferencedDoseReferenceNumber (300c,0051) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setReferencedDoseReferenceNumber(const OFString &value, const OFBool check = OFTrue); - - /** set TargetMaximumDose (300a,0027) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setTargetMaximumDose(const OFString &value, const OFBool check = OFTrue); - - /** set TargetMinimumDose (300a,0025) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setTargetMinimumDose(const OFString &value, const OFBool check = OFTrue); - - /** set TargetPrescriptionDose (300a,0026) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setTargetPrescriptionDose(const OFString &value, const OFBool check = OFTrue); - - /** set TargetUnderdoseVolumeFraction (300a,0028) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setTargetUnderdoseVolumeFraction(const OFString &value, const OFBool check = OFTrue); - - private: - - /// internal flag used to mark the empty default item - /*const*/ OFBool EmptyDefaultItem; - - /// ConstraintWeight (300a,0021) vr=DS, vm=1, type=3 - DcmDecimalString ConstraintWeight; - /// DeliveryMaximumDose (300a,0023) vr=DS, vm=1, type=3 - DcmDecimalString DeliveryMaximumDose; - /// DeliveryWarningDose (300a,0022) vr=DS, vm=1, type=3 - DcmDecimalString DeliveryWarningDose; - /// OrganAtRiskFullVolumeDose (300a,002a) vr=DS, vm=1, type=3 - DcmDecimalString OrganAtRiskFullVolumeDose; - /// OrganAtRiskLimitDose (300a,002b) vr=DS, vm=1, type=3 - DcmDecimalString OrganAtRiskLimitDose; - /// OrganAtRiskMaximumDose (300a,002c) vr=DS, vm=1, type=3 - DcmDecimalString OrganAtRiskMaximumDose; - /// OrganAtRiskOverdoseVolumeFraction (300a,002d) vr=DS, vm=1, type=3 - DcmDecimalString OrganAtRiskOverdoseVolumeFraction; - /// ReferencedDoseReferenceNumber (300c,0051) vr=IS, vm=1, type=1 - DcmIntegerString ReferencedDoseReferenceNumber; - /// TargetMaximumDose (300a,0027) vr=DS, vm=1, type=3 - DcmDecimalString TargetMaximumDose; - /// TargetMinimumDose (300a,0025) vr=DS, vm=1, type=3 - DcmDecimalString TargetMinimumDose; - /// TargetPrescriptionDose (300a,0026) vr=DS, vm=1, type=3 - DcmDecimalString TargetPrescriptionDose; - /// TargetUnderdoseVolumeFraction (300a,0028) vr=DS, vm=1, type=3 - DcmDecimalString TargetUnderdoseVolumeFraction; - - }; - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultSequence internal flag used to mark the empty default sequence - */ - DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule(const OFBool emptyDefaultSequence = OFFalse); - - /** copy constructor - * @param copy sequence object to be copied - */ - DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule(const DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule ©); - - /** destructor - */ - virtual ~DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule(); - - /** assignment operator - * @param copy sequence object to be copied - * @return reference to this object - */ - DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule &operator=(const DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if sequence is empty - * @return OFTrue if sequence is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if sequence is valid, i.e.\ not the empty default sequence - * @return OFTrue if sequence is valid, OFFalse otherwise - */ - OFBool isValid() const; - - /** get number of items in the sequence - * @return number of items - */ - size_t getNumberOfItems() const; - - /** goto first item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoFirstItem(); - - /** goto next item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoNextItem(); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num); - - /** get current item in the sequence - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getCurrentItem(Item *&item) const; - - /** get current item in the sequence - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getCurrentItem(); - - /** get current item in the sequence - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getCurrentItem() const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getItem(const size_t num, Item *&item); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getItem(const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getItem(const size_t num) const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &operator[](const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &operator[](const size_t num) const; - - /** add new item to the end of this sequence - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition addItem(Item *&item); - - /** insert new item into the sequence - * @param pos position where the new item is to be inserted (0..num) - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition insertItem(const size_t pos, Item *&item); - - /** remove particular item from the sequence - * @param pos position of the item to be removed (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition removeItem(const size_t pos); - - // --- input/output methods --- - - /** read sequence of items from dataset - * @param dataset reference to DICOM dataset from which the sequence should be read - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - /** write sequence of items to dataset - * @param dataset reference to DICOM dataset to which the sequence should be written - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - protected: - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListIterator(Item *) &iterator); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListConstIterator(Item *) &iterator) const; - - private: - - /// internal flag used to mark the empty default sequence - /*const*/ OFBool EmptyDefaultSequence; - - /// list of items in this sequence - OFList SequenceOfItems; - /// currently selected item - OFListIterator(Item *) CurrentItem; - /// empty default item - Item EmptyItem; - -}; - - -#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrds.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrds.h index 3b1a8e37..4954cc12 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrds.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrds.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTReferencedDoseSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrdsis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrdsis.h new file mode 100644 index 00000000..92525bde --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrdsis.h @@ -0,0 +1,320 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTReferencedDirectSegmentInstanceSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTRDSIS_H +#define DRTRDSIS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for ReferencedDirectSegmentInstanceSequence (3010,004a) + */ +class DCMTK_DCMRT_EXPORT DRTReferencedDirectSegmentInstanceSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get ReferencedSOPClassUID (0008,1150) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const; + + /** get ReferencedSOPInstanceUID (0008,1155) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set ReferencedSOPClassUID (0008,1150) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue); + + /** set ReferencedSOPInstanceUID (0008,1155) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1 + DcmUniqueIdentifier ReferencedSOPClassUID; + /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1 + DcmUniqueIdentifier ReferencedSOPInstanceUID; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTReferencedDirectSegmentInstanceSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTReferencedDirectSegmentInstanceSequence(const DRTReferencedDirectSegmentInstanceSequence ©); + + /** destructor + */ + virtual ~DRTReferencedDirectSegmentInstanceSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTReferencedDirectSegmentInstanceSequence &operator=(const DRTReferencedDirectSegmentInstanceSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrecs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrecs.h index 46468c5a..aa20101a 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrecs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrecs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTROIElementalCompositionSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTROIElementalCompositionSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrfgs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrfgs.h index 3bf654b1..6cd2ada9 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrfgs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrfgs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTReferencedFractionGroupSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -19,8 +19,8 @@ #include "dcmtk/ofstd/oflist.h" // for standard list class #include "dcmtk/dcmrt/drttypes.h" // module-specific helper class -#include "dcmtk/dcmrt/seq/drtrbs2.h" // for ReferencedBeamSequence -#include "dcmtk/dcmrt/seq/drtrbas2.h" // for ReferencedBrachyApplicationSetupSequence +#include "dcmtk/dcmrt/seq/drtrbs1.h" // for ReferencedBeamSequence +#include "dcmtk/dcmrt/seq/drtrbas1.h" // for ReferencedBrachyApplicationSetupSequence /** Interface class for ReferencedFractionGroupSequence (300c,0020) in RTDoseModule @@ -262,13 +262,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedFractionGroupSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrfors.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrfors.h index e79462be..60932adb 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrfors.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrfors.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTReferencedFrameOfReferenceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -240,13 +240,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedFrameOfReferenceSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrics.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrics.h index 4aab4d86..d70de522 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrics.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrics.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTRTROIIdentificationCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -479,13 +479,13 @@ class DCMTK_DCMRT_EXPORT DRTRTROIIdentificationCodeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrims.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrims.h index df138dcd..f229d4a4 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrims.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrims.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTReferencedImageSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -295,13 +295,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedImageSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtris.h b/dcmrt/include/dcmtk/dcmrt/seq/drtris.h index a4cea7eb..3195cd26 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtris.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtris.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTReferencedInstanceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -256,13 +256,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedInstanceSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrlsds.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrlsds.h index a5bc9239..acde185f 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrlsds.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrlsds.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTRecordedLateralSpreadingDeviceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -262,13 +262,13 @@ class DCMTK_DCMRT_EXPORT DRTRecordedLateralSpreadingDeviceSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrmdrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrmdrs.h index 7d889d2c..0e2f1e33 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrmdrs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrmdrs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTReferencedMeasuredDoseReferenceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -276,13 +276,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedMeasuredDoseReferenceSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrms.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrms.h index d709af57..9da9a136 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrms.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrms.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTRangeModulatorSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -310,13 +310,13 @@ class DCMTK_DCMRT_EXPORT DRTRangeModulatorSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrmss1.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrmss1.h new file mode 100644 index 00000000..127aeff0 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrmss1.h @@ -0,0 +1,391 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTRangeModulatorSettingsSequenceInRTIonBeamsModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTRMSS1_H +#define DRTRMSS1_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for RangeModulatorSettingsSequence (300a,0380) in RTIonBeamsModule + */ +class DCMTK_DCMRT_EXPORT DRTRangeModulatorSettingsSequenceInRTIonBeamsModule + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get IsocenterToRangeModulatorDistance (300a,038a) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getIsocenterToRangeModulatorDistance(Float32 &value, const unsigned long pos = 0) const; + + /** get RangeModulatorGatingStartValue (300a,0382) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getRangeModulatorGatingStartValue(Float32 &value, const unsigned long pos = 0) const; + + /** get RangeModulatorGatingStartWaterEquivalentThickness (300a,0386) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getRangeModulatorGatingStartWaterEquivalentThickness(Float32 &value, const unsigned long pos = 0) const; + + /** get RangeModulatorGatingStopValue (300a,0384) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getRangeModulatorGatingStopValue(Float32 &value, const unsigned long pos = 0) const; + + /** get RangeModulatorGatingStopWaterEquivalentThickness (300a,0388) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getRangeModulatorGatingStopWaterEquivalentThickness(Float32 &value, const unsigned long pos = 0) const; + + /** get ReferencedRangeModulatorNumber (300c,0104) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedRangeModulatorNumber(OFString &value, const signed long pos = 0) const; + + /** get ReferencedRangeModulatorNumber (300c,0104) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedRangeModulatorNumber(Sint32 &value, const unsigned long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set IsocenterToRangeModulatorDistance (300a,038a) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setIsocenterToRangeModulatorDistance(const Float32 value, const unsigned long pos = 0); + + /** set RangeModulatorGatingStartValue (300a,0382) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setRangeModulatorGatingStartValue(const Float32 value, const unsigned long pos = 0); + + /** set RangeModulatorGatingStartWaterEquivalentThickness (300a,0386) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setRangeModulatorGatingStartWaterEquivalentThickness(const Float32 value, const unsigned long pos = 0); + + /** set RangeModulatorGatingStopValue (300a,0384) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setRangeModulatorGatingStopValue(const Float32 value, const unsigned long pos = 0); + + /** set RangeModulatorGatingStopWaterEquivalentThickness (300a,0388) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setRangeModulatorGatingStopWaterEquivalentThickness(const Float32 value, const unsigned long pos = 0); + + /** set ReferencedRangeModulatorNumber (300c,0104) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedRangeModulatorNumber(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// IsocenterToRangeModulatorDistance (300a,038a) vr=FL, vm=1, type=3 + DcmFloatingPointSingle IsocenterToRangeModulatorDistance; + /// RangeModulatorGatingStartValue (300a,0382) vr=FL, vm=1, type=1C + DcmFloatingPointSingle RangeModulatorGatingStartValue; + /// RangeModulatorGatingStartWaterEquivalentThickness (300a,0386) vr=FL, vm=1, type=3 + DcmFloatingPointSingle RangeModulatorGatingStartWaterEquivalentThickness; + /// RangeModulatorGatingStopValue (300a,0384) vr=FL, vm=1, type=1C + DcmFloatingPointSingle RangeModulatorGatingStopValue; + /// RangeModulatorGatingStopWaterEquivalentThickness (300a,0388) vr=FL, vm=1, type=3 + DcmFloatingPointSingle RangeModulatorGatingStopWaterEquivalentThickness; + /// ReferencedRangeModulatorNumber (300c,0104) vr=IS, vm=1, type=1 + DcmIntegerString ReferencedRangeModulatorNumber; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTRangeModulatorSettingsSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTRangeModulatorSettingsSequenceInRTIonBeamsModule(const DRTRangeModulatorSettingsSequenceInRTIonBeamsModule ©); + + /** destructor + */ + virtual ~DRTRangeModulatorSettingsSequenceInRTIonBeamsModule(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTRangeModulatorSettingsSequenceInRTIonBeamsModule &operator=(const DRTRangeModulatorSettingsSequenceInRTIonBeamsModule ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrmss2.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrmss2.h new file mode 100644 index 00000000..6bc12e3f --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrmss2.h @@ -0,0 +1,343 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTRMSS2_H +#define DRTRMSS2_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for RangeModulatorSettingsSequence (300a,0380) in RTIonBeamsSessionRecordModule + */ +class DCMTK_DCMRT_EXPORT DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get RangeModulatorGatingStartValue (300a,0382) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getRangeModulatorGatingStartValue(Float32 &value, const unsigned long pos = 0) const; + + /** get RangeModulatorGatingStopValue (300a,0384) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getRangeModulatorGatingStopValue(Float32 &value, const unsigned long pos = 0) const; + + /** get ReferencedRangeModulatorNumber (300c,0104) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedRangeModulatorNumber(OFString &value, const signed long pos = 0) const; + + /** get ReferencedRangeModulatorNumber (300c,0104) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedRangeModulatorNumber(Sint32 &value, const unsigned long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set RangeModulatorGatingStartValue (300a,0382) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setRangeModulatorGatingStartValue(const Float32 value, const unsigned long pos = 0); + + /** set RangeModulatorGatingStopValue (300a,0384) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setRangeModulatorGatingStopValue(const Float32 value, const unsigned long pos = 0); + + /** set ReferencedRangeModulatorNumber (300c,0104) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedRangeModulatorNumber(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// RangeModulatorGatingStartValue (300a,0382) vr=FL, vm=1, type=1C + DcmFloatingPointSingle RangeModulatorGatingStartValue; + /// RangeModulatorGatingStopValue (300a,0384) vr=FL, vm=1, type=1C + DcmFloatingPointSingle RangeModulatorGatingStopValue; + /// ReferencedRangeModulatorNumber (300c,0104) vr=IS, vm=1, type=1 + DcmIntegerString ReferencedRangeModulatorNumber; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule(const DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule ©); + + /** destructor + */ + virtual ~DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule &operator=(const DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrmss6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrmss6.h deleted file mode 100644 index cd446b1e..00000000 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrmss6.h +++ /dev/null @@ -1,391 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Header file for class DRTRangeModulatorSettingsSequenceInRTIonBeamsModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#ifndef DRTRMSS6_H -#define DRTRMSS6_H - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/ofstd/oflist.h" // for standard list class -#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class - - -/** Interface class for RangeModulatorSettingsSequence (300a,0380) in RTIonBeamsModule - */ -class DCMTK_DCMRT_EXPORT DRTRangeModulatorSettingsSequenceInRTIonBeamsModule - : protected DRTTypes -{ - - public: - - /** Item class - */ - class DCMTK_DCMRT_EXPORT Item - : protected DRTTypes - { - - public: - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultItem flag used to mark the empty default item - */ - Item(const OFBool emptyDefaultItem = OFFalse); - - /** copy constructor - * @param copy item object to be copied - */ - Item(const Item ©); - - /** destructor - */ - virtual ~Item(); - - /** assignment operator - * @param copy item object to be copied - * @return reference to this object - */ - Item &operator=(const Item ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if item is empty - * @return OFTrue if item is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if item is valid, i.e.\ not the empty default item - * @return OFTrue if item is valid, OFFalse otherwise - */ - OFBool isValid() const; - - // --- input/output methods --- - - /** read elements from sequence item - * @param item reference to DICOM sequence item from which the elements should be read - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &item); - - /** write elements to sequence item - * @param item reference to DICOM sequence item to which the elements should be written - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &item); - - // --- get DICOM attribute values --- - - /** get IsocenterToRangeModulatorDistance (300a,038a) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getIsocenterToRangeModulatorDistance(Float32 &value, const unsigned long pos = 0) const; - - /** get RangeModulatorGatingStartValue (300a,0382) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getRangeModulatorGatingStartValue(Float32 &value, const unsigned long pos = 0) const; - - /** get RangeModulatorGatingStartWaterEquivalentThickness (300a,0386) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getRangeModulatorGatingStartWaterEquivalentThickness(Float32 &value, const unsigned long pos = 0) const; - - /** get RangeModulatorGatingStopValue (300a,0384) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getRangeModulatorGatingStopValue(Float32 &value, const unsigned long pos = 0) const; - - /** get RangeModulatorGatingStopWaterEquivalentThickness (300a,0388) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getRangeModulatorGatingStopWaterEquivalentThickness(Float32 &value, const unsigned long pos = 0) const; - - /** get ReferencedRangeModulatorNumber (300c,0104) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedRangeModulatorNumber(OFString &value, const signed long pos = 0) const; - - /** get ReferencedRangeModulatorNumber (300c,0104) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedRangeModulatorNumber(Sint32 &value, const unsigned long pos = 0) const; - - // --- set DICOM attribute values --- - - /** set IsocenterToRangeModulatorDistance (300a,038a) - * @param value value to be set (should be valid for this VR) - * @param pos index of the value to be set (0..vm-1), vm=1 - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setIsocenterToRangeModulatorDistance(const Float32 value, const unsigned long pos = 0); - - /** set RangeModulatorGatingStartValue (300a,0382) - * @param value value to be set (should be valid for this VR) - * @param pos index of the value to be set (0..vm-1), vm=1 - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setRangeModulatorGatingStartValue(const Float32 value, const unsigned long pos = 0); - - /** set RangeModulatorGatingStartWaterEquivalentThickness (300a,0386) - * @param value value to be set (should be valid for this VR) - * @param pos index of the value to be set (0..vm-1), vm=1 - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setRangeModulatorGatingStartWaterEquivalentThickness(const Float32 value, const unsigned long pos = 0); - - /** set RangeModulatorGatingStopValue (300a,0384) - * @param value value to be set (should be valid for this VR) - * @param pos index of the value to be set (0..vm-1), vm=1 - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setRangeModulatorGatingStopValue(const Float32 value, const unsigned long pos = 0); - - /** set RangeModulatorGatingStopWaterEquivalentThickness (300a,0388) - * @param value value to be set (should be valid for this VR) - * @param pos index of the value to be set (0..vm-1), vm=1 - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setRangeModulatorGatingStopWaterEquivalentThickness(const Float32 value, const unsigned long pos = 0); - - /** set ReferencedRangeModulatorNumber (300c,0104) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setReferencedRangeModulatorNumber(const OFString &value, const OFBool check = OFTrue); - - private: - - /// internal flag used to mark the empty default item - /*const*/ OFBool EmptyDefaultItem; - - /// IsocenterToRangeModulatorDistance (300a,038a) vr=FL, vm=1, type=3 - DcmFloatingPointSingle IsocenterToRangeModulatorDistance; - /// RangeModulatorGatingStartValue (300a,0382) vr=FL, vm=1, type=1C - DcmFloatingPointSingle RangeModulatorGatingStartValue; - /// RangeModulatorGatingStartWaterEquivalentThickness (300a,0386) vr=FL, vm=1, type=3 - DcmFloatingPointSingle RangeModulatorGatingStartWaterEquivalentThickness; - /// RangeModulatorGatingStopValue (300a,0384) vr=FL, vm=1, type=1C - DcmFloatingPointSingle RangeModulatorGatingStopValue; - /// RangeModulatorGatingStopWaterEquivalentThickness (300a,0388) vr=FL, vm=1, type=3 - DcmFloatingPointSingle RangeModulatorGatingStopWaterEquivalentThickness; - /// ReferencedRangeModulatorNumber (300c,0104) vr=IS, vm=1, type=1 - DcmIntegerString ReferencedRangeModulatorNumber; - - }; - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultSequence internal flag used to mark the empty default sequence - */ - DRTRangeModulatorSettingsSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence = OFFalse); - - /** copy constructor - * @param copy sequence object to be copied - */ - DRTRangeModulatorSettingsSequenceInRTIonBeamsModule(const DRTRangeModulatorSettingsSequenceInRTIonBeamsModule ©); - - /** destructor - */ - virtual ~DRTRangeModulatorSettingsSequenceInRTIonBeamsModule(); - - /** assignment operator - * @param copy sequence object to be copied - * @return reference to this object - */ - DRTRangeModulatorSettingsSequenceInRTIonBeamsModule &operator=(const DRTRangeModulatorSettingsSequenceInRTIonBeamsModule ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if sequence is empty - * @return OFTrue if sequence is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if sequence is valid, i.e.\ not the empty default sequence - * @return OFTrue if sequence is valid, OFFalse otherwise - */ - OFBool isValid() const; - - /** get number of items in the sequence - * @return number of items - */ - size_t getNumberOfItems() const; - - /** goto first item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoFirstItem(); - - /** goto next item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoNextItem(); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num); - - /** get current item in the sequence - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getCurrentItem(Item *&item) const; - - /** get current item in the sequence - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getCurrentItem(); - - /** get current item in the sequence - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getCurrentItem() const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getItem(const size_t num, Item *&item); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getItem(const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getItem(const size_t num) const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &operator[](const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &operator[](const size_t num) const; - - /** add new item to the end of this sequence - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition addItem(Item *&item); - - /** insert new item into the sequence - * @param pos position where the new item is to be inserted (0..num) - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition insertItem(const size_t pos, Item *&item); - - /** remove particular item from the sequence - * @param pos position of the item to be removed (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition removeItem(const size_t pos); - - // --- input/output methods --- - - /** read sequence of items from dataset - * @param dataset reference to DICOM dataset from which the sequence should be read - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - /** write sequence of items to dataset - * @param dataset reference to DICOM dataset to which the sequence should be written - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - protected: - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListIterator(Item *) &iterator); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListConstIterator(Item *) &iterator) const; - - private: - - /// internal flag used to mark the empty default sequence - /*const*/ OFBool EmptyDefaultSequence; - - /// list of items in this sequence - OFList SequenceOfItems; - /// currently selected item - OFListIterator(Item *) CurrentItem; - /// empty default item - Item EmptyItem; - -}; - - -#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrmss7.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrmss7.h deleted file mode 100644 index d868d061..00000000 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrmss7.h +++ /dev/null @@ -1,343 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Header file for class DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#ifndef DRTRMSS7_H -#define DRTRMSS7_H - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/ofstd/oflist.h" // for standard list class -#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class - - -/** Interface class for RangeModulatorSettingsSequence (300a,0380) in RTIonBeamsSessionRecordModule - */ -class DCMTK_DCMRT_EXPORT DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule - : protected DRTTypes -{ - - public: - - /** Item class - */ - class DCMTK_DCMRT_EXPORT Item - : protected DRTTypes - { - - public: - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultItem flag used to mark the empty default item - */ - Item(const OFBool emptyDefaultItem = OFFalse); - - /** copy constructor - * @param copy item object to be copied - */ - Item(const Item ©); - - /** destructor - */ - virtual ~Item(); - - /** assignment operator - * @param copy item object to be copied - * @return reference to this object - */ - Item &operator=(const Item ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if item is empty - * @return OFTrue if item is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if item is valid, i.e.\ not the empty default item - * @return OFTrue if item is valid, OFFalse otherwise - */ - OFBool isValid() const; - - // --- input/output methods --- - - /** read elements from sequence item - * @param item reference to DICOM sequence item from which the elements should be read - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &item); - - /** write elements to sequence item - * @param item reference to DICOM sequence item to which the elements should be written - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &item); - - // --- get DICOM attribute values --- - - /** get RangeModulatorGatingStartValue (300a,0382) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getRangeModulatorGatingStartValue(Float32 &value, const unsigned long pos = 0) const; - - /** get RangeModulatorGatingStopValue (300a,0384) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getRangeModulatorGatingStopValue(Float32 &value, const unsigned long pos = 0) const; - - /** get ReferencedRangeModulatorNumber (300c,0104) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedRangeModulatorNumber(OFString &value, const signed long pos = 0) const; - - /** get ReferencedRangeModulatorNumber (300c,0104) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedRangeModulatorNumber(Sint32 &value, const unsigned long pos = 0) const; - - // --- set DICOM attribute values --- - - /** set RangeModulatorGatingStartValue (300a,0382) - * @param value value to be set (should be valid for this VR) - * @param pos index of the value to be set (0..vm-1), vm=1 - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setRangeModulatorGatingStartValue(const Float32 value, const unsigned long pos = 0); - - /** set RangeModulatorGatingStopValue (300a,0384) - * @param value value to be set (should be valid for this VR) - * @param pos index of the value to be set (0..vm-1), vm=1 - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setRangeModulatorGatingStopValue(const Float32 value, const unsigned long pos = 0); - - /** set ReferencedRangeModulatorNumber (300c,0104) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setReferencedRangeModulatorNumber(const OFString &value, const OFBool check = OFTrue); - - private: - - /// internal flag used to mark the empty default item - /*const*/ OFBool EmptyDefaultItem; - - /// RangeModulatorGatingStartValue (300a,0382) vr=FL, vm=1, type=1C - DcmFloatingPointSingle RangeModulatorGatingStartValue; - /// RangeModulatorGatingStopValue (300a,0384) vr=FL, vm=1, type=1C - DcmFloatingPointSingle RangeModulatorGatingStopValue; - /// ReferencedRangeModulatorNumber (300c,0104) vr=IS, vm=1, type=1 - DcmIntegerString ReferencedRangeModulatorNumber; - - }; - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultSequence internal flag used to mark the empty default sequence - */ - DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence = OFFalse); - - /** copy constructor - * @param copy sequence object to be copied - */ - DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule(const DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule ©); - - /** destructor - */ - virtual ~DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule(); - - /** assignment operator - * @param copy sequence object to be copied - * @return reference to this object - */ - DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule &operator=(const DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if sequence is empty - * @return OFTrue if sequence is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if sequence is valid, i.e.\ not the empty default sequence - * @return OFTrue if sequence is valid, OFFalse otherwise - */ - OFBool isValid() const; - - /** get number of items in the sequence - * @return number of items - */ - size_t getNumberOfItems() const; - - /** goto first item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoFirstItem(); - - /** goto next item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoNextItem(); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num); - - /** get current item in the sequence - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getCurrentItem(Item *&item) const; - - /** get current item in the sequence - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getCurrentItem(); - - /** get current item in the sequence - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getCurrentItem() const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getItem(const size_t num, Item *&item); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getItem(const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getItem(const size_t num) const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &operator[](const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &operator[](const size_t num) const; - - /** add new item to the end of this sequence - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition addItem(Item *&item); - - /** insert new item into the sequence - * @param pos position where the new item is to be inserted (0..num) - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition insertItem(const size_t pos, Item *&item); - - /** remove particular item from the sequence - * @param pos position of the item to be removed (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition removeItem(const size_t pos); - - // --- input/output methods --- - - /** read sequence of items from dataset - * @param dataset reference to DICOM dataset from which the sequence should be read - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - /** write sequence of items to dataset - * @param dataset reference to DICOM dataset to which the sequence should be written - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - protected: - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListIterator(Item *) &iterator); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListConstIterator(Item *) &iterator) const; - - private: - - /// internal flag used to mark the empty default sequence - /*const*/ OFBool EmptyDefaultSequence; - - /// list of items in this sequence - OFList SequenceOfItems; - /// currently selected item - OFListIterator(Item *) CurrentItem; - /// empty default item - Item EmptyItem; - -}; - - -#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrpcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrpcs.h index 584e3e04..07dfeca4 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrpcs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrpcs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTRequestedProcedureCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTRequestedProcedureCodeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrpis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrpis.h index 79aad15e..9f1c1223 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrpis.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrpis.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTReferringPhysicianIdentificationSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -20,6 +20,7 @@ #include "dcmtk/ofstd/oflist.h" // for standard list class #include "dcmtk/dcmrt/drttypes.h" // module-specific helper class #include "dcmtk/dcmrt/seq/drtics.h" // for InstitutionCodeSequence +#include "dcmtk/dcmrt/seq/drtidcs.h" // for InstitutionalDepartmentTypeCodeSequence #include "dcmtk/dcmrt/seq/drtpics.h" // for PersonIdentificationCodeSequence @@ -107,6 +108,13 @@ class DCMTK_DCMRT_EXPORT DRTReferringPhysicianIdentificationSequence */ OFCondition getInstitutionName(OFString &value, const signed long pos = 0) const; + /** get InstitutionalDepartmentName (0008,1040) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getInstitutionalDepartmentName(OFString &value, const signed long pos = 0) const; + /** get PersonAddress (0040,1102) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -142,6 +150,18 @@ class DCMTK_DCMRT_EXPORT DRTReferringPhysicianIdentificationSequence const DRTInstitutionCodeSequence &getInstitutionCodeSequence() const { return InstitutionCodeSequence; } + /** get InstitutionalDepartmentTypeCodeSequence (0008,1041) + * @return reference to sequence element + */ + DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() + { return InstitutionalDepartmentTypeCodeSequence; } + + /** get InstitutionalDepartmentTypeCodeSequence (0008,1041) + * @return const reference to sequence element + */ + const DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() const + { return InstitutionalDepartmentTypeCodeSequence; } + /** get PersonIdentificationCodeSequence (0040,1101) * @return reference to sequence element */ @@ -170,6 +190,13 @@ class DCMTK_DCMRT_EXPORT DRTReferringPhysicianIdentificationSequence */ OFCondition setInstitutionName(const OFString &value, const OFBool check = OFTrue); + /** set InstitutionalDepartmentName (0008,1040) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setInstitutionalDepartmentName(const OFString &value, const OFBool check = OFTrue); + /** set PersonAddress (0040,1102) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (ST) and VM (1) if enabled @@ -202,6 +229,10 @@ class DCMTK_DCMRT_EXPORT DRTReferringPhysicianIdentificationSequence DRTInstitutionCodeSequence InstitutionCodeSequence; /// InstitutionName (0008,0080) vr=LO, vm=1, type=1C DcmLongString InstitutionName; + /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3 + DcmLongString InstitutionalDepartmentName; + /// InstitutionalDepartmentTypeCodeSequence (0008,1041) vr=SQ, vm=1, type=3 + DRTInstitutionalDepartmentTypeCodeSequence InstitutionalDepartmentTypeCodeSequence; /// PersonAddress (0040,1102) vr=ST, vm=1, type=3 DcmShortText PersonAddress; /// PersonIdentificationCodeSequence (0040,1101) vr=SQ, vm=1, type=1 @@ -319,13 +350,13 @@ class DCMTK_DCMRT_EXPORT DRTReferringPhysicianIdentificationSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrppcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrppcs.h index 72283407..165d838c 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrppcs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrppcs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTReasonForPerformedProcedureCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTReasonForPerformedProcedureCodeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrpphs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrpphs.h index dd66646b..41b325d9 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrpphs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrpphs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTReferencedPatientPhotoSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -347,13 +347,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedPatientPhotoSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrpprs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrpprs.h new file mode 100644 index 00000000..180ea61d --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrpprs.h @@ -0,0 +1,352 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTReferencedPerformedProtocolSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTRPPRS_H +#define DRTRPPRS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for ReferencedPerformedProtocolSequence (0018,990d) + */ +class DCMTK_DCMRT_EXPORT DRTReferencedPerformedProtocolSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get ReferencedSOPClassUID (0008,1150) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const; + + /** get ReferencedSOPInstanceUID (0008,1155) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const; + + /** get SourceAcquisitionProtocolElementNumber (0018,9938) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getSourceAcquisitionProtocolElementNumber(Uint16 &value, const unsigned long pos = 0) const; + + /** get SourceReconstructionProtocolElementNumber (0018,993a) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getSourceReconstructionProtocolElementNumber(Uint16 &value, const unsigned long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set ReferencedSOPClassUID (0008,1150) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue); + + /** set ReferencedSOPInstanceUID (0008,1155) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue); + + /** set SourceAcquisitionProtocolElementNumber (0018,9938) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1-n + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setSourceAcquisitionProtocolElementNumber(const Uint16 value, const unsigned long pos = 0); + + /** set SourceReconstructionProtocolElementNumber (0018,993a) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1-n + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setSourceReconstructionProtocolElementNumber(const Uint16 value, const unsigned long pos = 0); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1 + DcmUniqueIdentifier ReferencedSOPClassUID; + /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1 + DcmUniqueIdentifier ReferencedSOPInstanceUID; + /// SourceAcquisitionProtocolElementNumber (0018,9938) vr=US, vm=1-n, type=3 + DcmUnsignedShort SourceAcquisitionProtocolElementNumber; + /// SourceReconstructionProtocolElementNumber (0018,993a) vr=US, vm=1-n, type=3 + DcmUnsignedShort SourceReconstructionProtocolElementNumber; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTReferencedPerformedProtocolSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTReferencedPerformedProtocolSequence(const DRTReferencedPerformedProtocolSequence ©); + + /** destructor + */ + virtual ~DRTReferencedPerformedProtocolSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTReferencedPerformedProtocolSequence &operator=(const DRTReferencedPerformedProtocolSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrpps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrpps.h index 5941a2d6..f00adaf1 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrpps.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrpps.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTROIPhysicalPropertiesSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -263,13 +263,13 @@ class DCMTK_DCMRT_EXPORT DRTROIPhysicalPropertiesSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrppss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrppss.h index a6dcfcb8..b9bb802c 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrppss.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrppss.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTReferencedPerformedProcedureStepSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedPerformedProcedureStepSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrps.h index 5f476cf7..53be7756 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrps.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrps.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTReferencedPatientSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedPatientSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrris1.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrris1.h index 5c11b0d4..54b2dd8b 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrris1.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrris1.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTReferencedReferenceImageSequenceInRTBeamsModule * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -308,13 +308,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedReferenceImageSequenceInRTBeamsModule */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrris2.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrris2.h new file mode 100644 index 00000000..e31ee556 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrris2.h @@ -0,0 +1,343 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTReferencedReferenceImageSequenceInRTIonBeamsModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTRRIS2_H +#define DRTRRIS2_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for ReferencedReferenceImageSequence (300c,0042) in RTIonBeamsModule + */ +class DCMTK_DCMRT_EXPORT DRTReferencedReferenceImageSequenceInRTIonBeamsModule + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get ReferenceImageNumber (300a,00c8) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferenceImageNumber(OFString &value, const signed long pos = 0) const; + + /** get ReferenceImageNumber (300a,00c8) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferenceImageNumber(Sint32 &value, const unsigned long pos = 0) const; + + /** get ReferencedSOPClassUID (0008,1150) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const; + + /** get ReferencedSOPInstanceUID (0008,1155) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set ReferenceImageNumber (300a,00c8) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferenceImageNumber(const OFString &value, const OFBool check = OFTrue); + + /** set ReferencedSOPClassUID (0008,1150) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue); + + /** set ReferencedSOPInstanceUID (0008,1155) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// ReferenceImageNumber (300a,00c8) vr=IS, vm=1, type=1 + DcmIntegerString ReferenceImageNumber; + /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1 + DcmUniqueIdentifier ReferencedSOPClassUID; + /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1 + DcmUniqueIdentifier ReferencedSOPInstanceUID; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTReferencedReferenceImageSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTReferencedReferenceImageSequenceInRTIonBeamsModule(const DRTReferencedReferenceImageSequenceInRTIonBeamsModule ©); + + /** destructor + */ + virtual ~DRTReferencedReferenceImageSequenceInRTIonBeamsModule(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTReferencedReferenceImageSequenceInRTIonBeamsModule &operator=(const DRTReferencedReferenceImageSequenceInRTIonBeamsModule ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrris3.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrris3.h new file mode 100644 index 00000000..6e0815ff --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrris3.h @@ -0,0 +1,320 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTRRIS3_H +#define DRTRRIS3_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for ReferencedReferenceImageSequence (300c,0042) in RTBrachyApplicationSetupsModule + */ +class DCMTK_DCMRT_EXPORT DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get ReferencedSOPClassUID (0008,1150) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const; + + /** get ReferencedSOPInstanceUID (0008,1155) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set ReferencedSOPClassUID (0008,1150) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue); + + /** set ReferencedSOPInstanceUID (0008,1155) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1 + DcmUniqueIdentifier ReferencedSOPClassUID; + /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1 + DcmUniqueIdentifier ReferencedSOPInstanceUID; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule(const DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule ©); + + /** destructor + */ + virtual ~DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule &operator=(const DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrris6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrris6.h deleted file mode 100644 index 84544352..00000000 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrris6.h +++ /dev/null @@ -1,343 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Header file for class DRTReferencedReferenceImageSequenceInRTIonBeamsModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#ifndef DRTRRIS6_H -#define DRTRRIS6_H - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/ofstd/oflist.h" // for standard list class -#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class - - -/** Interface class for ReferencedReferenceImageSequence (300c,0042) in RTIonBeamsModule - */ -class DCMTK_DCMRT_EXPORT DRTReferencedReferenceImageSequenceInRTIonBeamsModule - : protected DRTTypes -{ - - public: - - /** Item class - */ - class DCMTK_DCMRT_EXPORT Item - : protected DRTTypes - { - - public: - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultItem flag used to mark the empty default item - */ - Item(const OFBool emptyDefaultItem = OFFalse); - - /** copy constructor - * @param copy item object to be copied - */ - Item(const Item ©); - - /** destructor - */ - virtual ~Item(); - - /** assignment operator - * @param copy item object to be copied - * @return reference to this object - */ - Item &operator=(const Item ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if item is empty - * @return OFTrue if item is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if item is valid, i.e.\ not the empty default item - * @return OFTrue if item is valid, OFFalse otherwise - */ - OFBool isValid() const; - - // --- input/output methods --- - - /** read elements from sequence item - * @param item reference to DICOM sequence item from which the elements should be read - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &item); - - /** write elements to sequence item - * @param item reference to DICOM sequence item to which the elements should be written - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &item); - - // --- get DICOM attribute values --- - - /** get ReferenceImageNumber (300a,00c8) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferenceImageNumber(OFString &value, const signed long pos = 0) const; - - /** get ReferenceImageNumber (300a,00c8) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferenceImageNumber(Sint32 &value, const unsigned long pos = 0) const; - - /** get ReferencedSOPClassUID (0008,1150) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const; - - /** get ReferencedSOPInstanceUID (0008,1155) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const; - - // --- set DICOM attribute values --- - - /** set ReferenceImageNumber (300a,00c8) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setReferenceImageNumber(const OFString &value, const OFBool check = OFTrue); - - /** set ReferencedSOPClassUID (0008,1150) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue); - - /** set ReferencedSOPInstanceUID (0008,1155) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue); - - private: - - /// internal flag used to mark the empty default item - /*const*/ OFBool EmptyDefaultItem; - - /// ReferenceImageNumber (300a,00c8) vr=IS, vm=1, type=1 - DcmIntegerString ReferenceImageNumber; - /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1 - DcmUniqueIdentifier ReferencedSOPClassUID; - /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1 - DcmUniqueIdentifier ReferencedSOPInstanceUID; - - }; - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultSequence internal flag used to mark the empty default sequence - */ - DRTReferencedReferenceImageSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence = OFFalse); - - /** copy constructor - * @param copy sequence object to be copied - */ - DRTReferencedReferenceImageSequenceInRTIonBeamsModule(const DRTReferencedReferenceImageSequenceInRTIonBeamsModule ©); - - /** destructor - */ - virtual ~DRTReferencedReferenceImageSequenceInRTIonBeamsModule(); - - /** assignment operator - * @param copy sequence object to be copied - * @return reference to this object - */ - DRTReferencedReferenceImageSequenceInRTIonBeamsModule &operator=(const DRTReferencedReferenceImageSequenceInRTIonBeamsModule ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if sequence is empty - * @return OFTrue if sequence is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if sequence is valid, i.e.\ not the empty default sequence - * @return OFTrue if sequence is valid, OFFalse otherwise - */ - OFBool isValid() const; - - /** get number of items in the sequence - * @return number of items - */ - size_t getNumberOfItems() const; - - /** goto first item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoFirstItem(); - - /** goto next item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoNextItem(); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num); - - /** get current item in the sequence - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getCurrentItem(Item *&item) const; - - /** get current item in the sequence - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getCurrentItem(); - - /** get current item in the sequence - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getCurrentItem() const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getItem(const size_t num, Item *&item); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getItem(const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getItem(const size_t num) const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &operator[](const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &operator[](const size_t num) const; - - /** add new item to the end of this sequence - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition addItem(Item *&item); - - /** insert new item into the sequence - * @param pos position where the new item is to be inserted (0..num) - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition insertItem(const size_t pos, Item *&item); - - /** remove particular item from the sequence - * @param pos position of the item to be removed (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition removeItem(const size_t pos); - - // --- input/output methods --- - - /** read sequence of items from dataset - * @param dataset reference to DICOM dataset from which the sequence should be read - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - /** write sequence of items to dataset - * @param dataset reference to DICOM dataset to which the sequence should be written - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - protected: - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListIterator(Item *) &iterator); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListConstIterator(Item *) &iterator) const; - - private: - - /// internal flag used to mark the empty default sequence - /*const*/ OFBool EmptyDefaultSequence; - - /// list of items in this sequence - OFList SequenceOfItems; - /// currently selected item - OFListIterator(Item *) CurrentItem; - /// empty default item - Item EmptyItem; - -}; - - -#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrris9.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrris9.h deleted file mode 100644 index 66ff13ac..00000000 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrris9.h +++ /dev/null @@ -1,320 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Header file for class DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#ifndef DRTRRIS9_H -#define DRTRRIS9_H - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/ofstd/oflist.h" // for standard list class -#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class - - -/** Interface class for ReferencedReferenceImageSequence (300c,0042) in RTBrachyApplicationSetupsModule - */ -class DCMTK_DCMRT_EXPORT DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule - : protected DRTTypes -{ - - public: - - /** Item class - */ - class DCMTK_DCMRT_EXPORT Item - : protected DRTTypes - { - - public: - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultItem flag used to mark the empty default item - */ - Item(const OFBool emptyDefaultItem = OFFalse); - - /** copy constructor - * @param copy item object to be copied - */ - Item(const Item ©); - - /** destructor - */ - virtual ~Item(); - - /** assignment operator - * @param copy item object to be copied - * @return reference to this object - */ - Item &operator=(const Item ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if item is empty - * @return OFTrue if item is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if item is valid, i.e.\ not the empty default item - * @return OFTrue if item is valid, OFFalse otherwise - */ - OFBool isValid() const; - - // --- input/output methods --- - - /** read elements from sequence item - * @param item reference to DICOM sequence item from which the elements should be read - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &item); - - /** write elements to sequence item - * @param item reference to DICOM sequence item to which the elements should be written - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &item); - - // --- get DICOM attribute values --- - - /** get ReferencedSOPClassUID (0008,1150) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const; - - /** get ReferencedSOPInstanceUID (0008,1155) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const; - - // --- set DICOM attribute values --- - - /** set ReferencedSOPClassUID (0008,1150) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue); - - /** set ReferencedSOPInstanceUID (0008,1155) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue); - - private: - - /// internal flag used to mark the empty default item - /*const*/ OFBool EmptyDefaultItem; - - /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1 - DcmUniqueIdentifier ReferencedSOPClassUID; - /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1 - DcmUniqueIdentifier ReferencedSOPInstanceUID; - - }; - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultSequence internal flag used to mark the empty default sequence - */ - DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule(const OFBool emptyDefaultSequence = OFFalse); - - /** copy constructor - * @param copy sequence object to be copied - */ - DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule(const DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule ©); - - /** destructor - */ - virtual ~DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule(); - - /** assignment operator - * @param copy sequence object to be copied - * @return reference to this object - */ - DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule &operator=(const DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if sequence is empty - * @return OFTrue if sequence is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if sequence is valid, i.e.\ not the empty default sequence - * @return OFTrue if sequence is valid, OFFalse otherwise - */ - OFBool isValid() const; - - /** get number of items in the sequence - * @return number of items - */ - size_t getNumberOfItems() const; - - /** goto first item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoFirstItem(); - - /** goto next item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoNextItem(); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num); - - /** get current item in the sequence - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getCurrentItem(Item *&item) const; - - /** get current item in the sequence - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getCurrentItem(); - - /** get current item in the sequence - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getCurrentItem() const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getItem(const size_t num, Item *&item); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getItem(const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getItem(const size_t num) const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &operator[](const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &operator[](const size_t num) const; - - /** add new item to the end of this sequence - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition addItem(Item *&item); - - /** insert new item into the sequence - * @param pos position where the new item is to be inserted (0..num) - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition insertItem(const size_t pos, Item *&item); - - /** remove particular item from the sequence - * @param pos position of the item to be removed (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition removeItem(const size_t pos); - - // --- input/output methods --- - - /** read sequence of items from dataset - * @param dataset reference to DICOM dataset from which the sequence should be read - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - /** write sequence of items to dataset - * @param dataset reference to DICOM dataset to which the sequence should be written - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - protected: - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListIterator(Item *) &iterator); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListConstIterator(Item *) &iterator) const; - - private: - - /// internal flag used to mark the empty default sequence - /*const*/ OFBool EmptyDefaultSequence; - - /// list of items in this sequence - OFList SequenceOfItems; - /// currently selected item - OFListIterator(Item *) CurrentItem; - /// empty default item - Item EmptyItem; - -}; - - -#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrrms.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrrms.h index 94bb3038..77738368 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrrms.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrrms.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTRecordedRangeModulatorSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -294,13 +294,13 @@ class DCMTK_DCMRT_EXPORT DRTRecordedRangeModulatorSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrros.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrros.h index 1a2ae22a..55c58303 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrros.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrros.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTRTROIObservationsSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -19,11 +19,15 @@ #include "dcmtk/ofstd/oflist.h" // for standard list class #include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtars.h" // for AnatomicRegionSequence +#include "dcmtk/dcmrt/seq/drtpass.h" // for PrimaryAnatomicStructureSequence #include "dcmtk/dcmrt/seq/drtrpps.h" // for ROIPhysicalPropertiesSequence #include "dcmtk/dcmrt/seq/drtrics.h" // for RTROIIdentificationCodeSequence #include "dcmtk/dcmrt/seq/drtrrs.h" // for RTRelatedROISequence #include "dcmtk/dcmrt/seq/drtrrros.h" // for RelatedRTROIObservationsSequence #include "dcmtk/dcmrt/seq/drtspccs.h" // for SegmentedPropertyCategoryCodeSequence +#include "dcmtk/dcmrt/seq/drttrccs.h" // for TherapeuticRoleCategoryCodeSequence +#include "dcmtk/dcmrt/seq/drttrtcs.h" // for TherapeuticRoleTypeCodeSequence /** Interface class for RTROIObservationsSequence (3006,0080) @@ -124,20 +128,6 @@ class DCMTK_DCMRT_EXPORT DRTRTROIObservationsSequence */ OFCondition getROIInterpreter(OFString &value, const signed long pos = 0) const; - /** get ROIObservationDescription (3006,0088) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getROIObservationDescription(OFString &value, const signed long pos = 0) const; - - /** get ROIObservationLabel (3006,0085) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getROIObservationLabel(OFString &value, const signed long pos = 0) const; - /** get RTROIInterpretedType (3006,00a4) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -161,6 +151,30 @@ class DCMTK_DCMRT_EXPORT DRTRTROIObservationsSequence // --- get DICOM sequence attributes --- + /** get AnatomicRegionSequence (0008,2218) + * @return reference to sequence element + */ + DRTAnatomicRegionSequence &getAnatomicRegionSequence() + { return AnatomicRegionSequence; } + + /** get AnatomicRegionSequence (0008,2218) + * @return const reference to sequence element + */ + const DRTAnatomicRegionSequence &getAnatomicRegionSequence() const + { return AnatomicRegionSequence; } + + /** get PrimaryAnatomicStructureSequence (0008,2228) + * @return reference to sequence element + */ + DRTPrimaryAnatomicStructureSequence &getPrimaryAnatomicStructureSequence() + { return PrimaryAnatomicStructureSequence; } + + /** get PrimaryAnatomicStructureSequence (0008,2228) + * @return const reference to sequence element + */ + const DRTPrimaryAnatomicStructureSequence &getPrimaryAnatomicStructureSequence() const + { return PrimaryAnatomicStructureSequence; } + /** get ROIPhysicalPropertiesSequence (3006,00b0) * @return reference to sequence element */ @@ -221,6 +235,30 @@ class DCMTK_DCMRT_EXPORT DRTRTROIObservationsSequence const DRTSegmentedPropertyCategoryCodeSequence &getSegmentedPropertyCategoryCodeSequence() const { return SegmentedPropertyCategoryCodeSequence; } + /** get TherapeuticRoleCategoryCodeSequence (3010,0064) + * @return reference to sequence element + */ + DRTTherapeuticRoleCategoryCodeSequence &getTherapeuticRoleCategoryCodeSequence() + { return TherapeuticRoleCategoryCodeSequence; } + + /** get TherapeuticRoleCategoryCodeSequence (3010,0064) + * @return const reference to sequence element + */ + const DRTTherapeuticRoleCategoryCodeSequence &getTherapeuticRoleCategoryCodeSequence() const + { return TherapeuticRoleCategoryCodeSequence; } + + /** get TherapeuticRoleTypeCodeSequence (3010,0065) + * @return reference to sequence element + */ + DRTTherapeuticRoleTypeCodeSequence &getTherapeuticRoleTypeCodeSequence() + { return TherapeuticRoleTypeCodeSequence; } + + /** get TherapeuticRoleTypeCodeSequence (3010,0065) + * @return const reference to sequence element + */ + const DRTTherapeuticRoleTypeCodeSequence &getTherapeuticRoleTypeCodeSequence() const + { return TherapeuticRoleTypeCodeSequence; } + // --- set DICOM attribute values --- /** set MaterialID (300a,00e1) @@ -244,20 +282,6 @@ class DCMTK_DCMRT_EXPORT DRTRTROIObservationsSequence */ OFCondition setROIInterpreter(const OFString &value, const OFBool check = OFTrue); - /** set ROIObservationDescription (3006,0088) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (ST) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setROIObservationDescription(const OFString &value, const OFBool check = OFTrue); - - /** set ROIObservationLabel (3006,0085) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setROIObservationLabel(const OFString &value, const OFBool check = OFTrue); - /** set RTROIInterpretedType (3006,00a4) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled @@ -277,16 +301,16 @@ class DCMTK_DCMRT_EXPORT DRTRTROIObservationsSequence /// internal flag used to mark the empty default item /*const*/ OFBool EmptyDefaultItem; + /// AnatomicRegionSequence (0008,2218) vr=SQ, vm=1, type=3 + DRTAnatomicRegionSequence AnatomicRegionSequence; /// MaterialID (300a,00e1) vr=SH, vm=1, type=3 DcmShortString MaterialID; /// ObservationNumber (3006,0082) vr=IS, vm=1, type=1 DcmIntegerString ObservationNumber; + /// PrimaryAnatomicStructureSequence (0008,2228) vr=SQ, vm=1, type=3 + DRTPrimaryAnatomicStructureSequence PrimaryAnatomicStructureSequence; /// ROIInterpreter (3006,00a6) vr=PN, vm=1, type=2 DcmPersonName ROIInterpreter; - /// ROIObservationDescription (3006,0088) vr=ST, vm=1, type=3 - DcmShortText ROIObservationDescription; - /// ROIObservationLabel (3006,0085) vr=SH, vm=1, type=3 - DcmShortString ROIObservationLabel; /// ROIPhysicalPropertiesSequence (3006,00b0) vr=SQ, vm=1, type=3 DRTROIPhysicalPropertiesSequence ROIPhysicalPropertiesSequence; /// RTROIIdentificationCodeSequence (3006,0086) vr=SQ, vm=1, type=3 @@ -301,6 +325,10 @@ class DCMTK_DCMRT_EXPORT DRTRTROIObservationsSequence DRTRelatedRTROIObservationsSequence RelatedRTROIObservationsSequence; /// SegmentedPropertyCategoryCodeSequence (0062,0003) vr=SQ, vm=1, type=3 DRTSegmentedPropertyCategoryCodeSequence SegmentedPropertyCategoryCodeSequence; + /// TherapeuticRoleCategoryCodeSequence (3010,0064) vr=SQ, vm=1, type=3 + DRTTherapeuticRoleCategoryCodeSequence TherapeuticRoleCategoryCodeSequence; + /// TherapeuticRoleTypeCodeSequence (3010,0065) vr=SQ, vm=1, type=3 + DRTTherapeuticRoleTypeCodeSequence TherapeuticRoleTypeCodeSequence; }; @@ -410,13 +438,13 @@ class DCMTK_DCMRT_EXPORT DRTRTROIObservationsSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrrpcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrrpcs.h index abd41305..76f775f1 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrrpcs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrrpcs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTReasonForRequestedProcedureCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTReasonForRequestedProcedureCodeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrrros.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrrros.h index 842abbe4..da876b2f 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrrros.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrrros.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTRelatedRTROIObservationsSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -230,13 +230,13 @@ class DCMTK_DCMRT_EXPORT DRTRelatedRTROIObservationsSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrrs.h index ced48755..d804f5d1 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrrs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrrs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTRTRelatedROISequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -246,13 +246,13 @@ class DCMTK_DCMRT_EXPORT DRTRTRelatedROISequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrrshs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrrshs.h index a6805248..ce4f5c09 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrrshs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrrshs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTRecordedRangeShifterSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -262,13 +262,13 @@ class DCMTK_DCMRT_EXPORT DRTRecordedRangeShifterSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps.h deleted file mode 100644 index 0b9ec681..00000000 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps.h +++ /dev/null @@ -1,337 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Header file for class DRTReferencedRTPlanSequence - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#ifndef DRTRRTPS_H -#define DRTRRTPS_H - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/ofstd/oflist.h" // for standard list class -#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class -#include "dcmtk/dcmrt/seq/drtrfgs.h" // for ReferencedFractionGroupSequence - - -/** Interface class for ReferencedRTPlanSequence (300c,0002) in RTDoseModule - */ -class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequence - : protected DRTTypes -{ - - public: - - /** Item class - */ - class DCMTK_DCMRT_EXPORT Item - : protected DRTTypes - { - - public: - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultItem flag used to mark the empty default item - */ - Item(const OFBool emptyDefaultItem = OFFalse); - - /** copy constructor - * @param copy item object to be copied - */ - Item(const Item ©); - - /** destructor - */ - virtual ~Item(); - - /** assignment operator - * @param copy item object to be copied - * @return reference to this object - */ - Item &operator=(const Item ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if item is empty - * @return OFTrue if item is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if item is valid, i.e.\ not the empty default item - * @return OFTrue if item is valid, OFFalse otherwise - */ - OFBool isValid() const; - - // --- input/output methods --- - - /** read elements from sequence item - * @param item reference to DICOM sequence item from which the elements should be read - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &item); - - /** write elements to sequence item - * @param item reference to DICOM sequence item to which the elements should be written - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &item); - - // --- get DICOM attribute values --- - - /** get ReferencedSOPClassUID (0008,1150) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const; - - /** get ReferencedSOPInstanceUID (0008,1155) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const; - - // --- get DICOM sequence attributes --- - - /** get ReferencedFractionGroupSequence (300c,0020) - * @return reference to sequence element - */ - DRTReferencedFractionGroupSequence &getReferencedFractionGroupSequence() - { return ReferencedFractionGroupSequence; } - - /** get ReferencedFractionGroupSequence (300c,0020) - * @return const reference to sequence element - */ - const DRTReferencedFractionGroupSequence &getReferencedFractionGroupSequence() const - { return ReferencedFractionGroupSequence; } - - // --- set DICOM attribute values --- - - /** set ReferencedSOPClassUID (0008,1150) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue); - - /** set ReferencedSOPInstanceUID (0008,1155) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue); - - private: - - /// internal flag used to mark the empty default item - /*const*/ OFBool EmptyDefaultItem; - - /// ReferencedFractionGroupSequence (300c,0020) vr=SQ, vm=1, type=1C - DRTReferencedFractionGroupSequence ReferencedFractionGroupSequence; - /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1 - DcmUniqueIdentifier ReferencedSOPClassUID; - /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1 - DcmUniqueIdentifier ReferencedSOPInstanceUID; - - }; - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultSequence internal flag used to mark the empty default sequence - */ - DRTReferencedRTPlanSequence(const OFBool emptyDefaultSequence = OFFalse); - - /** copy constructor - * @param copy sequence object to be copied - */ - DRTReferencedRTPlanSequence(const DRTReferencedRTPlanSequence ©); - - /** destructor - */ - virtual ~DRTReferencedRTPlanSequence(); - - /** assignment operator - * @param copy sequence object to be copied - * @return reference to this object - */ - DRTReferencedRTPlanSequence &operator=(const DRTReferencedRTPlanSequence ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if sequence is empty - * @return OFTrue if sequence is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if sequence is valid, i.e.\ not the empty default sequence - * @return OFTrue if sequence is valid, OFFalse otherwise - */ - OFBool isValid() const; - - /** get number of items in the sequence - * @return number of items - */ - size_t getNumberOfItems() const; - - /** goto first item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoFirstItem(); - - /** goto next item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoNextItem(); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num); - - /** get current item in the sequence - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getCurrentItem(Item *&item) const; - - /** get current item in the sequence - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getCurrentItem(); - - /** get current item in the sequence - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getCurrentItem() const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getItem(const size_t num, Item *&item); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getItem(const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getItem(const size_t num) const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &operator[](const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &operator[](const size_t num) const; - - /** add new item to the end of this sequence - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition addItem(Item *&item); - - /** insert new item into the sequence - * @param pos position where the new item is to be inserted (0..num) - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition insertItem(const size_t pos, Item *&item); - - /** remove particular item from the sequence - * @param pos position of the item to be removed (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition removeItem(const size_t pos); - - // --- input/output methods --- - - /** read sequence of items from dataset - * @param dataset reference to DICOM dataset from which the sequence should be read - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - /** write sequence of items to dataset - * @param dataset reference to DICOM dataset to which the sequence should be written - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - protected: - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListIterator(Item *) &iterator); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListConstIterator(Item *) &iterator) const; - - private: - - /// internal flag used to mark the empty default sequence - /*const*/ OFBool EmptyDefaultSequence; - - /// list of items in this sequence - OFList SequenceOfItems; - /// currently selected item - OFListIterator(Item *) CurrentItem; - /// empty default item - Item EmptyItem; - -}; - - -#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps3.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps3.h deleted file mode 100644 index e31a70b1..00000000 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps3.h +++ /dev/null @@ -1,336 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Header file for class DRTReferencedRTPlanSequenceInRTGeneralPlanModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#ifndef DRTRRTPS3_H -#define DRTRRTPS3_H - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/ofstd/oflist.h" // for standard list class -#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class - - -/** Interface class for ReferencedRTPlanSequence (300c,0002) in RTGeneralPlanModule - */ -class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTGeneralPlanModule - : protected DRTTypes -{ - - public: - - /** Item class - */ - class DCMTK_DCMRT_EXPORT Item - : protected DRTTypes - { - - public: - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultItem flag used to mark the empty default item - */ - Item(const OFBool emptyDefaultItem = OFFalse); - - /** copy constructor - * @param copy item object to be copied - */ - Item(const Item ©); - - /** destructor - */ - virtual ~Item(); - - /** assignment operator - * @param copy item object to be copied - * @return reference to this object - */ - Item &operator=(const Item ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if item is empty - * @return OFTrue if item is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if item is valid, i.e.\ not the empty default item - * @return OFTrue if item is valid, OFFalse otherwise - */ - OFBool isValid() const; - - // --- input/output methods --- - - /** read elements from sequence item - * @param item reference to DICOM sequence item from which the elements should be read - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &item); - - /** write elements to sequence item - * @param item reference to DICOM sequence item to which the elements should be written - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &item); - - // --- get DICOM attribute values --- - - /** get RTPlanRelationship (300a,0055) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getRTPlanRelationship(OFString &value, const signed long pos = 0) const; - - /** get ReferencedSOPClassUID (0008,1150) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const; - - /** get ReferencedSOPInstanceUID (0008,1155) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const; - - // --- set DICOM attribute values --- - - /** set RTPlanRelationship (300a,0055) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setRTPlanRelationship(const OFString &value, const OFBool check = OFTrue); - - /** set ReferencedSOPClassUID (0008,1150) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue); - - /** set ReferencedSOPInstanceUID (0008,1155) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue); - - private: - - /// internal flag used to mark the empty default item - /*const*/ OFBool EmptyDefaultItem; - - /// RTPlanRelationship (300a,0055) vr=CS, vm=1, type=1 - DcmCodeString RTPlanRelationship; - /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1 - DcmUniqueIdentifier ReferencedSOPClassUID; - /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1 - DcmUniqueIdentifier ReferencedSOPInstanceUID; - - }; - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultSequence internal flag used to mark the empty default sequence - */ - DRTReferencedRTPlanSequenceInRTGeneralPlanModule(const OFBool emptyDefaultSequence = OFFalse); - - /** copy constructor - * @param copy sequence object to be copied - */ - DRTReferencedRTPlanSequenceInRTGeneralPlanModule(const DRTReferencedRTPlanSequenceInRTGeneralPlanModule ©); - - /** destructor - */ - virtual ~DRTReferencedRTPlanSequenceInRTGeneralPlanModule(); - - /** assignment operator - * @param copy sequence object to be copied - * @return reference to this object - */ - DRTReferencedRTPlanSequenceInRTGeneralPlanModule &operator=(const DRTReferencedRTPlanSequenceInRTGeneralPlanModule ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if sequence is empty - * @return OFTrue if sequence is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if sequence is valid, i.e.\ not the empty default sequence - * @return OFTrue if sequence is valid, OFFalse otherwise - */ - OFBool isValid() const; - - /** get number of items in the sequence - * @return number of items - */ - size_t getNumberOfItems() const; - - /** goto first item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoFirstItem(); - - /** goto next item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoNextItem(); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num); - - /** get current item in the sequence - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getCurrentItem(Item *&item) const; - - /** get current item in the sequence - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getCurrentItem(); - - /** get current item in the sequence - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getCurrentItem() const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getItem(const size_t num, Item *&item); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getItem(const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getItem(const size_t num) const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &operator[](const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &operator[](const size_t num) const; - - /** add new item to the end of this sequence - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition addItem(Item *&item); - - /** insert new item into the sequence - * @param pos position where the new item is to be inserted (0..num) - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition insertItem(const size_t pos, Item *&item); - - /** remove particular item from the sequence - * @param pos position of the item to be removed (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition removeItem(const size_t pos); - - // --- input/output methods --- - - /** read sequence of items from dataset - * @param dataset reference to DICOM dataset from which the sequence should be read - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - /** write sequence of items to dataset - * @param dataset reference to DICOM dataset to which the sequence should be written - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - protected: - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListIterator(Item *) &iterator); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListConstIterator(Item *) &iterator) const; - - private: - - /// internal flag used to mark the empty default sequence - /*const*/ OFBool EmptyDefaultSequence; - - /// list of items in this sequence - OFList SequenceOfItems; - /// currently selected item - OFListIterator(Item *) CurrentItem; - /// empty default item - Item EmptyItem; - -}; - - -#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps4.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps4.h deleted file mode 100644 index 2284ee56..00000000 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps4.h +++ /dev/null @@ -1,320 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Header file for class DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#ifndef DRTRRTPS4_H -#define DRTRRTPS4_H - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/ofstd/oflist.h" // for standard list class -#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class - - -/** Interface class for ReferencedRTPlanSequence (300c,0002) in RTGeneralTreatmentRecordModule - */ -class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule - : protected DRTTypes -{ - - public: - - /** Item class - */ - class DCMTK_DCMRT_EXPORT Item - : protected DRTTypes - { - - public: - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultItem flag used to mark the empty default item - */ - Item(const OFBool emptyDefaultItem = OFFalse); - - /** copy constructor - * @param copy item object to be copied - */ - Item(const Item ©); - - /** destructor - */ - virtual ~Item(); - - /** assignment operator - * @param copy item object to be copied - * @return reference to this object - */ - Item &operator=(const Item ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if item is empty - * @return OFTrue if item is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if item is valid, i.e.\ not the empty default item - * @return OFTrue if item is valid, OFFalse otherwise - */ - OFBool isValid() const; - - // --- input/output methods --- - - /** read elements from sequence item - * @param item reference to DICOM sequence item from which the elements should be read - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &item); - - /** write elements to sequence item - * @param item reference to DICOM sequence item to which the elements should be written - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &item); - - // --- get DICOM attribute values --- - - /** get ReferencedSOPClassUID (0008,1150) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const; - - /** get ReferencedSOPInstanceUID (0008,1155) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const; - - // --- set DICOM attribute values --- - - /** set ReferencedSOPClassUID (0008,1150) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue); - - /** set ReferencedSOPInstanceUID (0008,1155) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue); - - private: - - /// internal flag used to mark the empty default item - /*const*/ OFBool EmptyDefaultItem; - - /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1 - DcmUniqueIdentifier ReferencedSOPClassUID; - /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1 - DcmUniqueIdentifier ReferencedSOPInstanceUID; - - }; - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultSequence internal flag used to mark the empty default sequence - */ - DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule(const OFBool emptyDefaultSequence = OFFalse); - - /** copy constructor - * @param copy sequence object to be copied - */ - DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule(const DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule ©); - - /** destructor - */ - virtual ~DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule(); - - /** assignment operator - * @param copy sequence object to be copied - * @return reference to this object - */ - DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule &operator=(const DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if sequence is empty - * @return OFTrue if sequence is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if sequence is valid, i.e.\ not the empty default sequence - * @return OFTrue if sequence is valid, OFFalse otherwise - */ - OFBool isValid() const; - - /** get number of items in the sequence - * @return number of items - */ - size_t getNumberOfItems() const; - - /** goto first item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoFirstItem(); - - /** goto next item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoNextItem(); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num); - - /** get current item in the sequence - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getCurrentItem(Item *&item) const; - - /** get current item in the sequence - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getCurrentItem(); - - /** get current item in the sequence - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getCurrentItem() const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getItem(const size_t num, Item *&item); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getItem(const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getItem(const size_t num) const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &operator[](const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &operator[](const size_t num) const; - - /** add new item to the end of this sequence - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition addItem(Item *&item); - - /** insert new item into the sequence - * @param pos position where the new item is to be inserted (0..num) - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition insertItem(const size_t pos, Item *&item); - - /** remove particular item from the sequence - * @param pos position of the item to be removed (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition removeItem(const size_t pos); - - // --- input/output methods --- - - /** read sequence of items from dataset - * @param dataset reference to DICOM dataset from which the sequence should be read - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - /** write sequence of items to dataset - * @param dataset reference to DICOM dataset to which the sequence should be written - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - protected: - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListIterator(Item *) &iterator); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListConstIterator(Item *) &iterator) const; - - private: - - /// internal flag used to mark the empty default sequence - /*const*/ OFBool EmptyDefaultSequence; - - /// list of items in this sequence - OFList SequenceOfItems; - /// currently selected item - OFListIterator(Item *) CurrentItem; - /// empty default item - Item EmptyItem; - -}; - - -#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps5.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps5.h deleted file mode 100644 index 5f253ff7..00000000 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps5.h +++ /dev/null @@ -1,320 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Header file for class DRTReferencedRTPlanSequenceInRTImageModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#ifndef DRTRRTPS5_H -#define DRTRRTPS5_H - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/ofstd/oflist.h" // for standard list class -#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class - - -/** Interface class for ReferencedRTPlanSequence (300c,0002) in RTImageModule - */ -class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTImageModule - : protected DRTTypes -{ - - public: - - /** Item class - */ - class DCMTK_DCMRT_EXPORT Item - : protected DRTTypes - { - - public: - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultItem flag used to mark the empty default item - */ - Item(const OFBool emptyDefaultItem = OFFalse); - - /** copy constructor - * @param copy item object to be copied - */ - Item(const Item ©); - - /** destructor - */ - virtual ~Item(); - - /** assignment operator - * @param copy item object to be copied - * @return reference to this object - */ - Item &operator=(const Item ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if item is empty - * @return OFTrue if item is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if item is valid, i.e.\ not the empty default item - * @return OFTrue if item is valid, OFFalse otherwise - */ - OFBool isValid() const; - - // --- input/output methods --- - - /** read elements from sequence item - * @param item reference to DICOM sequence item from which the elements should be read - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &item); - - /** write elements to sequence item - * @param item reference to DICOM sequence item to which the elements should be written - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &item); - - // --- get DICOM attribute values --- - - /** get ReferencedSOPClassUID (0008,1150) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const; - - /** get ReferencedSOPInstanceUID (0008,1155) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const; - - // --- set DICOM attribute values --- - - /** set ReferencedSOPClassUID (0008,1150) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue); - - /** set ReferencedSOPInstanceUID (0008,1155) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue); - - private: - - /// internal flag used to mark the empty default item - /*const*/ OFBool EmptyDefaultItem; - - /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1 - DcmUniqueIdentifier ReferencedSOPClassUID; - /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1 - DcmUniqueIdentifier ReferencedSOPInstanceUID; - - }; - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultSequence internal flag used to mark the empty default sequence - */ - DRTReferencedRTPlanSequenceInRTImageModule(const OFBool emptyDefaultSequence = OFFalse); - - /** copy constructor - * @param copy sequence object to be copied - */ - DRTReferencedRTPlanSequenceInRTImageModule(const DRTReferencedRTPlanSequenceInRTImageModule ©); - - /** destructor - */ - virtual ~DRTReferencedRTPlanSequenceInRTImageModule(); - - /** assignment operator - * @param copy sequence object to be copied - * @return reference to this object - */ - DRTReferencedRTPlanSequenceInRTImageModule &operator=(const DRTReferencedRTPlanSequenceInRTImageModule ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if sequence is empty - * @return OFTrue if sequence is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if sequence is valid, i.e.\ not the empty default sequence - * @return OFTrue if sequence is valid, OFFalse otherwise - */ - OFBool isValid() const; - - /** get number of items in the sequence - * @return number of items - */ - size_t getNumberOfItems() const; - - /** goto first item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoFirstItem(); - - /** goto next item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoNextItem(); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num); - - /** get current item in the sequence - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getCurrentItem(Item *&item) const; - - /** get current item in the sequence - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getCurrentItem(); - - /** get current item in the sequence - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getCurrentItem() const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getItem(const size_t num, Item *&item); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getItem(const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getItem(const size_t num) const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &operator[](const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &operator[](const size_t num) const; - - /** add new item to the end of this sequence - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition addItem(Item *&item); - - /** insert new item into the sequence - * @param pos position where the new item is to be inserted (0..num) - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition insertItem(const size_t pos, Item *&item); - - /** remove particular item from the sequence - * @param pos position of the item to be removed (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition removeItem(const size_t pos); - - // --- input/output methods --- - - /** read sequence of items from dataset - * @param dataset reference to DICOM dataset from which the sequence should be read - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - /** write sequence of items to dataset - * @param dataset reference to DICOM dataset to which the sequence should be written - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - protected: - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListIterator(Item *) &iterator); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListConstIterator(Item *) &iterator) const; - - private: - - /// internal flag used to mark the empty default sequence - /*const*/ OFBool EmptyDefaultSequence; - - /// list of items in this sequence - OFList SequenceOfItems; - /// currently selected item - OFListIterator(Item *) CurrentItem; - /// empty default item - Item EmptyItem; - -}; - - -#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrscs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrscs.h index be11f127..bc247a1e 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrscs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrscs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTRequestingServiceCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTRequestingServiceCodeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrsers.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrsers.h index 04d6c60d..796fa116 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrsers.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrsers.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTReferencedSeriesSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -240,13 +240,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSeriesSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrses.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrses.h index 2e425f20..0dfc409f 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrses.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrses.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTRTReferencedSeriesSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -240,13 +240,13 @@ class DCMTK_DCMRT_EXPORT DRTRTReferencedSeriesSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrshs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrshs.h index 512af790..60c2da01 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrshs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrshs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTRangeShifterSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -294,13 +294,13 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrshs1.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrshs1.h new file mode 100644 index 00000000..0aa4d1e0 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrshs1.h @@ -0,0 +1,359 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTRangeShifterSettingsSequenceInRTIonBeamsModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTRSHS1_H +#define DRTRSHS1_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for RangeShifterSettingsSequence (300a,0360) in RTIonBeamsModule + */ +class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsModule + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get IsocenterToRangeShifterDistance (300a,0364) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getIsocenterToRangeShifterDistance(Float32 &value, const unsigned long pos = 0) const; + + /** get RangeShifterSetting (300a,0362) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getRangeShifterSetting(OFString &value, const signed long pos = 0) const; + + /** get RangeShifterWaterEquivalentThickness (300a,0366) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getRangeShifterWaterEquivalentThickness(Float32 &value, const unsigned long pos = 0) const; + + /** get ReferencedRangeShifterNumber (300c,0100) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedRangeShifterNumber(OFString &value, const signed long pos = 0) const; + + /** get ReferencedRangeShifterNumber (300c,0100) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedRangeShifterNumber(Sint32 &value, const unsigned long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set IsocenterToRangeShifterDistance (300a,0364) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setIsocenterToRangeShifterDistance(const Float32 value, const unsigned long pos = 0); + + /** set RangeShifterSetting (300a,0362) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setRangeShifterSetting(const OFString &value, const OFBool check = OFTrue); + + /** set RangeShifterWaterEquivalentThickness (300a,0366) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setRangeShifterWaterEquivalentThickness(const Float32 value, const unsigned long pos = 0); + + /** set ReferencedRangeShifterNumber (300c,0100) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedRangeShifterNumber(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// IsocenterToRangeShifterDistance (300a,0364) vr=FL, vm=1, type=3 + DcmFloatingPointSingle IsocenterToRangeShifterDistance; + /// RangeShifterSetting (300a,0362) vr=LO, vm=1, type=1 + DcmLongString RangeShifterSetting; + /// RangeShifterWaterEquivalentThickness (300a,0366) vr=FL, vm=1, type=3 + DcmFloatingPointSingle RangeShifterWaterEquivalentThickness; + /// ReferencedRangeShifterNumber (300c,0100) vr=IS, vm=1, type=1 + DcmIntegerString ReferencedRangeShifterNumber; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTRangeShifterSettingsSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTRangeShifterSettingsSequenceInRTIonBeamsModule(const DRTRangeShifterSettingsSequenceInRTIonBeamsModule ©); + + /** destructor + */ + virtual ~DRTRangeShifterSettingsSequenceInRTIonBeamsModule(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTRangeShifterSettingsSequenceInRTIonBeamsModule &operator=(const DRTRangeShifterSettingsSequenceInRTIonBeamsModule ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrshs2.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrshs2.h new file mode 100644 index 00000000..bc1f8599 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrshs2.h @@ -0,0 +1,327 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTRSHS2_H +#define DRTRSHS2_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for RangeShifterSettingsSequence (300a,0360) in RTIonBeamsSessionRecordModule + */ +class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get RangeShifterSetting (300a,0362) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getRangeShifterSetting(OFString &value, const signed long pos = 0) const; + + /** get ReferencedRangeShifterNumber (300c,0100) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedRangeShifterNumber(OFString &value, const signed long pos = 0) const; + + /** get ReferencedRangeShifterNumber (300c,0100) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedRangeShifterNumber(Sint32 &value, const unsigned long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set RangeShifterSetting (300a,0362) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setRangeShifterSetting(const OFString &value, const OFBool check = OFTrue); + + /** set ReferencedRangeShifterNumber (300c,0100) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedRangeShifterNumber(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// RangeShifterSetting (300a,0362) vr=LO, vm=1, type=1 + DcmLongString RangeShifterSetting; + /// ReferencedRangeShifterNumber (300c,0100) vr=IS, vm=1, type=1 + DcmIntegerString ReferencedRangeShifterNumber; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule(const DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule ©); + + /** destructor + */ + virtual ~DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule &operator=(const DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrshs6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrshs6.h deleted file mode 100644 index d0753c2b..00000000 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrshs6.h +++ /dev/null @@ -1,359 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Header file for class DRTRangeShifterSettingsSequenceInRTIonBeamsModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#ifndef DRTRSHS6_H -#define DRTRSHS6_H - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/ofstd/oflist.h" // for standard list class -#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class - - -/** Interface class for RangeShifterSettingsSequence (300a,0360) in RTIonBeamsModule - */ -class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsModule - : protected DRTTypes -{ - - public: - - /** Item class - */ - class DCMTK_DCMRT_EXPORT Item - : protected DRTTypes - { - - public: - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultItem flag used to mark the empty default item - */ - Item(const OFBool emptyDefaultItem = OFFalse); - - /** copy constructor - * @param copy item object to be copied - */ - Item(const Item ©); - - /** destructor - */ - virtual ~Item(); - - /** assignment operator - * @param copy item object to be copied - * @return reference to this object - */ - Item &operator=(const Item ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if item is empty - * @return OFTrue if item is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if item is valid, i.e.\ not the empty default item - * @return OFTrue if item is valid, OFFalse otherwise - */ - OFBool isValid() const; - - // --- input/output methods --- - - /** read elements from sequence item - * @param item reference to DICOM sequence item from which the elements should be read - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &item); - - /** write elements to sequence item - * @param item reference to DICOM sequence item to which the elements should be written - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &item); - - // --- get DICOM attribute values --- - - /** get IsocenterToRangeShifterDistance (300a,0364) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getIsocenterToRangeShifterDistance(Float32 &value, const unsigned long pos = 0) const; - - /** get RangeShifterSetting (300a,0362) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getRangeShifterSetting(OFString &value, const signed long pos = 0) const; - - /** get RangeShifterWaterEquivalentThickness (300a,0366) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getRangeShifterWaterEquivalentThickness(Float32 &value, const unsigned long pos = 0) const; - - /** get ReferencedRangeShifterNumber (300c,0100) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedRangeShifterNumber(OFString &value, const signed long pos = 0) const; - - /** get ReferencedRangeShifterNumber (300c,0100) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedRangeShifterNumber(Sint32 &value, const unsigned long pos = 0) const; - - // --- set DICOM attribute values --- - - /** set IsocenterToRangeShifterDistance (300a,0364) - * @param value value to be set (should be valid for this VR) - * @param pos index of the value to be set (0..vm-1), vm=1 - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setIsocenterToRangeShifterDistance(const Float32 value, const unsigned long pos = 0); - - /** set RangeShifterSetting (300a,0362) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setRangeShifterSetting(const OFString &value, const OFBool check = OFTrue); - - /** set RangeShifterWaterEquivalentThickness (300a,0366) - * @param value value to be set (should be valid for this VR) - * @param pos index of the value to be set (0..vm-1), vm=1 - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setRangeShifterWaterEquivalentThickness(const Float32 value, const unsigned long pos = 0); - - /** set ReferencedRangeShifterNumber (300c,0100) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setReferencedRangeShifterNumber(const OFString &value, const OFBool check = OFTrue); - - private: - - /// internal flag used to mark the empty default item - /*const*/ OFBool EmptyDefaultItem; - - /// IsocenterToRangeShifterDistance (300a,0364) vr=FL, vm=1, type=3 - DcmFloatingPointSingle IsocenterToRangeShifterDistance; - /// RangeShifterSetting (300a,0362) vr=LO, vm=1, type=1 - DcmLongString RangeShifterSetting; - /// RangeShifterWaterEquivalentThickness (300a,0366) vr=FL, vm=1, type=3 - DcmFloatingPointSingle RangeShifterWaterEquivalentThickness; - /// ReferencedRangeShifterNumber (300c,0100) vr=IS, vm=1, type=1 - DcmIntegerString ReferencedRangeShifterNumber; - - }; - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultSequence internal flag used to mark the empty default sequence - */ - DRTRangeShifterSettingsSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence = OFFalse); - - /** copy constructor - * @param copy sequence object to be copied - */ - DRTRangeShifterSettingsSequenceInRTIonBeamsModule(const DRTRangeShifterSettingsSequenceInRTIonBeamsModule ©); - - /** destructor - */ - virtual ~DRTRangeShifterSettingsSequenceInRTIonBeamsModule(); - - /** assignment operator - * @param copy sequence object to be copied - * @return reference to this object - */ - DRTRangeShifterSettingsSequenceInRTIonBeamsModule &operator=(const DRTRangeShifterSettingsSequenceInRTIonBeamsModule ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if sequence is empty - * @return OFTrue if sequence is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if sequence is valid, i.e.\ not the empty default sequence - * @return OFTrue if sequence is valid, OFFalse otherwise - */ - OFBool isValid() const; - - /** get number of items in the sequence - * @return number of items - */ - size_t getNumberOfItems() const; - - /** goto first item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoFirstItem(); - - /** goto next item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoNextItem(); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num); - - /** get current item in the sequence - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getCurrentItem(Item *&item) const; - - /** get current item in the sequence - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getCurrentItem(); - - /** get current item in the sequence - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getCurrentItem() const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getItem(const size_t num, Item *&item); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getItem(const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getItem(const size_t num) const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &operator[](const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &operator[](const size_t num) const; - - /** add new item to the end of this sequence - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition addItem(Item *&item); - - /** insert new item into the sequence - * @param pos position where the new item is to be inserted (0..num) - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition insertItem(const size_t pos, Item *&item); - - /** remove particular item from the sequence - * @param pos position of the item to be removed (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition removeItem(const size_t pos); - - // --- input/output methods --- - - /** read sequence of items from dataset - * @param dataset reference to DICOM dataset from which the sequence should be read - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - /** write sequence of items to dataset - * @param dataset reference to DICOM dataset to which the sequence should be written - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - protected: - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListIterator(Item *) &iterator); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListConstIterator(Item *) &iterator) const; - - private: - - /// internal flag used to mark the empty default sequence - /*const*/ OFBool EmptyDefaultSequence; - - /// list of items in this sequence - OFList SequenceOfItems; - /// currently selected item - OFListIterator(Item *) CurrentItem; - /// empty default item - Item EmptyItem; - -}; - - -#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrshs7.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrshs7.h deleted file mode 100644 index a071bc03..00000000 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrshs7.h +++ /dev/null @@ -1,327 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Header file for class DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#ifndef DRTRSHS7_H -#define DRTRSHS7_H - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/ofstd/oflist.h" // for standard list class -#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class - - -/** Interface class for RangeShifterSettingsSequence (300a,0360) in RTIonBeamsSessionRecordModule - */ -class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule - : protected DRTTypes -{ - - public: - - /** Item class - */ - class DCMTK_DCMRT_EXPORT Item - : protected DRTTypes - { - - public: - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultItem flag used to mark the empty default item - */ - Item(const OFBool emptyDefaultItem = OFFalse); - - /** copy constructor - * @param copy item object to be copied - */ - Item(const Item ©); - - /** destructor - */ - virtual ~Item(); - - /** assignment operator - * @param copy item object to be copied - * @return reference to this object - */ - Item &operator=(const Item ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if item is empty - * @return OFTrue if item is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if item is valid, i.e.\ not the empty default item - * @return OFTrue if item is valid, OFFalse otherwise - */ - OFBool isValid() const; - - // --- input/output methods --- - - /** read elements from sequence item - * @param item reference to DICOM sequence item from which the elements should be read - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &item); - - /** write elements to sequence item - * @param item reference to DICOM sequence item to which the elements should be written - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &item); - - // --- get DICOM attribute values --- - - /** get RangeShifterSetting (300a,0362) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getRangeShifterSetting(OFString &value, const signed long pos = 0) const; - - /** get ReferencedRangeShifterNumber (300c,0100) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedRangeShifterNumber(OFString &value, const signed long pos = 0) const; - - /** get ReferencedRangeShifterNumber (300c,0100) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedRangeShifterNumber(Sint32 &value, const unsigned long pos = 0) const; - - // --- set DICOM attribute values --- - - /** set RangeShifterSetting (300a,0362) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setRangeShifterSetting(const OFString &value, const OFBool check = OFTrue); - - /** set ReferencedRangeShifterNumber (300c,0100) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setReferencedRangeShifterNumber(const OFString &value, const OFBool check = OFTrue); - - private: - - /// internal flag used to mark the empty default item - /*const*/ OFBool EmptyDefaultItem; - - /// RangeShifterSetting (300a,0362) vr=LO, vm=1, type=1 - DcmLongString RangeShifterSetting; - /// ReferencedRangeShifterNumber (300c,0100) vr=IS, vm=1, type=1 - DcmIntegerString ReferencedRangeShifterNumber; - - }; - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultSequence internal flag used to mark the empty default sequence - */ - DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence = OFFalse); - - /** copy constructor - * @param copy sequence object to be copied - */ - DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule(const DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule ©); - - /** destructor - */ - virtual ~DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule(); - - /** assignment operator - * @param copy sequence object to be copied - * @return reference to this object - */ - DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule &operator=(const DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if sequence is empty - * @return OFTrue if sequence is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if sequence is valid, i.e.\ not the empty default sequence - * @return OFTrue if sequence is valid, OFFalse otherwise - */ - OFBool isValid() const; - - /** get number of items in the sequence - * @return number of items - */ - size_t getNumberOfItems() const; - - /** goto first item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoFirstItem(); - - /** goto next item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoNextItem(); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num); - - /** get current item in the sequence - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getCurrentItem(Item *&item) const; - - /** get current item in the sequence - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getCurrentItem(); - - /** get current item in the sequence - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getCurrentItem() const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getItem(const size_t num, Item *&item); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getItem(const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getItem(const size_t num) const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &operator[](const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &operator[](const size_t num) const; - - /** add new item to the end of this sequence - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition addItem(Item *&item); - - /** insert new item into the sequence - * @param pos position where the new item is to be inserted (0..num) - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition insertItem(const size_t pos, Item *&item); - - /** remove particular item from the sequence - * @param pos position of the item to be removed (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition removeItem(const size_t pos); - - // --- input/output methods --- - - /** read sequence of items from dataset - * @param dataset reference to DICOM dataset from which the sequence should be read - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - /** write sequence of items to dataset - * @param dataset reference to DICOM dataset to which the sequence should be written - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - protected: - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListIterator(Item *) &iterator); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListConstIterator(Item *) &iterator) const; - - private: - - /// internal flag used to mark the empty default sequence - /*const*/ OFBool EmptyDefaultSequence; - - /// list of items in this sequence - OFList SequenceOfItems; - /// currently selected item - OFListIterator(Item *) CurrentItem; - /// empty default item - Item EmptyItem; - -}; - - -#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrsis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrsis.h index 6e63702f..e96e097a 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrsis.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrsis.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTReferencedSetupImageSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -294,13 +294,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSetupImageSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrsns.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrsns.h index a41c92e6..f0716c51 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrsns.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrsns.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTRecordedSnoutSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTRecordedSnoutSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrsos.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrsos.h index b13fe826..6ca67006 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrsos.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrsos.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTReferencedSOPSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -294,13 +294,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSOPSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrsrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrsrs.h index 61a36d8c..350491b3 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrsrs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrsrs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTReferencedSpatialRegistrationSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSpatialRegistrationSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrss.h index 14c483ef..651443fa 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrss.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrss.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTReferencedStudySequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedStudySequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrsss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrsss.h index b0c1cd08..0cd4214f 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrsss.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrsss.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTReferencedStructureSetSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedStructureSetSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrsts.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrsts.h index 1ddce451..22bcc58d 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrsts.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrsts.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTRTReferencedStudySequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -256,13 +256,13 @@ class DCMTK_DCMRT_EXPORT DRTRTReferencedStudySequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrtps1.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrtps1.h new file mode 100644 index 00000000..e7be9c97 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrtps1.h @@ -0,0 +1,353 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTReferencedRTPlanSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTRTPS1_H +#define DRTRTPS1_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtrfgs.h" // for ReferencedFractionGroupSequence + + +/** Interface class for ReferencedRTPlanSequence (300c,0002) in RTDoseModule + */ +class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get ReferencedPlanOverviewIndex (300c,0118) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedPlanOverviewIndex(Uint16 &value, const unsigned long pos = 0) const; + + /** get ReferencedSOPClassUID (0008,1150) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const; + + /** get ReferencedSOPInstanceUID (0008,1155) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const; + + // --- get DICOM sequence attributes --- + + /** get ReferencedFractionGroupSequence (300c,0020) + * @return reference to sequence element + */ + DRTReferencedFractionGroupSequence &getReferencedFractionGroupSequence() + { return ReferencedFractionGroupSequence; } + + /** get ReferencedFractionGroupSequence (300c,0020) + * @return const reference to sequence element + */ + const DRTReferencedFractionGroupSequence &getReferencedFractionGroupSequence() const + { return ReferencedFractionGroupSequence; } + + // --- set DICOM attribute values --- + + /** set ReferencedPlanOverviewIndex (300c,0118) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedPlanOverviewIndex(const Uint16 value, const unsigned long pos = 0); + + /** set ReferencedSOPClassUID (0008,1150) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue); + + /** set ReferencedSOPInstanceUID (0008,1155) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// ReferencedFractionGroupSequence (300c,0020) vr=SQ, vm=1, type=1C + DRTReferencedFractionGroupSequence ReferencedFractionGroupSequence; + /// ReferencedPlanOverviewIndex (300c,0118) vr=US, vm=1, type=1C + DcmUnsignedShort ReferencedPlanOverviewIndex; + /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1 + DcmUniqueIdentifier ReferencedSOPClassUID; + /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1 + DcmUniqueIdentifier ReferencedSOPInstanceUID; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTReferencedRTPlanSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTReferencedRTPlanSequence(const DRTReferencedRTPlanSequence ©); + + /** destructor + */ + virtual ~DRTReferencedRTPlanSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTReferencedRTPlanSequence &operator=(const DRTReferencedRTPlanSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrtps2.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrtps2.h new file mode 100644 index 00000000..4b01a826 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrtps2.h @@ -0,0 +1,336 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTReferencedRTPlanSequenceInRTGeneralPlanModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTRTPS2_H +#define DRTRTPS2_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for ReferencedRTPlanSequence (300c,0002) in RTGeneralPlanModule + */ +class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTGeneralPlanModule + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get RTPlanRelationship (300a,0055) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getRTPlanRelationship(OFString &value, const signed long pos = 0) const; + + /** get ReferencedSOPClassUID (0008,1150) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const; + + /** get ReferencedSOPInstanceUID (0008,1155) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set RTPlanRelationship (300a,0055) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setRTPlanRelationship(const OFString &value, const OFBool check = OFTrue); + + /** set ReferencedSOPClassUID (0008,1150) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue); + + /** set ReferencedSOPInstanceUID (0008,1155) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// RTPlanRelationship (300a,0055) vr=CS, vm=1, type=1 + DcmCodeString RTPlanRelationship; + /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1 + DcmUniqueIdentifier ReferencedSOPClassUID; + /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1 + DcmUniqueIdentifier ReferencedSOPInstanceUID; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTReferencedRTPlanSequenceInRTGeneralPlanModule(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTReferencedRTPlanSequenceInRTGeneralPlanModule(const DRTReferencedRTPlanSequenceInRTGeneralPlanModule ©); + + /** destructor + */ + virtual ~DRTReferencedRTPlanSequenceInRTGeneralPlanModule(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTReferencedRTPlanSequenceInRTGeneralPlanModule &operator=(const DRTReferencedRTPlanSequenceInRTGeneralPlanModule ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrtps3.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrtps3.h new file mode 100644 index 00000000..b4d9da21 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrtps3.h @@ -0,0 +1,320 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTRTPS3_H +#define DRTRTPS3_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for ReferencedRTPlanSequence (300c,0002) in RTGeneralTreatmentRecordModule + */ +class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get ReferencedSOPClassUID (0008,1150) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const; + + /** get ReferencedSOPInstanceUID (0008,1155) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set ReferencedSOPClassUID (0008,1150) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue); + + /** set ReferencedSOPInstanceUID (0008,1155) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1 + DcmUniqueIdentifier ReferencedSOPClassUID; + /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1 + DcmUniqueIdentifier ReferencedSOPInstanceUID; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule(const DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule ©); + + /** destructor + */ + virtual ~DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule &operator=(const DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrtps4.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrtps4.h new file mode 100644 index 00000000..2bef9f62 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrtps4.h @@ -0,0 +1,320 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTReferencedRTPlanSequenceInRTImageModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTRTPS4_H +#define DRTRTPS4_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for ReferencedRTPlanSequence (300c,0002) in RTImageModule + */ +class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTImageModule + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get ReferencedSOPClassUID (0008,1150) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const; + + /** get ReferencedSOPInstanceUID (0008,1155) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set ReferencedSOPClassUID (0008,1150) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue); + + /** set ReferencedSOPInstanceUID (0008,1155) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1 + DcmUniqueIdentifier ReferencedSOPClassUID; + /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1 + DcmUniqueIdentifier ReferencedSOPInstanceUID; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTReferencedRTPlanSequenceInRTImageModule(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTReferencedRTPlanSequenceInRTImageModule(const DRTReferencedRTPlanSequenceInRTImageModule ©); + + /** destructor + */ + virtual ~DRTReferencedRTPlanSequenceInRTImageModule(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTReferencedRTPlanSequenceInRTImageModule &operator=(const DRTReferencedRTPlanSequenceInRTImageModule ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrtrs1.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrtrs1.h new file mode 100644 index 00000000..04a49b5a --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrtrs1.h @@ -0,0 +1,337 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTReferencedTreatmentRecordSequenceInRTDoseModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTRTRS1_H +#define DRTRTRS1_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtrbs1.h" // for ReferencedBeamSequence + + +/** Interface class for ReferencedTreatmentRecordSequence (3008,0030) in RTDoseModule + */ +class DCMTK_DCMRT_EXPORT DRTReferencedTreatmentRecordSequenceInRTDoseModule + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get ReferencedSOPClassUID (0008,1150) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const; + + /** get ReferencedSOPInstanceUID (0008,1155) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const; + + // --- get DICOM sequence attributes --- + + /** get ReferencedBeamSequence (300c,0004) + * @return reference to sequence element + */ + DRTReferencedBeamSequenceInRTDoseModule &getReferencedBeamSequence() + { return ReferencedBeamSequence; } + + /** get ReferencedBeamSequence (300c,0004) + * @return const reference to sequence element + */ + const DRTReferencedBeamSequenceInRTDoseModule &getReferencedBeamSequence() const + { return ReferencedBeamSequence; } + + // --- set DICOM attribute values --- + + /** set ReferencedSOPClassUID (0008,1150) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue); + + /** set ReferencedSOPInstanceUID (0008,1155) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// ReferencedBeamSequence (300c,0004) vr=SQ, vm=1, type=1C + DRTReferencedBeamSequenceInRTDoseModule ReferencedBeamSequence; + /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1 + DcmUniqueIdentifier ReferencedSOPClassUID; + /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1 + DcmUniqueIdentifier ReferencedSOPInstanceUID; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTReferencedTreatmentRecordSequenceInRTDoseModule(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTReferencedTreatmentRecordSequenceInRTDoseModule(const DRTReferencedTreatmentRecordSequenceInRTDoseModule ©); + + /** destructor + */ + virtual ~DRTReferencedTreatmentRecordSequenceInRTDoseModule(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTReferencedTreatmentRecordSequenceInRTDoseModule &operator=(const DRTReferencedTreatmentRecordSequenceInRTDoseModule ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrtrs2.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrtrs2.h index 3dfb3386..0837fa9e 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrtrs2.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrtrs2.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * - * Header file for class DRTReferencedTreatmentRecordSequenceInRTDoseModule + * Header file for class DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -19,12 +19,11 @@ #include "dcmtk/ofstd/oflist.h" // for standard list class #include "dcmtk/dcmrt/drttypes.h" // module-specific helper class -#include "dcmtk/dcmrt/seq/drtrbs2.h" // for ReferencedBeamSequence -/** Interface class for ReferencedTreatmentRecordSequence (3008,0030) in RTDoseModule +/** Interface class for ReferencedTreatmentRecordSequence (3008,0030) in RTGeneralTreatmentRecordModule */ -class DCMTK_DCMRT_EXPORT DRTReferencedTreatmentRecordSequenceInRTDoseModule +class DCMTK_DCMRT_EXPORT DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule : protected DRTTypes { @@ -106,20 +105,6 @@ class DCMTK_DCMRT_EXPORT DRTReferencedTreatmentRecordSequenceInRTDoseModule */ OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const; - // --- get DICOM sequence attributes --- - - /** get ReferencedBeamSequence (300c,0004) - * @return reference to sequence element - */ - DRTReferencedBeamSequenceInRTDoseModule &getReferencedBeamSequence() - { return ReferencedBeamSequence; } - - /** get ReferencedBeamSequence (300c,0004) - * @return const reference to sequence element - */ - const DRTReferencedBeamSequenceInRTDoseModule &getReferencedBeamSequence() const - { return ReferencedBeamSequence; } - // --- set DICOM attribute values --- /** set ReferencedSOPClassUID (0008,1150) @@ -141,8 +126,6 @@ class DCMTK_DCMRT_EXPORT DRTReferencedTreatmentRecordSequenceInRTDoseModule /// internal flag used to mark the empty default item /*const*/ OFBool EmptyDefaultItem; - /// ReferencedBeamSequence (300c,0004) vr=SQ, vm=1, type=1C - DRTReferencedBeamSequenceInRTDoseModule ReferencedBeamSequence; /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1 DcmUniqueIdentifier ReferencedSOPClassUID; /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1 @@ -155,22 +138,22 @@ class DCMTK_DCMRT_EXPORT DRTReferencedTreatmentRecordSequenceInRTDoseModule /** (default) constructor * @param emptyDefaultSequence internal flag used to mark the empty default sequence */ - DRTReferencedTreatmentRecordSequenceInRTDoseModule(const OFBool emptyDefaultSequence = OFFalse); + DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule(const OFBool emptyDefaultSequence = OFFalse); /** copy constructor * @param copy sequence object to be copied */ - DRTReferencedTreatmentRecordSequenceInRTDoseModule(const DRTReferencedTreatmentRecordSequenceInRTDoseModule ©); + DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule(const DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule ©); /** destructor */ - virtual ~DRTReferencedTreatmentRecordSequenceInRTDoseModule(); + virtual ~DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule(); /** assignment operator * @param copy sequence object to be copied * @return reference to this object */ - DRTReferencedTreatmentRecordSequenceInRTDoseModule &operator=(const DRTReferencedTreatmentRecordSequenceInRTDoseModule ©); + DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule &operator=(const DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule ©); // --- general methods --- @@ -256,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedTreatmentRecordSequenceInRTDoseModule */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrtrs4.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrtrs4.h deleted file mode 100644 index 7b184080..00000000 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrtrs4.h +++ /dev/null @@ -1,320 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Header file for class DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#ifndef DRTRTRS4_H -#define DRTRTRS4_H - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/ofstd/oflist.h" // for standard list class -#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class - - -/** Interface class for ReferencedTreatmentRecordSequence (3008,0030) in RTGeneralTreatmentRecordModule - */ -class DCMTK_DCMRT_EXPORT DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule - : protected DRTTypes -{ - - public: - - /** Item class - */ - class DCMTK_DCMRT_EXPORT Item - : protected DRTTypes - { - - public: - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultItem flag used to mark the empty default item - */ - Item(const OFBool emptyDefaultItem = OFFalse); - - /** copy constructor - * @param copy item object to be copied - */ - Item(const Item ©); - - /** destructor - */ - virtual ~Item(); - - /** assignment operator - * @param copy item object to be copied - * @return reference to this object - */ - Item &operator=(const Item ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if item is empty - * @return OFTrue if item is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if item is valid, i.e.\ not the empty default item - * @return OFTrue if item is valid, OFFalse otherwise - */ - OFBool isValid() const; - - // --- input/output methods --- - - /** read elements from sequence item - * @param item reference to DICOM sequence item from which the elements should be read - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &item); - - /** write elements to sequence item - * @param item reference to DICOM sequence item to which the elements should be written - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &item); - - // --- get DICOM attribute values --- - - /** get ReferencedSOPClassUID (0008,1150) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const; - - /** get ReferencedSOPInstanceUID (0008,1155) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const; - - // --- set DICOM attribute values --- - - /** set ReferencedSOPClassUID (0008,1150) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue); - - /** set ReferencedSOPInstanceUID (0008,1155) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue); - - private: - - /// internal flag used to mark the empty default item - /*const*/ OFBool EmptyDefaultItem; - - /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1 - DcmUniqueIdentifier ReferencedSOPClassUID; - /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1 - DcmUniqueIdentifier ReferencedSOPInstanceUID; - - }; - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultSequence internal flag used to mark the empty default sequence - */ - DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule(const OFBool emptyDefaultSequence = OFFalse); - - /** copy constructor - * @param copy sequence object to be copied - */ - DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule(const DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule ©); - - /** destructor - */ - virtual ~DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule(); - - /** assignment operator - * @param copy sequence object to be copied - * @return reference to this object - */ - DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule &operator=(const DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if sequence is empty - * @return OFTrue if sequence is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if sequence is valid, i.e.\ not the empty default sequence - * @return OFTrue if sequence is valid, OFFalse otherwise - */ - OFBool isValid() const; - - /** get number of items in the sequence - * @return number of items - */ - size_t getNumberOfItems() const; - - /** goto first item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoFirstItem(); - - /** goto next item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoNextItem(); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num); - - /** get current item in the sequence - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getCurrentItem(Item *&item) const; - - /** get current item in the sequence - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getCurrentItem(); - - /** get current item in the sequence - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getCurrentItem() const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getItem(const size_t num, Item *&item); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getItem(const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getItem(const size_t num) const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &operator[](const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &operator[](const size_t num) const; - - /** add new item to the end of this sequence - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition addItem(Item *&item); - - /** insert new item into the sequence - * @param pos position where the new item is to be inserted (0..num) - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition insertItem(const size_t pos, Item *&item); - - /** remove particular item from the sequence - * @param pos position of the item to be removed (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition removeItem(const size_t pos); - - // --- input/output methods --- - - /** read sequence of items from dataset - * @param dataset reference to DICOM dataset from which the sequence should be read - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - /** write sequence of items to dataset - * @param dataset reference to DICOM dataset to which the sequence should be written - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - protected: - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListIterator(Item *) &iterator); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListConstIterator(Item *) &iterator) const; - - private: - - /// internal flag used to mark the empty default sequence - /*const*/ OFBool EmptyDefaultSequence; - - /// list of items in this sequence - OFList SequenceOfItems; - /// currently selected item - OFListIterator(Item *) CurrentItem; - /// empty default item - Item EmptyItem; - -}; - - -#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrvcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrvcs.h new file mode 100644 index 00000000..42bd6f47 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrvcs.h @@ -0,0 +1,545 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTReasonForVisitCodeSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTRVCS_H +#define DRTRVCS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtecs.h" // for EquivalentCodeSequence + + +/** Interface class for ReasonForVisitCodeSequence (0032,1067) + */ +class DCMTK_DCMRT_EXPORT DRTReasonForVisitCodeSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get CodeMeaning (0008,0104) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodeMeaning(OFString &value, const signed long pos = 0) const; + + /** get CodeValue (0008,0100) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodeValue(OFString &value, const signed long pos = 0) const; + + /** get CodingSchemeDesignator (0008,0102) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodingSchemeDesignator(OFString &value, const signed long pos = 0) const; + + /** get CodingSchemeVersion (0008,0103) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupExtensionCreatorUID (0008,010d) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupExtensionCreatorUID(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupExtensionFlag (0008,010b) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupExtensionFlag(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupLocalVersion (0008,0107) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupLocalVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupVersion (0008,0106) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextIdentifier (0008,010f) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextIdentifier(OFString &value, const signed long pos = 0) const; + + /** get ContextUID (0008,0117) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextUID(OFString &value, const signed long pos = 0) const; + + /** get LongCodeValue (0008,0119) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const; + + /** get MappingResource (0008,0105) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResource(OFString &value, const signed long pos = 0) const; + + /** get MappingResourceName (0008,0122) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const; + + /** get MappingResourceUID (0008,0118) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const; + + /** get URNCodeValue (0008,0120) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const; + + // --- get DICOM sequence attributes --- + + /** get EquivalentCodeSequence (0008,0121) + * @return reference to sequence element + */ + DRTEquivalentCodeSequence &getEquivalentCodeSequence() + { return EquivalentCodeSequence; } + + /** get EquivalentCodeSequence (0008,0121) + * @return const reference to sequence element + */ + const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const + { return EquivalentCodeSequence; } + + // --- set DICOM attribute values --- + + /** set CodeMeaning (0008,0104) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodeMeaning(const OFString &value, const OFBool check = OFTrue); + + /** set CodeValue (0008,0100) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodeValue(const OFString &value, const OFBool check = OFTrue); + + /** set CodingSchemeDesignator (0008,0102) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodingSchemeDesignator(const OFString &value, const OFBool check = OFTrue); + + /** set CodingSchemeVersion (0008,0103) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupExtensionCreatorUID (0008,010d) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupExtensionFlag (0008,010b) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupExtensionFlag(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupLocalVersion (0008,0107) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupLocalVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupVersion (0008,0106) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextIdentifier (0008,010f) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextIdentifier(const OFString &value, const OFBool check = OFTrue); + + /** set ContextUID (0008,0117) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue); + + /** set LongCodeValue (0008,0119) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UC) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResource (0008,0105) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResourceName (0008,0122) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResourceUID (0008,0118) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue); + + /** set URNCodeValue (0008,0120) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UR) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1 + DcmLongString CodeMeaning; + /// CodeValue (0008,0100) vr=SH, vm=1, type=1C + DcmShortString CodeValue; + /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C + DcmShortString CodingSchemeDesignator; + /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C + DcmShortString CodingSchemeVersion; + /// ContextGroupExtensionCreatorUID (0008,010d) vr=UI, vm=1, type=1C + DcmUniqueIdentifier ContextGroupExtensionCreatorUID; + /// ContextGroupExtensionFlag (0008,010b) vr=CS, vm=1, type=3 + DcmCodeString ContextGroupExtensionFlag; + /// ContextGroupLocalVersion (0008,0107) vr=DT, vm=1, type=1C + DcmDateTime ContextGroupLocalVersion; + /// ContextGroupVersion (0008,0106) vr=DT, vm=1, type=1C + DcmDateTime ContextGroupVersion; + /// ContextIdentifier (0008,010f) vr=CS, vm=1, type=3 + DcmCodeString ContextIdentifier; + /// ContextUID (0008,0117) vr=UI, vm=1, type=3 + DcmUniqueIdentifier ContextUID; + /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3 + DRTEquivalentCodeSequence EquivalentCodeSequence; + /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C + DcmUnlimitedCharacters LongCodeValue; + /// MappingResource (0008,0105) vr=CS, vm=1, type=1C + DcmCodeString MappingResource; + /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3 + DcmLongString MappingResourceName; + /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3 + DcmUniqueIdentifier MappingResourceUID; + /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C + DcmUniversalResourceIdentifierOrLocator URNCodeValue; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTReasonForVisitCodeSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTReasonForVisitCodeSequence(const DRTReasonForVisitCodeSequence ©); + + /** destructor + */ + virtual ~DRTReasonForVisitCodeSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTReasonForVisitCodeSequence &operator=(const DRTReasonForVisitCodeSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrvis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrvis.h index f3b4325e..18789d4f 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrvis.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrvis.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTReferencedVerificationImageSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedVerificationImageSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrws.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrws.h index 9e0190dd..4668f9e7 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrws.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrws.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTRecordedWedgeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -324,13 +324,13 @@ class DCMTK_DCMRT_EXPORT DRTRecordedWedgeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrwvms.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrwvms.h index 66b87555..f5964556 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtrwvms.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtrwvms.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTRealWorldValueMappingSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -383,13 +383,13 @@ class DCMTK_DCMRT_EXPORT DRTRealWorldValueMappingSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtscris.h b/dcmrt/include/dcmtk/dcmrt/seq/drtscris.h index 62aca333..375c1925 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtscris.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtscris.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTStudiesContainingOtherReferencedInstancesSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -240,13 +240,13 @@ class DCMTK_DCMRT_EXPORT DRTStudiesContainingOtherReferencedInstancesSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtscs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtscs.h index d9b230eb..ad89b930 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtscs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtscs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTStrainCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTStrainCodeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtscvs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtscvs.h new file mode 100644 index 00000000..20baf1ef --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtscvs.h @@ -0,0 +1,337 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTSourceConceptualVolumeSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTSCVS_H +#define DRTSCVS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtcvcss.h" // for ConceptualVolumeConstituentSegmentationReferenceSequence + + +/** Interface class for SourceConceptualVolumeSequence (3010,0018) + */ +class DCMTK_DCMRT_EXPORT DRTSourceConceptualVolumeSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get ConceptualVolumeConstituentIndex (3010,000d) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getConceptualVolumeConstituentIndex(Uint16 &value, const unsigned long pos = 0) const; + + /** get SourceConceptualVolumeUID (3010,0015) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getSourceConceptualVolumeUID(OFString &value, const signed long pos = 0) const; + + // --- get DICOM sequence attributes --- + + /** get ConceptualVolumeConstituentSegmentationReferenceSequence (3010,0012) + * @return reference to sequence element + */ + DRTConceptualVolumeConstituentSegmentationReferenceSequence &getConceptualVolumeConstituentSegmentationReferenceSequence() + { return ConceptualVolumeConstituentSegmentationReferenceSequence; } + + /** get ConceptualVolumeConstituentSegmentationReferenceSequence (3010,0012) + * @return const reference to sequence element + */ + const DRTConceptualVolumeConstituentSegmentationReferenceSequence &getConceptualVolumeConstituentSegmentationReferenceSequence() const + { return ConceptualVolumeConstituentSegmentationReferenceSequence; } + + // --- set DICOM attribute values --- + + /** set ConceptualVolumeConstituentIndex (3010,000d) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setConceptualVolumeConstituentIndex(const Uint16 value, const unsigned long pos = 0); + + /** set SourceConceptualVolumeUID (3010,0015) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setSourceConceptualVolumeUID(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// ConceptualVolumeConstituentIndex (3010,000d) vr=US, vm=1, type=1 + DcmUnsignedShort ConceptualVolumeConstituentIndex; + /// ConceptualVolumeConstituentSegmentationReferenceSequence (3010,0012) vr=SQ, vm=1, type=2 + DRTConceptualVolumeConstituentSegmentationReferenceSequence ConceptualVolumeConstituentSegmentationReferenceSequence; + /// SourceConceptualVolumeUID (3010,0015) vr=UI, vm=1, type=1 + DcmUniqueIdentifier SourceConceptualVolumeUID; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTSourceConceptualVolumeSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTSourceConceptualVolumeSequence(const DRTSourceConceptualVolumeSequence ©); + + /** destructor + */ + virtual ~DRTSourceConceptualVolumeSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTSourceConceptualVolumeSequence &operator=(const DRTSourceConceptualVolumeSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtsdcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtsdcs.h index 6e8c82f7..82a57a9a 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtsdcs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtsdcs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTSeriesDescriptionCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTSeriesDescriptionCodeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtsds.h b/dcmrt/include/dcmtk/dcmrt/seq/drtsds.h index 5e4fa5b4..dae7c7ed 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtsds.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtsds.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTSetupDeviceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -310,13 +310,13 @@ class DCMTK_DCMRT_EXPORT DRTSetupDeviceSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtshds.h b/dcmrt/include/dcmtk/dcmrt/seq/drtshds.h index 3c6c5412..432d34e4 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtshds.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtshds.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTShieldingDeviceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -287,13 +287,13 @@ class DCMTK_DCMRT_EXPORT DRTShieldingDeviceSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtsins.h b/dcmrt/include/dcmtk/dcmrt/seq/drtsins.h index 49c43ff6..2652482d 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtsins.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtsins.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTSourceInstanceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -256,13 +256,13 @@ class DCMTK_DCMRT_EXPORT DRTSourceInstanceSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtsis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtsis.h index 9265d285..fe94c737 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtsis.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtsis.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTSourceImageSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -327,13 +327,13 @@ class DCMTK_DCMRT_EXPORT DRTSourceImageSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtsns.h b/dcmrt/include/dcmtk/dcmrt/seq/drtsns.h index ae8fc827..f304a24d 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtsns.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtsns.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTSnoutSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTSnoutSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtspccs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtspccs.h index f7ac4138..70395dd7 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtspccs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtspccs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTSegmentedPropertyCategoryCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTSegmentedPropertyCategoryCodeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtspcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtspcs.h index 501c84be..94d7075a 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtspcs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtspcs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTScheduledProtocolCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -479,13 +479,13 @@ class DCMTK_DCMRT_EXPORT DRTScheduledProtocolCodeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtspgis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtspgis.h index 163bda91..9e2a0d72 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtspgis.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtspgis.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTSourcePatientGroupIdentificationSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -256,13 +256,13 @@ class DCMTK_DCMRT_EXPORT DRTSourcePatientGroupIdentificationSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtsppcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtsppcs.h new file mode 100644 index 00000000..ae572d13 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtsppcs.h @@ -0,0 +1,453 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTSourcePixelPlanesCharacteristicsSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTSPPCS_H +#define DRTSPPCS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class + + +/** Interface class for SourcePixelPlanesCharacteristicsSequence (3006,004a) + */ +class DCMTK_DCMRT_EXPORT DRTSourcePixelPlanesCharacteristicsSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get Columns (0028,0011) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getColumns(Uint16 &value, const unsigned long pos = 0) const; + + /** get ImageOrientationPatient (0020,0037) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getImageOrientationPatient(OFString &value, const signed long pos = 0) const; + + /** get ImageOrientationPatient (0020,0037) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getImageOrientationPatient(Float64 &value, const unsigned long pos = 0) const; + + /** get ImageOrientationPatient (0020,0037) + * @param value reference to variable in which the value(s) should be stored + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getImageOrientationPatient(OFVector &value) const; + + /** get ImagePositionPatient (0020,0032) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getImagePositionPatient(OFString &value, const signed long pos = 0) const; + + /** get ImagePositionPatient (0020,0032) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getImagePositionPatient(Float64 &value, const unsigned long pos = 0) const; + + /** get ImagePositionPatient (0020,0032) + * @param value reference to variable in which the value(s) should be stored + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getImagePositionPatient(OFVector &value) const; + + /** get NumberOfFrames (0028,0008) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getNumberOfFrames(OFString &value, const signed long pos = 0) const; + + /** get NumberOfFrames (0028,0008) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getNumberOfFrames(Sint32 &value, const unsigned long pos = 0) const; + + /** get PixelSpacing (0028,0030) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getPixelSpacing(OFString &value, const signed long pos = 0) const; + + /** get PixelSpacing (0028,0030) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getPixelSpacing(Float64 &value, const unsigned long pos = 0) const; + + /** get PixelSpacing (0028,0030) + * @param value reference to variable in which the value(s) should be stored + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getPixelSpacing(OFVector &value) const; + + /** get Rows (0028,0010) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getRows(Uint16 &value, const unsigned long pos = 0) const; + + /** get SpacingBetweenSlices (0018,0088) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getSpacingBetweenSlices(OFString &value, const signed long pos = 0) const; + + /** get SpacingBetweenSlices (0018,0088) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getSpacingBetweenSlices(Float64 &value, const unsigned long pos = 0) const; + + // --- set DICOM attribute values --- + + /** set Columns (0028,0011) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setColumns(const Uint16 value, const unsigned long pos = 0); + + /** set ImageOrientationPatient (0020,0037) + * @param value value to be set (possibly multi-valued) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (6) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setImageOrientationPatient(const OFString &value, const OFBool check = OFTrue); + + /** set ImagePositionPatient (0020,0032) + * @param value value to be set (possibly multi-valued) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (3) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setImagePositionPatient(const OFString &value, const OFBool check = OFTrue); + + /** set NumberOfFrames (0028,0008) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (IS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setNumberOfFrames(const OFString &value, const OFBool check = OFTrue); + + /** set PixelSpacing (0028,0030) + * @param value value to be set (possibly multi-valued) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (2) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setPixelSpacing(const OFString &value, const OFBool check = OFTrue); + + /** set Rows (0028,0010) + * @param value value to be set (should be valid for this VR) + * @param pos index of the value to be set (0..vm-1), vm=1 + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setRows(const Uint16 value, const unsigned long pos = 0); + + /** set SpacingBetweenSlices (0018,0088) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setSpacingBetweenSlices(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// Columns (0028,0011) vr=US, vm=1, type=1 + DcmUnsignedShort Columns; + /// ImageOrientationPatient (0020,0037) vr=DS, vm=6, type=1 + DcmDecimalString ImageOrientationPatient; + /// ImagePositionPatient (0020,0032) vr=DS, vm=3, type=1 + DcmDecimalString ImagePositionPatient; + /// NumberOfFrames (0028,0008) vr=IS, vm=1, type=1 + DcmIntegerString NumberOfFrames; + /// PixelSpacing (0028,0030) vr=DS, vm=2, type=1 + DcmDecimalString PixelSpacing; + /// Rows (0028,0010) vr=US, vm=1, type=1 + DcmUnsignedShort Rows; + /// SpacingBetweenSlices (0018,0088) vr=DS, vm=1, type=1 + DcmDecimalString SpacingBetweenSlices; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTSourcePixelPlanesCharacteristicsSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTSourcePixelPlanesCharacteristicsSequence(const DRTSourcePixelPlanesCharacteristicsSequence ©); + + /** destructor + */ + virtual ~DRTSourcePixelPlanesCharacteristicsSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTSourcePixelPlanesCharacteristicsSequence &operator=(const DRTSourcePixelPlanesCharacteristicsSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtsptcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtsptcs.h index 25e382e1..8e6049c9 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtsptcs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtsptcs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTSegmentedPropertyTypeModifierCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTSegmentedPropertyTypeModifierCodeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtss.h index 3a04e074..0258cb57 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtss.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtss.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTSourceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -551,13 +551,13 @@ class DCMTK_DCMRT_EXPORT DRTSourceSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtssrcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtssrcs.h index 153f6d96..a74d96fa 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtssrcs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtssrcs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTStrainSourceRegistryCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTStrainSourceRegistryCodeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtssrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtssrs.h index 7f6c423c..00c922de 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtssrs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtssrs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTStructureSetROISequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -19,7 +19,10 @@ #include "dcmtk/ofstd/oflist.h" // for standard list class #include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtcvis.h" // for ConceptualVolumeIdentificationSequence +#include "dcmtk/dcmrt/seq/drtdfss.h" // for DefinitionSourceSequence #include "dcmtk/dcmrt/seq/drtdcs.h" // for DerivationCodeSequence +#include "dcmtk/dcmrt/seq/drtrdais.h" // for ROIDerivationAlgorithmIdentificationSequence /** Interface class for StructureSetROISequence (3006,0020) @@ -157,6 +160,30 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetROISequence // --- get DICOM sequence attributes --- + /** get ConceptualVolumeIdentificationSequence (3010,00a0) + * @return reference to sequence element + */ + DRTConceptualVolumeIdentificationSequence &getConceptualVolumeIdentificationSequence() + { return ConceptualVolumeIdentificationSequence; } + + /** get ConceptualVolumeIdentificationSequence (3010,00a0) + * @return const reference to sequence element + */ + const DRTConceptualVolumeIdentificationSequence &getConceptualVolumeIdentificationSequence() const + { return ConceptualVolumeIdentificationSequence; } + + /** get DefinitionSourceSequence (0008,1156) + * @return reference to sequence element + */ + DRTDefinitionSourceSequence &getDefinitionSourceSequence() + { return DefinitionSourceSequence; } + + /** get DefinitionSourceSequence (0008,1156) + * @return const reference to sequence element + */ + const DRTDefinitionSourceSequence &getDefinitionSourceSequence() const + { return DefinitionSourceSequence; } + /** get DerivationCodeSequence (0008,9215) * @return reference to sequence element */ @@ -169,6 +196,18 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetROISequence const DRTDerivationCodeSequence &getDerivationCodeSequence() const { return DerivationCodeSequence; } + /** get ROIDerivationAlgorithmIdentificationSequence (3006,0037) + * @return reference to sequence element + */ + DRTROIDerivationAlgorithmIdentificationSequence &getROIDerivationAlgorithmIdentificationSequence() + { return ROIDerivationAlgorithmIdentificationSequence; } + + /** get ROIDerivationAlgorithmIdentificationSequence (3006,0037) + * @return const reference to sequence element + */ + const DRTROIDerivationAlgorithmIdentificationSequence &getROIDerivationAlgorithmIdentificationSequence() const + { return ROIDerivationAlgorithmIdentificationSequence; } + // --- set DICOM attribute values --- /** set ROIDescription (3006,0028) @@ -225,8 +264,14 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetROISequence /// internal flag used to mark the empty default item /*const*/ OFBool EmptyDefaultItem; + /// ConceptualVolumeIdentificationSequence (3010,00a0) vr=SQ, vm=1, type=3 + DRTConceptualVolumeIdentificationSequence ConceptualVolumeIdentificationSequence; + /// DefinitionSourceSequence (0008,1156) vr=SQ, vm=1, type=3 + DRTDefinitionSourceSequence DefinitionSourceSequence; /// DerivationCodeSequence (0008,9215) vr=SQ, vm=1, type=3 DRTDerivationCodeSequence DerivationCodeSequence; + /// ROIDerivationAlgorithmIdentificationSequence (3006,0037) vr=SQ, vm=1, type=3 + DRTROIDerivationAlgorithmIdentificationSequence ROIDerivationAlgorithmIdentificationSequence; /// ROIDescription (3006,0028) vr=ST, vm=1, type=3 DcmShortText ROIDescription; /// ROIGenerationAlgorithm (3006,0036) vr=CS, vm=1, type=2 @@ -350,13 +395,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetROISequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtsss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtsss.h index c9a9ea13..ba3e8ca1 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtsss.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtsss.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTStrainStockSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -256,13 +256,13 @@ class DCMTK_DCMRT_EXPORT DRTStrainStockSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drttms0.h b/dcmrt/include/dcmtk/dcmrt/seq/drttms0.h deleted file mode 100644 index 6c189054..00000000 --- a/dcmrt/include/dcmtk/dcmrt/seq/drttms0.h +++ /dev/null @@ -1,400 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Header file for class DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#ifndef DRTTMS0_H -#define DRTTMS0_H - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/ofstd/oflist.h" // for standard list class -#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class - - -/** Interface class for TreatmentMachineSequence (300a,0206) in RTTreatmentMachineRecordModule - */ -class DCMTK_DCMRT_EXPORT DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule - : protected DRTTypes -{ - - public: - - /** Item class - */ - class DCMTK_DCMRT_EXPORT Item - : protected DRTTypes - { - - public: - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultItem flag used to mark the empty default item - */ - Item(const OFBool emptyDefaultItem = OFFalse); - - /** copy constructor - * @param copy item object to be copied - */ - Item(const Item ©); - - /** destructor - */ - virtual ~Item(); - - /** assignment operator - * @param copy item object to be copied - * @return reference to this object - */ - Item &operator=(const Item ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if item is empty - * @return OFTrue if item is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if item is valid, i.e.\ not the empty default item - * @return OFTrue if item is valid, OFFalse otherwise - */ - OFBool isValid() const; - - // --- input/output methods --- - - /** read elements from sequence item - * @param item reference to DICOM sequence item from which the elements should be read - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &item); - - /** write elements to sequence item - * @param item reference to DICOM sequence item to which the elements should be written - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &item); - - // --- get DICOM attribute values --- - - /** get DeviceSerialNumber (0018,1000) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getDeviceSerialNumber(OFString &value, const signed long pos = 0) const; - - /** get InstitutionAddress (0008,0081) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getInstitutionAddress(OFString &value, const signed long pos = 0) const; - - /** get InstitutionName (0008,0080) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getInstitutionName(OFString &value, const signed long pos = 0) const; - - /** get InstitutionalDepartmentName (0008,1040) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getInstitutionalDepartmentName(OFString &value, const signed long pos = 0) const; - - /** get Manufacturer (0008,0070) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getManufacturer(OFString &value, const signed long pos = 0) const; - - /** get ManufacturerModelName (0008,1090) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getManufacturerModelName(OFString &value, const signed long pos = 0) const; - - /** get TreatmentMachineName (300a,00b2) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getTreatmentMachineName(OFString &value, const signed long pos = 0) const; - - // --- set DICOM attribute values --- - - /** set DeviceSerialNumber (0018,1000) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setDeviceSerialNumber(const OFString &value, const OFBool check = OFTrue); - - /** set InstitutionAddress (0008,0081) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (ST) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setInstitutionAddress(const OFString &value, const OFBool check = OFTrue); - - /** set InstitutionName (0008,0080) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setInstitutionName(const OFString &value, const OFBool check = OFTrue); - - /** set InstitutionalDepartmentName (0008,1040) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setInstitutionalDepartmentName(const OFString &value, const OFBool check = OFTrue); - - /** set Manufacturer (0008,0070) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setManufacturer(const OFString &value, const OFBool check = OFTrue); - - /** set ManufacturerModelName (0008,1090) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setManufacturerModelName(const OFString &value, const OFBool check = OFTrue); - - /** set TreatmentMachineName (300a,00b2) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setTreatmentMachineName(const OFString &value, const OFBool check = OFTrue); - - private: - - /// internal flag used to mark the empty default item - /*const*/ OFBool EmptyDefaultItem; - - /// DeviceSerialNumber (0018,1000) vr=LO, vm=1, type=2 - DcmLongString DeviceSerialNumber; - /// InstitutionAddress (0008,0081) vr=ST, vm=1, type=3 - DcmShortText InstitutionAddress; - /// InstitutionName (0008,0080) vr=LO, vm=1, type=2 - DcmLongString InstitutionName; - /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3 - DcmLongString InstitutionalDepartmentName; - /// Manufacturer (0008,0070) vr=LO, vm=1, type=2 - DcmLongString Manufacturer; - /// ManufacturerModelName (0008,1090) vr=LO, vm=1, type=2 - DcmLongString ManufacturerModelName; - /// TreatmentMachineName (300a,00b2) vr=SH, vm=1, type=2 - DcmShortString TreatmentMachineName; - - }; - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultSequence internal flag used to mark the empty default sequence - */ - DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule(const OFBool emptyDefaultSequence = OFFalse); - - /** copy constructor - * @param copy sequence object to be copied - */ - DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule(const DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule ©); - - /** destructor - */ - virtual ~DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule(); - - /** assignment operator - * @param copy sequence object to be copied - * @return reference to this object - */ - DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule &operator=(const DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if sequence is empty - * @return OFTrue if sequence is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if sequence is valid, i.e.\ not the empty default sequence - * @return OFTrue if sequence is valid, OFFalse otherwise - */ - OFBool isValid() const; - - /** get number of items in the sequence - * @return number of items - */ - size_t getNumberOfItems() const; - - /** goto first item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoFirstItem(); - - /** goto next item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoNextItem(); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num); - - /** get current item in the sequence - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getCurrentItem(Item *&item) const; - - /** get current item in the sequence - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getCurrentItem(); - - /** get current item in the sequence - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getCurrentItem() const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getItem(const size_t num, Item *&item); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getItem(const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getItem(const size_t num) const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &operator[](const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &operator[](const size_t num) const; - - /** add new item to the end of this sequence - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition addItem(Item *&item); - - /** insert new item into the sequence - * @param pos position where the new item is to be inserted (0..num) - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition insertItem(const size_t pos, Item *&item); - - /** remove particular item from the sequence - * @param pos position of the item to be removed (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition removeItem(const size_t pos); - - // --- input/output methods --- - - /** read sequence of items from dataset - * @param dataset reference to DICOM dataset from which the sequence should be read - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - /** write sequence of items to dataset - * @param dataset reference to DICOM dataset to which the sequence should be written - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - protected: - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListIterator(Item *) &iterator); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListConstIterator(Item *) &iterator) const; - - private: - - /// internal flag used to mark the empty default sequence - /*const*/ OFBool EmptyDefaultSequence; - - /// list of items in this sequence - OFList SequenceOfItems; - /// currently selected item - OFListIterator(Item *) CurrentItem; - /// empty default item - Item EmptyItem; - -}; - - -#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drttms1.h b/dcmrt/include/dcmtk/dcmrt/seq/drttms1.h new file mode 100644 index 00000000..76dc7d43 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drttms1.h @@ -0,0 +1,417 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTTMS1_H +#define DRTTMS1_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtidcs.h" // for InstitutionalDepartmentTypeCodeSequence + + +/** Interface class for TreatmentMachineSequence (300a,0206) in RTBrachyApplicationSetupsModule + */ +class DCMTK_DCMRT_EXPORT DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get DeviceSerialNumber (0018,1000) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getDeviceSerialNumber(OFString &value, const signed long pos = 0) const; + + /** get InstitutionAddress (0008,0081) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getInstitutionAddress(OFString &value, const signed long pos = 0) const; + + /** get InstitutionName (0008,0080) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getInstitutionName(OFString &value, const signed long pos = 0) const; + + /** get InstitutionalDepartmentName (0008,1040) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getInstitutionalDepartmentName(OFString &value, const signed long pos = 0) const; + + /** get Manufacturer (0008,0070) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getManufacturer(OFString &value, const signed long pos = 0) const; + + /** get ManufacturerModelName (0008,1090) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getManufacturerModelName(OFString &value, const signed long pos = 0) const; + + /** get TreatmentMachineName (300a,00b2) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getTreatmentMachineName(OFString &value, const signed long pos = 0) const; + + // --- get DICOM sequence attributes --- + + /** get InstitutionalDepartmentTypeCodeSequence (0008,1041) + * @return reference to sequence element + */ + DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() + { return InstitutionalDepartmentTypeCodeSequence; } + + /** get InstitutionalDepartmentTypeCodeSequence (0008,1041) + * @return const reference to sequence element + */ + const DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() const + { return InstitutionalDepartmentTypeCodeSequence; } + + // --- set DICOM attribute values --- + + /** set DeviceSerialNumber (0018,1000) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setDeviceSerialNumber(const OFString &value, const OFBool check = OFTrue); + + /** set InstitutionAddress (0008,0081) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (ST) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setInstitutionAddress(const OFString &value, const OFBool check = OFTrue); + + /** set InstitutionName (0008,0080) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setInstitutionName(const OFString &value, const OFBool check = OFTrue); + + /** set InstitutionalDepartmentName (0008,1040) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setInstitutionalDepartmentName(const OFString &value, const OFBool check = OFTrue); + + /** set Manufacturer (0008,0070) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setManufacturer(const OFString &value, const OFBool check = OFTrue); + + /** set ManufacturerModelName (0008,1090) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setManufacturerModelName(const OFString &value, const OFBool check = OFTrue); + + /** set TreatmentMachineName (300a,00b2) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setTreatmentMachineName(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// DeviceSerialNumber (0018,1000) vr=LO, vm=1, type=3 + DcmLongString DeviceSerialNumber; + /// InstitutionAddress (0008,0081) vr=ST, vm=1, type=3 + DcmShortText InstitutionAddress; + /// InstitutionName (0008,0080) vr=LO, vm=1, type=3 + DcmLongString InstitutionName; + /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3 + DcmLongString InstitutionalDepartmentName; + /// InstitutionalDepartmentTypeCodeSequence (0008,1041) vr=SQ, vm=1, type=3 + DRTInstitutionalDepartmentTypeCodeSequence InstitutionalDepartmentTypeCodeSequence; + /// Manufacturer (0008,0070) vr=LO, vm=1, type=3 + DcmLongString Manufacturer; + /// ManufacturerModelName (0008,1090) vr=LO, vm=1, type=3 + DcmLongString ManufacturerModelName; + /// TreatmentMachineName (300a,00b2) vr=SH, vm=1, type=2 + DcmShortString TreatmentMachineName; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule(const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule ©); + + /** destructor + */ + virtual ~DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule &operator=(const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drttms2.h b/dcmrt/include/dcmtk/dcmrt/seq/drttms2.h new file mode 100644 index 00000000..c13bbd39 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drttms2.h @@ -0,0 +1,417 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTTMS2_H +#define DRTTMS2_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtidcs.h" // for InstitutionalDepartmentTypeCodeSequence + + +/** Interface class for TreatmentMachineSequence (300a,0206) in RTTreatmentMachineRecordModule + */ +class DCMTK_DCMRT_EXPORT DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get DeviceSerialNumber (0018,1000) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getDeviceSerialNumber(OFString &value, const signed long pos = 0) const; + + /** get InstitutionAddress (0008,0081) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getInstitutionAddress(OFString &value, const signed long pos = 0) const; + + /** get InstitutionName (0008,0080) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getInstitutionName(OFString &value, const signed long pos = 0) const; + + /** get InstitutionalDepartmentName (0008,1040) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getInstitutionalDepartmentName(OFString &value, const signed long pos = 0) const; + + /** get Manufacturer (0008,0070) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getManufacturer(OFString &value, const signed long pos = 0) const; + + /** get ManufacturerModelName (0008,1090) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getManufacturerModelName(OFString &value, const signed long pos = 0) const; + + /** get TreatmentMachineName (300a,00b2) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getTreatmentMachineName(OFString &value, const signed long pos = 0) const; + + // --- get DICOM sequence attributes --- + + /** get InstitutionalDepartmentTypeCodeSequence (0008,1041) + * @return reference to sequence element + */ + DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() + { return InstitutionalDepartmentTypeCodeSequence; } + + /** get InstitutionalDepartmentTypeCodeSequence (0008,1041) + * @return const reference to sequence element + */ + const DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() const + { return InstitutionalDepartmentTypeCodeSequence; } + + // --- set DICOM attribute values --- + + /** set DeviceSerialNumber (0018,1000) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setDeviceSerialNumber(const OFString &value, const OFBool check = OFTrue); + + /** set InstitutionAddress (0008,0081) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (ST) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setInstitutionAddress(const OFString &value, const OFBool check = OFTrue); + + /** set InstitutionName (0008,0080) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setInstitutionName(const OFString &value, const OFBool check = OFTrue); + + /** set InstitutionalDepartmentName (0008,1040) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setInstitutionalDepartmentName(const OFString &value, const OFBool check = OFTrue); + + /** set Manufacturer (0008,0070) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setManufacturer(const OFString &value, const OFBool check = OFTrue); + + /** set ManufacturerModelName (0008,1090) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setManufacturerModelName(const OFString &value, const OFBool check = OFTrue); + + /** set TreatmentMachineName (300a,00b2) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setTreatmentMachineName(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// DeviceSerialNumber (0018,1000) vr=LO, vm=1, type=2 + DcmLongString DeviceSerialNumber; + /// InstitutionAddress (0008,0081) vr=ST, vm=1, type=3 + DcmShortText InstitutionAddress; + /// InstitutionName (0008,0080) vr=LO, vm=1, type=2 + DcmLongString InstitutionName; + /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3 + DcmLongString InstitutionalDepartmentName; + /// InstitutionalDepartmentTypeCodeSequence (0008,1041) vr=SQ, vm=1, type=3 + DRTInstitutionalDepartmentTypeCodeSequence InstitutionalDepartmentTypeCodeSequence; + /// Manufacturer (0008,0070) vr=LO, vm=1, type=2 + DcmLongString Manufacturer; + /// ManufacturerModelName (0008,1090) vr=LO, vm=1, type=2 + DcmLongString ManufacturerModelName; + /// TreatmentMachineName (300a,00b2) vr=SH, vm=1, type=2 + DcmShortString TreatmentMachineName; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule(const DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule ©); + + /** destructor + */ + virtual ~DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule &operator=(const DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drttms9.h b/dcmrt/include/dcmtk/dcmrt/seq/drttms9.h deleted file mode 100644 index e0946cc2..00000000 --- a/dcmrt/include/dcmtk/dcmrt/seq/drttms9.h +++ /dev/null @@ -1,400 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Header file for class DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#ifndef DRTTMS9_H -#define DRTTMS9_H - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/ofstd/oflist.h" // for standard list class -#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class - - -/** Interface class for TreatmentMachineSequence (300a,0206) in RTBrachyApplicationSetupsModule - */ -class DCMTK_DCMRT_EXPORT DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule - : protected DRTTypes -{ - - public: - - /** Item class - */ - class DCMTK_DCMRT_EXPORT Item - : protected DRTTypes - { - - public: - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultItem flag used to mark the empty default item - */ - Item(const OFBool emptyDefaultItem = OFFalse); - - /** copy constructor - * @param copy item object to be copied - */ - Item(const Item ©); - - /** destructor - */ - virtual ~Item(); - - /** assignment operator - * @param copy item object to be copied - * @return reference to this object - */ - Item &operator=(const Item ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if item is empty - * @return OFTrue if item is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if item is valid, i.e.\ not the empty default item - * @return OFTrue if item is valid, OFFalse otherwise - */ - OFBool isValid() const; - - // --- input/output methods --- - - /** read elements from sequence item - * @param item reference to DICOM sequence item from which the elements should be read - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &item); - - /** write elements to sequence item - * @param item reference to DICOM sequence item to which the elements should be written - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &item); - - // --- get DICOM attribute values --- - - /** get DeviceSerialNumber (0018,1000) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getDeviceSerialNumber(OFString &value, const signed long pos = 0) const; - - /** get InstitutionAddress (0008,0081) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getInstitutionAddress(OFString &value, const signed long pos = 0) const; - - /** get InstitutionName (0008,0080) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getInstitutionName(OFString &value, const signed long pos = 0) const; - - /** get InstitutionalDepartmentName (0008,1040) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getInstitutionalDepartmentName(OFString &value, const signed long pos = 0) const; - - /** get Manufacturer (0008,0070) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getManufacturer(OFString &value, const signed long pos = 0) const; - - /** get ManufacturerModelName (0008,1090) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getManufacturerModelName(OFString &value, const signed long pos = 0) const; - - /** get TreatmentMachineName (300a,00b2) - * @param value reference to variable in which the value should be stored - * @param pos index of the value to get (0..vm-1), -1 for all components - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getTreatmentMachineName(OFString &value, const signed long pos = 0) const; - - // --- set DICOM attribute values --- - - /** set DeviceSerialNumber (0018,1000) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setDeviceSerialNumber(const OFString &value, const OFBool check = OFTrue); - - /** set InstitutionAddress (0008,0081) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (ST) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setInstitutionAddress(const OFString &value, const OFBool check = OFTrue); - - /** set InstitutionName (0008,0080) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setInstitutionName(const OFString &value, const OFBool check = OFTrue); - - /** set InstitutionalDepartmentName (0008,1040) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setInstitutionalDepartmentName(const OFString &value, const OFBool check = OFTrue); - - /** set Manufacturer (0008,0070) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setManufacturer(const OFString &value, const OFBool check = OFTrue); - - /** set ManufacturerModelName (0008,1090) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setManufacturerModelName(const OFString &value, const OFBool check = OFTrue); - - /** set TreatmentMachineName (300a,00b2) - * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition setTreatmentMachineName(const OFString &value, const OFBool check = OFTrue); - - private: - - /// internal flag used to mark the empty default item - /*const*/ OFBool EmptyDefaultItem; - - /// DeviceSerialNumber (0018,1000) vr=LO, vm=1, type=3 - DcmLongString DeviceSerialNumber; - /// InstitutionAddress (0008,0081) vr=ST, vm=1, type=3 - DcmShortText InstitutionAddress; - /// InstitutionName (0008,0080) vr=LO, vm=1, type=3 - DcmLongString InstitutionName; - /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3 - DcmLongString InstitutionalDepartmentName; - /// Manufacturer (0008,0070) vr=LO, vm=1, type=3 - DcmLongString Manufacturer; - /// ManufacturerModelName (0008,1090) vr=LO, vm=1, type=3 - DcmLongString ManufacturerModelName; - /// TreatmentMachineName (300a,00b2) vr=SH, vm=1, type=2 - DcmShortString TreatmentMachineName; - - }; - - // --- constructors, destructor and operators --- - - /** (default) constructor - * @param emptyDefaultSequence internal flag used to mark the empty default sequence - */ - DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule(const OFBool emptyDefaultSequence = OFFalse); - - /** copy constructor - * @param copy sequence object to be copied - */ - DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule(const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule ©); - - /** destructor - */ - virtual ~DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule(); - - /** assignment operator - * @param copy sequence object to be copied - * @return reference to this object - */ - DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule &operator=(const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule ©); - - // --- general methods --- - - /** clear all internal member variables - */ - void clear(); - - /** check if sequence is empty - * @return OFTrue if sequence is empty, OFFalse otherwise - */ - OFBool isEmpty(); - - /** check if sequence is valid, i.e.\ not the empty default sequence - * @return OFTrue if sequence is valid, OFFalse otherwise - */ - OFBool isValid() const; - - /** get number of items in the sequence - * @return number of items - */ - size_t getNumberOfItems() const; - - /** goto first item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoFirstItem(); - - /** goto next item in the sequence - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoNextItem(); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num); - - /** get current item in the sequence - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getCurrentItem(Item *&item) const; - - /** get current item in the sequence - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getCurrentItem(); - - /** get current item in the sequence - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getCurrentItem() const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @param item reference to item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition getItem(const size_t num, Item *&item); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &getItem(const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &getItem(const size_t num) const; - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return reference to specified item if successful, empty default item otherwise - */ - Item &operator[](const size_t num); - - /** get particular item in the sequence - * @param num number of the item to be retrieved (0..num-1) - * @return const reference to specified item if successful, empty default item otherwise - */ - const Item &operator[](const size_t num) const; - - /** add new item to the end of this sequence - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition addItem(Item *&item); - - /** insert new item into the sequence - * @param pos position where the new item is to be inserted (0..num) - * @param item reference to new item pointer (result variable) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition insertItem(const size_t pos, Item *&item); - - /** remove particular item from the sequence - * @param pos position of the item to be removed (0..num-1) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition removeItem(const size_t pos); - - // --- input/output methods --- - - /** read sequence of items from dataset - * @param dataset reference to DICOM dataset from which the sequence should be read - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - /** write sequence of items to dataset - * @param dataset reference to DICOM dataset to which the sequence should be written - * @param card cardinality (valid range for number of items) - * @param type value type (valid value: "1", "2" or something else which is not checked) - * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName = NULL); - - protected: - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListIterator(Item *) &iterator); - - /** goto particular item in the sequence - * @param num number of the item to be selected (0..num-1) - * @param iterator list iterator storing the position of the item - * @return status, EC_Normal if successful, an error code otherwise - */ - OFCondition gotoItem(const size_t num, - OFListConstIterator(Item *) &iterator) const; - - private: - - /// internal flag used to mark the empty default sequence - /*const*/ OFBool EmptyDefaultSequence; - - /// list of items in this sequence - OFList SequenceOfItems; - /// currently selected item - OFListIterator(Item *) CurrentItem; - /// empty default item - Item EmptyItem; - -}; - - -#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drttrccs.h b/dcmrt/include/dcmtk/dcmrt/seq/drttrccs.h new file mode 100644 index 00000000..3f22bd6e --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drttrccs.h @@ -0,0 +1,545 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTTherapeuticRoleCategoryCodeSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTTRCCS_H +#define DRTTRCCS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtecs.h" // for EquivalentCodeSequence + + +/** Interface class for TherapeuticRoleCategoryCodeSequence (3010,0064) + */ +class DCMTK_DCMRT_EXPORT DRTTherapeuticRoleCategoryCodeSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get CodeMeaning (0008,0104) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodeMeaning(OFString &value, const signed long pos = 0) const; + + /** get CodeValue (0008,0100) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodeValue(OFString &value, const signed long pos = 0) const; + + /** get CodingSchemeDesignator (0008,0102) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodingSchemeDesignator(OFString &value, const signed long pos = 0) const; + + /** get CodingSchemeVersion (0008,0103) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupExtensionCreatorUID (0008,010d) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupExtensionCreatorUID(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupExtensionFlag (0008,010b) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupExtensionFlag(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupLocalVersion (0008,0107) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupLocalVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupVersion (0008,0106) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextIdentifier (0008,010f) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextIdentifier(OFString &value, const signed long pos = 0) const; + + /** get ContextUID (0008,0117) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextUID(OFString &value, const signed long pos = 0) const; + + /** get LongCodeValue (0008,0119) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const; + + /** get MappingResource (0008,0105) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResource(OFString &value, const signed long pos = 0) const; + + /** get MappingResourceName (0008,0122) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const; + + /** get MappingResourceUID (0008,0118) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const; + + /** get URNCodeValue (0008,0120) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const; + + // --- get DICOM sequence attributes --- + + /** get EquivalentCodeSequence (0008,0121) + * @return reference to sequence element + */ + DRTEquivalentCodeSequence &getEquivalentCodeSequence() + { return EquivalentCodeSequence; } + + /** get EquivalentCodeSequence (0008,0121) + * @return const reference to sequence element + */ + const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const + { return EquivalentCodeSequence; } + + // --- set DICOM attribute values --- + + /** set CodeMeaning (0008,0104) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodeMeaning(const OFString &value, const OFBool check = OFTrue); + + /** set CodeValue (0008,0100) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodeValue(const OFString &value, const OFBool check = OFTrue); + + /** set CodingSchemeDesignator (0008,0102) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodingSchemeDesignator(const OFString &value, const OFBool check = OFTrue); + + /** set CodingSchemeVersion (0008,0103) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupExtensionCreatorUID (0008,010d) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupExtensionFlag (0008,010b) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupExtensionFlag(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupLocalVersion (0008,0107) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupLocalVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupVersion (0008,0106) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextIdentifier (0008,010f) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextIdentifier(const OFString &value, const OFBool check = OFTrue); + + /** set ContextUID (0008,0117) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue); + + /** set LongCodeValue (0008,0119) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UC) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResource (0008,0105) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResourceName (0008,0122) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResourceUID (0008,0118) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue); + + /** set URNCodeValue (0008,0120) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UR) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1 + DcmLongString CodeMeaning; + /// CodeValue (0008,0100) vr=SH, vm=1, type=1C + DcmShortString CodeValue; + /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C + DcmShortString CodingSchemeDesignator; + /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C + DcmShortString CodingSchemeVersion; + /// ContextGroupExtensionCreatorUID (0008,010d) vr=UI, vm=1, type=1C + DcmUniqueIdentifier ContextGroupExtensionCreatorUID; + /// ContextGroupExtensionFlag (0008,010b) vr=CS, vm=1, type=3 + DcmCodeString ContextGroupExtensionFlag; + /// ContextGroupLocalVersion (0008,0107) vr=DT, vm=1, type=1C + DcmDateTime ContextGroupLocalVersion; + /// ContextGroupVersion (0008,0106) vr=DT, vm=1, type=1C + DcmDateTime ContextGroupVersion; + /// ContextIdentifier (0008,010f) vr=CS, vm=1, type=3 + DcmCodeString ContextIdentifier; + /// ContextUID (0008,0117) vr=UI, vm=1, type=3 + DcmUniqueIdentifier ContextUID; + /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3 + DRTEquivalentCodeSequence EquivalentCodeSequence; + /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C + DcmUnlimitedCharacters LongCodeValue; + /// MappingResource (0008,0105) vr=CS, vm=1, type=1C + DcmCodeString MappingResource; + /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3 + DcmLongString MappingResourceName; + /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3 + DcmUniqueIdentifier MappingResourceUID; + /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C + DcmUniversalResourceIdentifierOrLocator URNCodeValue; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTTherapeuticRoleCategoryCodeSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTTherapeuticRoleCategoryCodeSequence(const DRTTherapeuticRoleCategoryCodeSequence ©); + + /** destructor + */ + virtual ~DRTTherapeuticRoleCategoryCodeSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTTherapeuticRoleCategoryCodeSequence &operator=(const DRTTherapeuticRoleCategoryCodeSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drttrtcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drttrtcs.h new file mode 100644 index 00000000..8f2511a4 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drttrtcs.h @@ -0,0 +1,545 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTTherapeuticRoleTypeCodeSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTTRTCS_H +#define DRTTRTCS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtecs.h" // for EquivalentCodeSequence + + +/** Interface class for TherapeuticRoleTypeCodeSequence (3010,0065) + */ +class DCMTK_DCMRT_EXPORT DRTTherapeuticRoleTypeCodeSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get CodeMeaning (0008,0104) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodeMeaning(OFString &value, const signed long pos = 0) const; + + /** get CodeValue (0008,0100) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodeValue(OFString &value, const signed long pos = 0) const; + + /** get CodingSchemeDesignator (0008,0102) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodingSchemeDesignator(OFString &value, const signed long pos = 0) const; + + /** get CodingSchemeVersion (0008,0103) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupExtensionCreatorUID (0008,010d) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupExtensionCreatorUID(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupExtensionFlag (0008,010b) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupExtensionFlag(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupLocalVersion (0008,0107) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupLocalVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupVersion (0008,0106) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextIdentifier (0008,010f) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextIdentifier(OFString &value, const signed long pos = 0) const; + + /** get ContextUID (0008,0117) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextUID(OFString &value, const signed long pos = 0) const; + + /** get LongCodeValue (0008,0119) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const; + + /** get MappingResource (0008,0105) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResource(OFString &value, const signed long pos = 0) const; + + /** get MappingResourceName (0008,0122) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const; + + /** get MappingResourceUID (0008,0118) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const; + + /** get URNCodeValue (0008,0120) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const; + + // --- get DICOM sequence attributes --- + + /** get EquivalentCodeSequence (0008,0121) + * @return reference to sequence element + */ + DRTEquivalentCodeSequence &getEquivalentCodeSequence() + { return EquivalentCodeSequence; } + + /** get EquivalentCodeSequence (0008,0121) + * @return const reference to sequence element + */ + const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const + { return EquivalentCodeSequence; } + + // --- set DICOM attribute values --- + + /** set CodeMeaning (0008,0104) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodeMeaning(const OFString &value, const OFBool check = OFTrue); + + /** set CodeValue (0008,0100) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodeValue(const OFString &value, const OFBool check = OFTrue); + + /** set CodingSchemeDesignator (0008,0102) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodingSchemeDesignator(const OFString &value, const OFBool check = OFTrue); + + /** set CodingSchemeVersion (0008,0103) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupExtensionCreatorUID (0008,010d) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupExtensionFlag (0008,010b) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupExtensionFlag(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupLocalVersion (0008,0107) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupLocalVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupVersion (0008,0106) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextIdentifier (0008,010f) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextIdentifier(const OFString &value, const OFBool check = OFTrue); + + /** set ContextUID (0008,0117) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue); + + /** set LongCodeValue (0008,0119) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UC) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResource (0008,0105) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResourceName (0008,0122) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResourceUID (0008,0118) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue); + + /** set URNCodeValue (0008,0120) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UR) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1 + DcmLongString CodeMeaning; + /// CodeValue (0008,0100) vr=SH, vm=1, type=1C + DcmShortString CodeValue; + /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C + DcmShortString CodingSchemeDesignator; + /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C + DcmShortString CodingSchemeVersion; + /// ContextGroupExtensionCreatorUID (0008,010d) vr=UI, vm=1, type=1C + DcmUniqueIdentifier ContextGroupExtensionCreatorUID; + /// ContextGroupExtensionFlag (0008,010b) vr=CS, vm=1, type=3 + DcmCodeString ContextGroupExtensionFlag; + /// ContextGroupLocalVersion (0008,0107) vr=DT, vm=1, type=1C + DcmDateTime ContextGroupLocalVersion; + /// ContextGroupVersion (0008,0106) vr=DT, vm=1, type=1C + DcmDateTime ContextGroupVersion; + /// ContextIdentifier (0008,010f) vr=CS, vm=1, type=3 + DcmCodeString ContextIdentifier; + /// ContextUID (0008,0117) vr=UI, vm=1, type=3 + DcmUniqueIdentifier ContextUID; + /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3 + DRTEquivalentCodeSequence EquivalentCodeSequence; + /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C + DcmUnlimitedCharacters LongCodeValue; + /// MappingResource (0008,0105) vr=CS, vm=1, type=1C + DcmCodeString MappingResource; + /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3 + DcmLongString MappingResourceName; + /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3 + DcmUniqueIdentifier MappingResourceUID; + /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C + DcmUniversalResourceIdentifierOrLocator URNCodeValue; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTTherapeuticRoleTypeCodeSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTTherapeuticRoleTypeCodeSequence(const DRTTherapeuticRoleTypeCodeSequence ©); + + /** destructor + */ + virtual ~DRTTherapeuticRoleTypeCodeSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTTherapeuticRoleTypeCodeSequence &operator=(const DRTTherapeuticRoleTypeCodeSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drttscds.h b/dcmrt/include/dcmtk/dcmrt/seq/drttscds.h index 4c4e306f..235bd9a9 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drttscds.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drttscds.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTTreatmentSummaryCalculatedDoseReferenceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -269,13 +269,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryCalculatedDoseReferenceSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drttscs.h b/dcmrt/include/dcmtk/dcmrt/seq/drttscs.h new file mode 100644 index 00000000..35b84cd4 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drttscs.h @@ -0,0 +1,545 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTTreatmentSiteCodeSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTTSCS_H +#define DRTTSCS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtecs.h" // for EquivalentCodeSequence + + +/** Interface class for TreatmentSiteCodeSequence (3010,0078) + */ +class DCMTK_DCMRT_EXPORT DRTTreatmentSiteCodeSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get CodeMeaning (0008,0104) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodeMeaning(OFString &value, const signed long pos = 0) const; + + /** get CodeValue (0008,0100) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodeValue(OFString &value, const signed long pos = 0) const; + + /** get CodingSchemeDesignator (0008,0102) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodingSchemeDesignator(OFString &value, const signed long pos = 0) const; + + /** get CodingSchemeVersion (0008,0103) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupExtensionCreatorUID (0008,010d) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupExtensionCreatorUID(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupExtensionFlag (0008,010b) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupExtensionFlag(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupLocalVersion (0008,0107) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupLocalVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupVersion (0008,0106) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextIdentifier (0008,010f) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextIdentifier(OFString &value, const signed long pos = 0) const; + + /** get ContextUID (0008,0117) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextUID(OFString &value, const signed long pos = 0) const; + + /** get LongCodeValue (0008,0119) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const; + + /** get MappingResource (0008,0105) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResource(OFString &value, const signed long pos = 0) const; + + /** get MappingResourceName (0008,0122) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const; + + /** get MappingResourceUID (0008,0118) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const; + + /** get URNCodeValue (0008,0120) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const; + + // --- get DICOM sequence attributes --- + + /** get EquivalentCodeSequence (0008,0121) + * @return reference to sequence element + */ + DRTEquivalentCodeSequence &getEquivalentCodeSequence() + { return EquivalentCodeSequence; } + + /** get EquivalentCodeSequence (0008,0121) + * @return const reference to sequence element + */ + const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const + { return EquivalentCodeSequence; } + + // --- set DICOM attribute values --- + + /** set CodeMeaning (0008,0104) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodeMeaning(const OFString &value, const OFBool check = OFTrue); + + /** set CodeValue (0008,0100) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodeValue(const OFString &value, const OFBool check = OFTrue); + + /** set CodingSchemeDesignator (0008,0102) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodingSchemeDesignator(const OFString &value, const OFBool check = OFTrue); + + /** set CodingSchemeVersion (0008,0103) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupExtensionCreatorUID (0008,010d) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupExtensionFlag (0008,010b) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupExtensionFlag(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupLocalVersion (0008,0107) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupLocalVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupVersion (0008,0106) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextIdentifier (0008,010f) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextIdentifier(const OFString &value, const OFBool check = OFTrue); + + /** set ContextUID (0008,0117) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue); + + /** set LongCodeValue (0008,0119) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UC) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResource (0008,0105) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResourceName (0008,0122) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResourceUID (0008,0118) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue); + + /** set URNCodeValue (0008,0120) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UR) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1 + DcmLongString CodeMeaning; + /// CodeValue (0008,0100) vr=SH, vm=1, type=1C + DcmShortString CodeValue; + /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C + DcmShortString CodingSchemeDesignator; + /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C + DcmShortString CodingSchemeVersion; + /// ContextGroupExtensionCreatorUID (0008,010d) vr=UI, vm=1, type=1C + DcmUniqueIdentifier ContextGroupExtensionCreatorUID; + /// ContextGroupExtensionFlag (0008,010b) vr=CS, vm=1, type=3 + DcmCodeString ContextGroupExtensionFlag; + /// ContextGroupLocalVersion (0008,0107) vr=DT, vm=1, type=1C + DcmDateTime ContextGroupLocalVersion; + /// ContextGroupVersion (0008,0106) vr=DT, vm=1, type=1C + DcmDateTime ContextGroupVersion; + /// ContextIdentifier (0008,010f) vr=CS, vm=1, type=3 + DcmCodeString ContextIdentifier; + /// ContextUID (0008,0117) vr=UI, vm=1, type=3 + DcmUniqueIdentifier ContextUID; + /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3 + DRTEquivalentCodeSequence EquivalentCodeSequence; + /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C + DcmUnlimitedCharacters LongCodeValue; + /// MappingResource (0008,0105) vr=CS, vm=1, type=1C + DcmCodeString MappingResource; + /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3 + DcmLongString MappingResourceName; + /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3 + DcmUniqueIdentifier MappingResourceUID; + /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C + DcmUniversalResourceIdentifierOrLocator URNCodeValue; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTTreatmentSiteCodeSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTTreatmentSiteCodeSequence(const DRTTreatmentSiteCodeSequence ©); + + /** destructor + */ + virtual ~DRTTreatmentSiteCodeSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTTreatmentSiteCodeSequence &operator=(const DRTTreatmentSiteCodeSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drttsibs.h b/dcmrt/include/dcmtk/dcmrt/seq/drttsibs.h index 4c554fcf..1132c219 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drttsibs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drttsibs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTTreatmentSessionIonBeamSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -19,11 +19,13 @@ #include "dcmtk/ofstd/oflist.h" // for standard list class #include "dcmtk/dcmrt/drttypes.h" // module-specific helper class -#include "dcmtk/dcmrt/seq/drtas7.h" // for ApplicatorSequence +#include "dcmtk/dcmrt/seq/drtas4.h" // for ApplicatorSequence #include "dcmtk/dcmrt/seq/drtbldls.h" // for BeamLimitingDeviceLeafPairsSequence #include "dcmtk/dcmrt/seq/drtdddps.h" // for DeliveredDepthDoseParametersSequence -#include "dcmtk/dcmrt/seq/drtgas.h" // for GeneralAccessorySequence +#include "dcmtk/dcmrt/seq/drtgas6.h" // for GeneralAccessorySequence #include "dcmtk/dcmrt/seq/drticpds.h" // for IonControlPointDeliverySequence +#include "dcmtk/dcmrt/seq/drtmttcs.h" // for MachineSpecificTreatmentTerminationCodeSequence +#include "dcmtk/dcmrt/seq/drtttrcs.h" // for RTTreatmentTerminationReasonCodeSequence #include "dcmtk/dcmrt/seq/drtrbls.h" // for RecordedBlockSequence #include "dcmtk/dcmrt/seq/drtrcos.h" // for RecordedCompensatorSequence #include "dcmtk/dcmrt/seq/drtrlsds.h" // for RecordedLateralSpreadingDeviceSequence @@ -31,7 +33,7 @@ #include "dcmtk/dcmrt/seq/drtrrshs.h" // for RecordedRangeShifterSequence #include "dcmtk/dcmrt/seq/drtrsns.h" // for RecordedSnoutSequence #include "dcmtk/dcmrt/seq/drtrws.h" // for RecordedWedgeSequence -#include "dcmtk/dcmrt/seq/drtrbos7.h" // for ReferencedBolusSequence +#include "dcmtk/dcmrt/seq/drtrbos3.h" // for ReferencedBolusSequence #include "dcmtk/dcmrt/seq/drtrcdrs.h" // for ReferencedCalculatedDoseReferenceSequence #include "dcmtk/dcmrt/seq/drtrmdrs.h" // for ReferencedMeasuredDoseReferenceSequence #include "dcmtk/dcmrt/seq/drtrvis.h" // for ReferencedVerificationImageSequence @@ -184,6 +186,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence */ OFCondition getDeliveredTreatmentTime(Float64 &value, const unsigned long pos = 0) const; + /** get EntityLongLabel (3010,0038) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getEntityLongLabel(OFString &value, const signed long pos = 0) const; + /** get FixationEye (300a,0150) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components @@ -485,12 +494,12 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence */ OFCondition getTreatmentDeliveryType(OFString &value, const signed long pos = 0) const; - /** get TreatmentTerminationCode (3008,002b) + /** get TreatmentTerminationDescription (300a,0730) * @param value reference to variable in which the value should be stored * @param pos index of the value to get (0..vm-1), -1 for all components * @return status, EC_Normal if successful, an error code otherwise */ - OFCondition getTreatmentTerminationCode(OFString &value, const signed long pos = 0) const; + OFCondition getTreatmentTerminationDescription(OFString &value, const signed long pos = 0) const; /** get TreatmentTerminationStatus (3008,002a) * @param value reference to variable in which the value should be stored @@ -547,13 +556,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence /** get GeneralAccessorySequence (300a,0420) * @return reference to sequence element */ - DRTGeneralAccessorySequence &getGeneralAccessorySequence() + DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule &getGeneralAccessorySequence() { return GeneralAccessorySequence; } /** get GeneralAccessorySequence (300a,0420) * @return const reference to sequence element */ - const DRTGeneralAccessorySequence &getGeneralAccessorySequence() const + const DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule &getGeneralAccessorySequence() const { return GeneralAccessorySequence; } /** get IonControlPointDeliverySequence (3008,0041) @@ -568,6 +577,30 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence const DRTIonControlPointDeliverySequence &getIonControlPointDeliverySequence() const { return IonControlPointDeliverySequence; } + /** get MachineSpecificTreatmentTerminationCodeSequence (300a,0716) + * @return reference to sequence element + */ + DRTMachineSpecificTreatmentTerminationCodeSequence &getMachineSpecificTreatmentTerminationCodeSequence() + { return MachineSpecificTreatmentTerminationCodeSequence; } + + /** get MachineSpecificTreatmentTerminationCodeSequence (300a,0716) + * @return const reference to sequence element + */ + const DRTMachineSpecificTreatmentTerminationCodeSequence &getMachineSpecificTreatmentTerminationCodeSequence() const + { return MachineSpecificTreatmentTerminationCodeSequence; } + + /** get RTTreatmentTerminationReasonCodeSequence (300a,0715) + * @return reference to sequence element + */ + DRTRTTreatmentTerminationReasonCodeSequence &getRTTreatmentTerminationReasonCodeSequence() + { return RTTreatmentTerminationReasonCodeSequence; } + + /** get RTTreatmentTerminationReasonCodeSequence (300a,0715) + * @return const reference to sequence element + */ + const DRTRTTreatmentTerminationReasonCodeSequence &getRTTreatmentTerminationReasonCodeSequence() const + { return RTTreatmentTerminationReasonCodeSequence; } + /** get RecordedBlockSequence (3008,00d0) * @return reference to sequence element */ @@ -751,6 +784,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence */ OFCondition setDeliveredTreatmentTime(const OFString &value, const OFBool check = OFTrue); + /** set EntityLongLabel (3010,0038) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setEntityLongLabel(const OFString &value, const OFBool check = OFTrue); + /** set FixationEye (300a,0150) * @param value value to be set (single value only) or "" for no value * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled @@ -940,12 +980,12 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence */ OFCondition setTreatmentDeliveryType(const OFString &value, const OFBool check = OFTrue); - /** set TreatmentTerminationCode (3008,002b) + /** set TreatmentTerminationDescription (300a,0730) * @param value value to be set (single value only) or "" for no value - * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @param check check 'value' for conformance with VR (ST) and VM (1) if enabled * @return status, EC_Normal if successful, an error code otherwise */ - OFCondition setTreatmentTerminationCode(const OFString &value, const OFBool check = OFTrue); + OFCondition setTreatmentTerminationDescription(const OFString &value, const OFBool check = OFTrue); /** set TreatmentTerminationStatus (3008,002a) * @param value value to be set (single value only) or "" for no value @@ -986,6 +1026,8 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence DcmDecimalString DeliveredSecondaryMeterset; /// DeliveredTreatmentTime (3008,003b) vr=DS, vm=1, type=3 DcmDecimalString DeliveredTreatmentTime; + /// EntityLongLabel (3010,0038) vr=LO, vm=1, type=3 + DcmLongString EntityLongLabel; /// FixationEye (300a,0150) vr=CS, vm=1, type=3 DcmCodeString FixationEye; /// FixationLightAzimuthalAngle (300a,0356) vr=FL, vm=1, type=3 @@ -993,9 +1035,11 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence /// FixationLightPolarAngle (300a,0358) vr=FL, vm=1, type=3 DcmFloatingPointSingle FixationLightPolarAngle; /// GeneralAccessorySequence (300a,0420) vr=SQ, vm=1, type=3 - DRTGeneralAccessorySequence GeneralAccessorySequence; + DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule GeneralAccessorySequence; /// IonControlPointDeliverySequence (3008,0041) vr=SQ, vm=1, type=1 DRTIonControlPointDeliverySequence IonControlPointDeliverySequence; + /// MachineSpecificTreatmentTerminationCodeSequence (300a,0716) vr=SQ, vm=1, type=3 + DRTMachineSpecificTreatmentTerminationCodeSequence MachineSpecificTreatmentTerminationCodeSequence; /// ModulatedScanModeType (300a,0309) vr=CS, vm=1, type=1C DcmCodeString ModulatedScanModeType; /// NumberOfBlocks (300a,00f0) vr=IS, vm=1, type=1 @@ -1020,6 +1064,8 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence DcmShortString PatientSupportID; /// PatientSupportType (300a,0350) vr=CS, vm=1, type=1 DcmCodeString PatientSupportType; + /// RTTreatmentTerminationReasonCodeSequence (300a,0715) vr=SQ, vm=1, type=3 + DRTRTTreatmentTerminationReasonCodeSequence RTTreatmentTerminationReasonCodeSequence; /// RadiationAtomicNumber (300a,0304) vr=IS, vm=1, type=1C DcmIntegerString RadiationAtomicNumber; /// RadiationChargeState (300a,0306) vr=SS, vm=1, type=1C @@ -1066,8 +1112,8 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence DcmDecimalString SpecifiedTreatmentTime; /// TreatmentDeliveryType (300a,00ce) vr=CS, vm=1, type=2 DcmCodeString TreatmentDeliveryType; - /// TreatmentTerminationCode (3008,002b) vr=SH, vm=1, type=3 - DcmShortString TreatmentTerminationCode; + /// TreatmentTerminationDescription (300a,0730) vr=ST, vm=1, type=3 + DcmShortText TreatmentTerminationDescription; /// TreatmentTerminationStatus (3008,002a) vr=CS, vm=1, type=1 DcmCodeString TreatmentTerminationStatus; /// TreatmentVerificationStatus (3008,002c) vr=CS, vm=1, type=2 @@ -1181,13 +1227,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drttsmds.h b/dcmrt/include/dcmtk/dcmrt/seq/drttsmds.h index 5faaf980..a9444fb8 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drttsmds.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drttsmds.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTTreatmentSummaryMeasuredDoseReferenceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -269,13 +269,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryMeasuredDoseReferenceSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtttrcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtttrcs.h new file mode 100644 index 00000000..db67cd75 --- /dev/null +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtttrcs.h @@ -0,0 +1,545 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Header file for class DRTRTTreatmentTerminationReasonCodeSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#ifndef DRTTTRCS_H +#define DRTTTRCS_H + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/ofstd/oflist.h" // for standard list class +#include "dcmtk/dcmrt/drttypes.h" // module-specific helper class +#include "dcmtk/dcmrt/seq/drtecs.h" // for EquivalentCodeSequence + + +/** Interface class for RTTreatmentTerminationReasonCodeSequence (300a,0715) + */ +class DCMTK_DCMRT_EXPORT DRTRTTreatmentTerminationReasonCodeSequence + : protected DRTTypes +{ + + public: + + /** Item class + */ + class DCMTK_DCMRT_EXPORT Item + : protected DRTTypes + { + + public: + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultItem flag used to mark the empty default item + */ + Item(const OFBool emptyDefaultItem = OFFalse); + + /** copy constructor + * @param copy item object to be copied + */ + Item(const Item ©); + + /** destructor + */ + virtual ~Item(); + + /** assignment operator + * @param copy item object to be copied + * @return reference to this object + */ + Item &operator=(const Item ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if item is empty + * @return OFTrue if item is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if item is valid, i.e.\ not the empty default item + * @return OFTrue if item is valid, OFFalse otherwise + */ + OFBool isValid() const; + + // --- input/output methods --- + + /** read elements from sequence item + * @param item reference to DICOM sequence item from which the elements should be read + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &item); + + /** write elements to sequence item + * @param item reference to DICOM sequence item to which the elements should be written + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &item); + + // --- get DICOM attribute values --- + + /** get CodeMeaning (0008,0104) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodeMeaning(OFString &value, const signed long pos = 0) const; + + /** get CodeValue (0008,0100) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodeValue(OFString &value, const signed long pos = 0) const; + + /** get CodingSchemeDesignator (0008,0102) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodingSchemeDesignator(OFString &value, const signed long pos = 0) const; + + /** get CodingSchemeVersion (0008,0103) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupExtensionCreatorUID (0008,010d) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupExtensionCreatorUID(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupExtensionFlag (0008,010b) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupExtensionFlag(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupLocalVersion (0008,0107) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupLocalVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextGroupVersion (0008,0106) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextGroupVersion(OFString &value, const signed long pos = 0) const; + + /** get ContextIdentifier (0008,010f) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextIdentifier(OFString &value, const signed long pos = 0) const; + + /** get ContextUID (0008,0117) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getContextUID(OFString &value, const signed long pos = 0) const; + + /** get LongCodeValue (0008,0119) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const; + + /** get MappingResource (0008,0105) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResource(OFString &value, const signed long pos = 0) const; + + /** get MappingResourceName (0008,0122) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const; + + /** get MappingResourceUID (0008,0118) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const; + + /** get URNCodeValue (0008,0120) + * @param value reference to variable in which the value should be stored + * @param pos index of the value to get (0..vm-1), -1 for all components + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const; + + // --- get DICOM sequence attributes --- + + /** get EquivalentCodeSequence (0008,0121) + * @return reference to sequence element + */ + DRTEquivalentCodeSequence &getEquivalentCodeSequence() + { return EquivalentCodeSequence; } + + /** get EquivalentCodeSequence (0008,0121) + * @return const reference to sequence element + */ + const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const + { return EquivalentCodeSequence; } + + // --- set DICOM attribute values --- + + /** set CodeMeaning (0008,0104) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodeMeaning(const OFString &value, const OFBool check = OFTrue); + + /** set CodeValue (0008,0100) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodeValue(const OFString &value, const OFBool check = OFTrue); + + /** set CodingSchemeDesignator (0008,0102) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodingSchemeDesignator(const OFString &value, const OFBool check = OFTrue); + + /** set CodingSchemeVersion (0008,0103) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (SH) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupExtensionCreatorUID (0008,010d) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupExtensionFlag (0008,010b) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupExtensionFlag(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupLocalVersion (0008,0107) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupLocalVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextGroupVersion (0008,0106) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (DT) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextGroupVersion(const OFString &value, const OFBool check = OFTrue); + + /** set ContextIdentifier (0008,010f) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextIdentifier(const OFString &value, const OFBool check = OFTrue); + + /** set ContextUID (0008,0117) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue); + + /** set LongCodeValue (0008,0119) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UC) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResource (0008,0105) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (CS) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResourceName (0008,0122) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (LO) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue); + + /** set MappingResourceUID (0008,0118) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UI) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue); + + /** set URNCodeValue (0008,0120) + * @param value value to be set (single value only) or "" for no value + * @param check check 'value' for conformance with VR (UR) and VM (1) if enabled + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue); + + private: + + /// internal flag used to mark the empty default item + /*const*/ OFBool EmptyDefaultItem; + + /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1 + DcmLongString CodeMeaning; + /// CodeValue (0008,0100) vr=SH, vm=1, type=1C + DcmShortString CodeValue; + /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C + DcmShortString CodingSchemeDesignator; + /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C + DcmShortString CodingSchemeVersion; + /// ContextGroupExtensionCreatorUID (0008,010d) vr=UI, vm=1, type=1C + DcmUniqueIdentifier ContextGroupExtensionCreatorUID; + /// ContextGroupExtensionFlag (0008,010b) vr=CS, vm=1, type=3 + DcmCodeString ContextGroupExtensionFlag; + /// ContextGroupLocalVersion (0008,0107) vr=DT, vm=1, type=1C + DcmDateTime ContextGroupLocalVersion; + /// ContextGroupVersion (0008,0106) vr=DT, vm=1, type=1C + DcmDateTime ContextGroupVersion; + /// ContextIdentifier (0008,010f) vr=CS, vm=1, type=3 + DcmCodeString ContextIdentifier; + /// ContextUID (0008,0117) vr=UI, vm=1, type=3 + DcmUniqueIdentifier ContextUID; + /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3 + DRTEquivalentCodeSequence EquivalentCodeSequence; + /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C + DcmUnlimitedCharacters LongCodeValue; + /// MappingResource (0008,0105) vr=CS, vm=1, type=1C + DcmCodeString MappingResource; + /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3 + DcmLongString MappingResourceName; + /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3 + DcmUniqueIdentifier MappingResourceUID; + /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C + DcmUniversalResourceIdentifierOrLocator URNCodeValue; + + }; + + // --- constructors, destructor and operators --- + + /** (default) constructor + * @param emptyDefaultSequence internal flag used to mark the empty default sequence + */ + DRTRTTreatmentTerminationReasonCodeSequence(const OFBool emptyDefaultSequence = OFFalse); + + /** copy constructor + * @param copy sequence object to be copied + */ + DRTRTTreatmentTerminationReasonCodeSequence(const DRTRTTreatmentTerminationReasonCodeSequence ©); + + /** destructor + */ + virtual ~DRTRTTreatmentTerminationReasonCodeSequence(); + + /** assignment operator + * @param copy sequence object to be copied + * @return reference to this object + */ + DRTRTTreatmentTerminationReasonCodeSequence &operator=(const DRTRTTreatmentTerminationReasonCodeSequence ©); + + // --- general methods --- + + /** clear all internal member variables + */ + void clear(); + + /** check if sequence is empty + * @return OFTrue if sequence is empty, OFFalse otherwise + */ + OFBool isEmpty(); + + /** check if sequence is valid, i.e.\ not the empty default sequence + * @return OFTrue if sequence is valid, OFFalse otherwise + */ + OFBool isValid() const; + + /** get number of items in the sequence + * @return number of items + */ + size_t getNumberOfItems() const; + + /** goto first item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoFirstItem(); + + /** goto next item in the sequence + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoNextItem(); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num); + + /** get current item in the sequence + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getCurrentItem(Item *&item) const; + + /** get current item in the sequence + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getCurrentItem(); + + /** get current item in the sequence + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getCurrentItem() const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @param item reference to item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition getItem(const size_t num, Item *&item); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &getItem(const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &getItem(const size_t num) const; + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return reference to specified item if successful, empty default item otherwise + */ + Item &operator[](const size_t num); + + /** get particular item in the sequence + * @param num number of the item to be retrieved (0..num-1) + * @return const reference to specified item if successful, empty default item otherwise + */ + const Item &operator[](const size_t num) const; + + /** create and add new item to the end of this sequence + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition addItem(Item *&item); + + /** create and insert new item into the sequence + * @param pos position where the new item is to be inserted (0..num) + * @param item reference to new item pointer (result variable) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition insertItem(const size_t pos, Item *&item); + + /** remove particular item from the sequence + * @param pos position of the item to be removed (0..num-1) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition removeItem(const size_t pos); + + // --- input/output methods --- + + /** read sequence of items from dataset + * @param dataset reference to DICOM dataset from which the sequence should be read + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "1C", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + /** write sequence of items to dataset + * @param dataset reference to DICOM dataset to which the sequence should be written + * @param card cardinality (valid range for number of items) + * @param type value type (valid value: "1", "2" or something else which is not checked) + * @param moduleName optional module/sequence name to be printed (default: "RT object" if NULL) + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName = NULL); + + protected: + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListIterator(Item *) &iterator); + + /** goto particular item in the sequence + * @param num number of the item to be selected (0..num-1) + * @param iterator list iterator storing the position of the item + * @return status, EC_Normal if successful, an error code otherwise + */ + OFCondition gotoItem(const size_t num, + OFListConstIterator(Item *) &iterator) const; + + private: + + /// internal flag used to mark the empty default sequence + /*const*/ OFBool EmptyDefaultSequence; + + /// list of items in this sequence + OFList SequenceOfItems; + /// currently selected item + OFListIterator(Item *) CurrentItem; + /// empty default item + Item EmptyItem; + +}; + + +#endif diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drttts.h b/dcmrt/include/dcmtk/dcmrt/seq/drttts.h index 8fa8c623..11cfccd7 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drttts.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drttts.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTToleranceTableSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -472,13 +472,13 @@ class DCMTK_DCMRT_EXPORT DRTToleranceTableSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtudis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtudis.h index dcd19203..978de473 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtudis.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtudis.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTUDISequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTUDISequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtvls.h b/dcmrt/include/dcmtk/dcmrt/seq/drtvls.h index 3742254d..e4be7e1e 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtvls.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtvls.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTVOILUTSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -255,13 +255,13 @@ class DCMTK_DCMRT_EXPORT DRTVOILUTSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtwps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtwps.h index f35deabd..9388e80d 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtwps.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtwps.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTWedgePositionSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -246,13 +246,13 @@ class DCMTK_DCMRT_EXPORT DRTWedgePositionSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtwrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtwrs.h index 782509c5..a1ddd5f6 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtwrs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtwrs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTWADORetrievalSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -223,13 +223,13 @@ class DCMTK_DCMRT_EXPORT DRTWADORetrievalSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtwrsrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtwrsrs.h index 0d56b72f..f6af2d3f 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtwrsrs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtwrsrs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTWADORSRetrievalSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -223,13 +223,13 @@ class DCMTK_DCMRT_EXPORT DRTWADORSRetrievalSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtws.h b/dcmrt/include/dcmtk/dcmrt/seq/drtws.h index af72bbf4..ac887f9e 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtws.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtws.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTWedgeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -393,13 +393,13 @@ class DCMTK_DCMRT_EXPORT DRTWedgeSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtxrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtxrs.h index 40df387b..68b5191d 100644 --- a/dcmrt/include/dcmtk/dcmrt/seq/drtxrs.h +++ b/dcmrt/include/dcmtk/dcmrt/seq/drtxrs.h @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class DRTXDSRetrievalSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTXDSRetrievalSequence */ const Item &operator[](const size_t num) const; - /** add new item to the end of this sequence + /** create and add new item to the end of this sequence * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise */ OFCondition addItem(Item *&item); - /** insert new item into the sequence + /** create and insert new item into the sequence * @param pos position where the new item is to be inserted (0..num) * @param item reference to new item pointer (result variable) * @return status, EC_Normal if successful, an error code otherwise diff --git a/dcmrt/libsrc/CMakeLists.txt b/dcmrt/libsrc/CMakeLists.txt index 104b3c79..20972ee0 100644 --- a/dcmrt/libsrc/CMakeLists.txt +++ b/dcmrt/libsrc/CMakeLists.txt @@ -7,24 +7,27 @@ DCMTK_ADD_LIBRARY(dcmrt drtaadcs.cc drtadcs.cc drtads.cc + drtafcs.cc drtafs.cc drtags.cc drtajcs.cc + drtancs.cc + drtarms.cc + drtars.cc drtas1.cc - drtas5.cc - drtas6.cc - drtas7.cc + drtas2.cc + drtas3.cc + drtas4.cc drtass.cc drtbads.cc drtbas.cc drtbcps.cc + drtbl1.cc drtbl2.cc - drtbl5.cc drtbldls.cc drtbldps.cc drtblds1.cc - drtblds5.cc - drtblds6.cc + drtblds2.cc drtbldts.cc drtbrcss.cc drtbrdrs.cc @@ -46,15 +49,22 @@ DCMTK_ADD_LIBRARY(dcmrt drtcpas.cc drtcpis.cc drtcps.cc - drtcs.cc drtcsas.cc + drtcs.cc drtcshs.cc drtcsis.cc drtcsrs.cc drtcss.cc + drtcttcs.cc + drtcvcss.cc + drtcvdas.cc + drtcvis.cc + drtdccs.cc drtdcs.cc + drtdcvs.cc drtdddps.cc drtddps.cc + drtdfss.cc drtdias.cc drtdimcs.cc drtdimrs.cc @@ -64,18 +74,29 @@ DCMTK_ADD_LIBRARY(dcmrt drtds.cc drtdspcs.cc drtdss.cc + drtdtcs.cc drtdvhs.cc drtdvrrs.cc drteas.cc + drteblds.cc + drteblos.cc drtecs.cc + drtecvis.cc + drtecvs.cc drtes.cc + drtfbdds.cc drtfds.cc drtfes.cc drtfgs.cc drtfgss.cc drtfms.cc drtfsss.cc - drtgas.cc + drtgas1.cc + drtgas2.cc + drtgas3.cc + drtgas4.cc + drtgas5.cc + drtgas6.cc drtgmcs.cc drtgms.cc drtgpis.cc @@ -88,6 +109,7 @@ DCMTK_ADD_LIBRARY(dcmrt drticpds.cc drticps.cc drtics.cc + drtidcs.cc drtiis.cc drtimage.cc drtionpl.cc @@ -98,9 +120,9 @@ DCMTK_ADD_LIBRARY(dcmrt drtitts.cc drtiwps.cc drtiws.cc + drtlsds1.cc + drtlsds2.cc drtlsds.cc - drtlsds6.cc - drtlsds7.cc drtmacds.cc drtmas.cc drtmdrs.cc @@ -108,12 +130,19 @@ DCMTK_ADD_LIBRARY(dcmrt drtmps.cc drtmris.cc drtmss.cc + drtmttcs.cc drtmucs.cc + drtnmas.cc drtoas.cc drtois.cc drtopis.cc drtos.cc + drtosirs.cc + drtpasms.cc + drtpass.cc drtpbcs.cc + drtpbdds.cc + drtpbdos.cc drtpcs.cc drtpcxs.cc drtpdecs.cc @@ -121,9 +150,11 @@ DCMTK_ADD_LIBRARY(dcmrt drtpfms.cc drtpics.cc drtplan.cc + drtplos.cc drtporcs.cc drtporis.cc drtppcs.cc + drtpros.cc drtprsis.cc drtpscs.cc drtpsics.cc @@ -132,24 +163,29 @@ DCMTK_ADD_LIBRARY(dcmrt drtpvis.cc drtqds.cc drtras.cc + drtrbas1.cc drtrbas2.cc - drtrbas8.cc + drtrbdgs.cc drtrbls.cc drtrbos1.cc - drtrbos6.cc - drtrbos7.cc + drtrbos2.cc + drtrbos3.cc + drtrbs1.cc drtrbs2.cc - drtrbs4.cc - drtrbs8.cc + drtrbs3.cc + drtrbss.cc drtrcdrs.cc drtrcos.cc drtrcps.cc drtrcs.cc - drtrdros.cc + drtrdais.cc + drtrdcks.cc + drtrdps.cc drtrdrs1.cc - drtrdrs6.cc - drtrdrs8.cc + drtrdrs2.cc + drtrdrs3.cc drtrds.cc + drtrdsis.cc drtrecs.cc drtrfgs.cc drtrfors.cc @@ -159,34 +195,31 @@ DCMTK_ADD_LIBRARY(dcmrt drtrlsds.cc drtrmdrs.cc drtrms.cc - drtrmss6.cc - drtrmss7.cc + drtrmss1.cc + drtrmss2.cc drtrpcs.cc drtrpis.cc drtrppcs.cc drtrpphs.cc + drtrpprs.cc drtrpps.cc drtrppss.cc drtrps.cc drtrris1.cc - drtrris6.cc - drtrris9.cc + drtrris2.cc + drtrris3.cc drtrrms.cc drtrros.cc drtrrpcs.cc drtrrros.cc drtrrs.cc drtrrshs.cc - drtrrtps.cc - drtrrtps3.cc - drtrrtps4.cc - drtrrtps5.cc drtrscs.cc drtrsers.cc drtrses.cc + drtrshs1.cc + drtrshs2.cc drtrshs.cc - drtrshs6.cc - drtrshs7.cc drtrsis.cc drtrsns.cc drtrsos.cc @@ -194,13 +227,19 @@ DCMTK_ADD_LIBRARY(dcmrt drtrss.cc drtrsss.cc drtrsts.cc + drtrtps1.cc + drtrtps2.cc + drtrtps3.cc + drtrtps4.cc + drtrtrs1.cc drtrtrs2.cc - drtrtrs4.cc + drtrvcs.cc drtrvis.cc drtrws.cc drtrwvms.cc drtscris.cc drtscs.cc + drtscvs.cc drtsdcs.cc drtsds.cc drtshds.cc @@ -210,18 +249,23 @@ DCMTK_ADD_LIBRARY(dcmrt drtspccs.cc drtspcs.cc drtspgis.cc + drtsppcs.cc drtsptcs.cc drtss.cc drtssrcs.cc drtssrs.cc drtsss.cc drtstrct.cc - drttms0.cc - drttms9.cc + drttms1.cc + drttms2.cc + drttrccs.cc drttreat.cc + drttrtcs.cc drttscds.cc + drttscs.cc drttsibs.cc drttsmds.cc + drtttrcs.cc drttts.cc drttypes.cc drtudis.cc diff --git a/dcmrt/libsrc/Makefile.dep b/dcmrt/libsrc/Makefile.dep index 1f804dc4..6adf4197 100644 --- a/dcmrt/libsrc/Makefile.dep +++ b/dcmrt/libsrc/Makefile.dep @@ -9,6 +9,10 @@ drmdose.o: drmdose.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofstream.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -23,7 +27,6 @@ drmdose.o: drmdose.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -53,10 +56,7 @@ drmdose.o: drmdose.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -119,16 +119,20 @@ drmdose.o: drmdose.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ + ../include/dcmtk/dcmrt/seq/drtars.h ../include/dcmtk/dcmrt/seq/drtarms.h \ ../include/dcmtk/dcmrt/seq/drtbrs.h \ ../include/dcmtk/dcmrt/seq/drtbrcss.h \ + ../include/dcmtk/dcmrt/seq/drtcttcs.h \ ../include/dcmtk/dcmrt/seq/drtcsis.h \ ../include/dcmtk/dcmrt/seq/drtcsrs.h \ ../include/dcmtk/dcmrt/seq/drtcctus.h \ ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \ + ../include/dcmtk/dcmrt/seq/drtidcs.h \ ../include/dcmtk/dcmrt/seq/drtpics.h \ ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \ ../include/dcmtk/dcmrt/seq/drtois.h \ ../include/dcmtk/dcmrt/seq/drtporcs.h \ + ../include/dcmtk/dcmrt/seq/drtudis.h \ ../include/dcmtk/dcmrt/seq/drtcsas.h \ ../include/dcmtk/dcmrt/seq/drtdvhs.h \ ../include/dcmtk/dcmrt/seq/drtdvrrs.h \ @@ -146,8 +150,9 @@ drmdose.o: drmdose.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtiais.h \ ../include/dcmtk/dcmrt/seq/drtiseis.h \ ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \ - ../include/dcmtk/dcmrt/seq/drtmls.h ../include/dcmtk/dcmrt/seq/drtoas.h \ - ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtopis.h \ + ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \ + ../include/dcmtk/dcmrt/seq/drtnmas.h \ + ../include/dcmtk/dcmrt/seq/drtopis.h \ ../include/dcmtk/dcmrt/seq/drtpbcs.h \ ../include/dcmtk/dcmrt/seq/drtpsics.h \ ../include/dcmtk/dcmrt/seq/drtpscs.h \ @@ -159,19 +164,22 @@ drmdose.o: drmdose.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtrsos.h \ ../include/dcmtk/dcmrt/seq/drtporis.h \ ../include/dcmtk/dcmrt/seq/drtprsis.h \ - ../include/dcmtk/dcmrt/seq/drtpsss.h \ + ../include/dcmtk/dcmrt/seq/drtplos.h \ + ../include/dcmtk/dcmrt/seq/drtpros.h \ + ../include/dcmtk/dcmrt/seq/drtrims.h \ + ../include/dcmtk/dcmrt/seq/drtrsss.h \ + ../include/dcmtk/dcmrt/seq/drttscs.h \ + ../include/dcmtk/dcmrt/seq/drtpass.h \ + ../include/dcmtk/dcmrt/seq/drtpasms.h \ ../include/dcmtk/dcmrt/seq/drtpdecs.h \ ../include/dcmtk/dcmrt/seq/drtdias.h \ ../include/dcmtk/dcmrt/seq/drtpdeds.h \ - ../include/dcmtk/dcmrt/seq/drtpcs.h ../include/dcmtk/dcmrt/seq/drtrcs.h \ - ../include/dcmtk/dcmrt/seq/drtcs.h ../include/dcmtk/dcmrt/seq/drtcis.h \ - ../include/dcmtk/dcmrt/seq/drtrdros.h \ + ../include/dcmtk/dcmrt/seq/drtpcs.h \ ../include/dcmtk/dcmrt/seq/drtrwvms.h \ ../include/dcmtk/dcmrt/seq/drtqds.h \ ../include/dcmtk/dcmrt/seq/drtrppcs.h \ - ../include/dcmtk/dcmrt/seq/drtrfors.h \ - ../include/dcmtk/dcmrt/seq/drtrsts.h \ - ../include/dcmtk/dcmrt/seq/drtrses.h ../include/dcmtk/dcmrt/seq/drtris.h \ + ../include/dcmtk/dcmrt/seq/drtrvcs.h \ + ../include/dcmtk/dcmrt/seq/drtrdps.h ../include/dcmtk/dcmrt/seq/drtris.h \ ../include/dcmtk/dcmrt/seq/drtrpphs.h \ ../include/dcmtk/dcmrt/seq/drtdimrs.h \ ../include/dcmtk/dcmrt/seq/drtdirs.h \ @@ -179,15 +187,15 @@ drmdose.o: drmdose.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \ ../include/dcmtk/dcmrt/seq/drtrps.h \ ../include/dcmtk/dcmrt/seq/drtrppss.h \ - ../include/dcmtk/dcmrt/seq/drtrrtps.h \ + ../include/dcmtk/dcmrt/seq/drtrpprs.h \ + ../include/dcmtk/dcmrt/seq/drtrtps1.h \ ../include/dcmtk/dcmrt/seq/drtrfgs.h \ - ../include/dcmtk/dcmrt/seq/drtrbs2.h \ + ../include/dcmtk/dcmrt/seq/drtrbs1.h \ ../include/dcmtk/dcmrt/seq/drtrcps.h \ - ../include/dcmtk/dcmrt/seq/drtrbas2.h \ + ../include/dcmtk/dcmrt/seq/drtrbas1.h \ ../include/dcmtk/dcmrt/seq/drtrsers.h \ - ../include/dcmtk/dcmrt/seq/drtrsrs.h \ - ../include/dcmtk/dcmrt/seq/drtrsss.h ../include/dcmtk/dcmrt/seq/drtrss.h \ - ../include/dcmtk/dcmrt/seq/drtrtrs2.h \ + ../include/dcmtk/dcmrt/seq/drtrsrs.h ../include/dcmtk/dcmrt/seq/drtrss.h \ + ../include/dcmtk/dcmrt/seq/drtrtrs1.h \ ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \ ../include/dcmtk/dcmrt/seq/drtrrpcs.h \ ../include/dcmtk/dcmrt/seq/drtrpcs.h \ @@ -197,10 +205,10 @@ drmdose.o: drmdose.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtspgis.h \ ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \ ../include/dcmtk/dcmrt/seq/drtssrcs.h \ - ../include/dcmtk/dcmrt/seq/drtssrs.h \ ../include/dcmtk/dcmrt/seq/drtscris.h \ - ../include/dcmtk/dcmrt/seq/drtudis.h \ - ../../ofstd/include/dcmtk/ofstd/ofbmanip.h + ../../ofstd/include/dcmtk/ofstd/ofbmanip.h \ + ../../ofstd/include/dcmtk/ofstd/diag/stringop.def \ + ../../ofstd/include/dcmtk/ofstd/diag/restrict.def drmimage.o: drmimage.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drmimage.h ../include/dcmtk/dcmrt/drtimage.h \ ../include/dcmtk/dcmrt/drttypes.h \ @@ -212,6 +220,10 @@ drmimage.o: drmimage.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofstream.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -226,7 +238,6 @@ drmimage.o: drmimage.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -256,10 +267,7 @@ drmimage.o: drmimage.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -322,27 +330,39 @@ drmimage.o: drmimage.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ + ../include/dcmtk/dcmrt/seq/drtars.h ../include/dcmtk/dcmrt/seq/drtarms.h \ ../include/dcmtk/dcmrt/seq/drtbrs.h \ ../include/dcmtk/dcmrt/seq/drtbrcss.h \ + ../include/dcmtk/dcmrt/seq/drtcttcs.h \ ../include/dcmtk/dcmrt/seq/drtcsis.h \ ../include/dcmtk/dcmrt/seq/drtcsrs.h \ ../include/dcmtk/dcmrt/seq/drtcctus.h \ ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \ + ../include/dcmtk/dcmrt/seq/drtidcs.h \ ../include/dcmtk/dcmrt/seq/drtpics.h \ ../include/dcmtk/dcmrt/seq/drtcgis.h \ ../include/dcmtk/dcmrt/seq/drtcbars.h \ ../include/dcmtk/dcmrt/seq/drtads.h ../include/dcmtk/dcmrt/seq/drtbas.h \ ../include/dcmtk/dcmrt/seq/drtces.h ../include/dcmtk/dcmrt/seq/drtois.h \ ../include/dcmtk/dcmrt/seq/drtporcs.h \ + ../include/dcmtk/dcmrt/seq/drtudis.h \ ../include/dcmtk/dcmrt/seq/drtcsas.h \ ../include/dcmtk/dcmrt/seq/drtdimcs.h \ ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtds.h \ ../include/dcmtk/dcmrt/seq/drtdss.h \ ../include/dcmtk/dcmrt/seq/drtdspcs.h \ - ../include/dcmtk/dcmrt/seq/drteas.h ../include/dcmtk/dcmrt/seq/drtes.h \ - ../include/dcmtk/dcmrt/seq/drtas5.h ../include/dcmtk/dcmrt/seq/drtags.h \ - ../include/dcmtk/dcmrt/seq/drtblds5.h \ - ../include/dcmtk/dcmrt/seq/drtbl5.h ../include/dcmtk/dcmrt/seq/drtgas.h \ + ../include/dcmtk/dcmrt/seq/drteas.h \ + ../include/dcmtk/dcmrt/seq/drteblds.h \ + ../include/dcmtk/dcmrt/seq/drtdtcs.h \ + ../include/dcmtk/dcmrt/seq/drtfbdds.h \ + ../include/dcmtk/dcmrt/seq/drtpbdds.h \ + ../include/dcmtk/dcmrt/seq/drtpbdos.h ../include/dcmtk/dcmrt/seq/drtes.h \ + ../include/dcmtk/dcmrt/seq/drtas2.h ../include/dcmtk/dcmrt/seq/drtags.h \ + ../include/dcmtk/dcmrt/seq/drtblds2.h \ + ../include/dcmtk/dcmrt/seq/drtbl2.h \ + ../include/dcmtk/dcmrt/seq/drteblos.h \ + ../include/dcmtk/dcmrt/seq/drtrbdgs.h \ + ../include/dcmtk/dcmrt/seq/drtgas4.h \ ../include/dcmtk/dcmrt/seq/drtpfms.h ../include/dcmtk/dcmrt/seq/drtfms.h \ ../include/dcmtk/dcmrt/seq/drtfes.h ../include/dcmtk/dcmrt/seq/drtgms.h \ ../include/dcmtk/dcmrt/seq/drtgmcs.h \ @@ -358,7 +378,8 @@ drmimage.o: drmimage.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtmls.h \ ../include/dcmtk/dcmrt/seq/drtmacds.h \ ../include/dcmtk/dcmrt/seq/drtcss.h ../include/dcmtk/dcmrt/seq/drtoas.h \ - ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtopis.h \ + ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtnmas.h \ + ../include/dcmtk/dcmrt/seq/drtopis.h \ ../include/dcmtk/dcmrt/seq/drtpbcs.h \ ../include/dcmtk/dcmrt/seq/drtpsics.h \ ../include/dcmtk/dcmrt/seq/drtpscs.h \ @@ -370,6 +391,8 @@ drmimage.o: drmimage.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtrsos.h \ ../include/dcmtk/dcmrt/seq/drtporis.h \ ../include/dcmtk/dcmrt/seq/drtprsis.h \ + ../include/dcmtk/dcmrt/seq/drtpass.h \ + ../include/dcmtk/dcmrt/seq/drtpasms.h \ ../include/dcmtk/dcmrt/seq/drtpdecs.h \ ../include/dcmtk/dcmrt/seq/drtdias.h \ ../include/dcmtk/dcmrt/seq/drtpdeds.h \ @@ -377,6 +400,8 @@ drmimage.o: drmimage.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtrwvms.h \ ../include/dcmtk/dcmrt/seq/drtqds.h \ ../include/dcmtk/dcmrt/seq/drtrppcs.h \ + ../include/dcmtk/dcmrt/seq/drtrvcs.h \ + ../include/dcmtk/dcmrt/seq/drtrdps.h \ ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \ ../include/dcmtk/dcmrt/seq/drtrpphs.h \ ../include/dcmtk/dcmrt/seq/drtdimrs.h \ @@ -385,7 +410,8 @@ drmimage.o: drmimage.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \ ../include/dcmtk/dcmrt/seq/drtrps.h \ ../include/dcmtk/dcmrt/seq/drtrppss.h \ - ../include/dcmtk/dcmrt/seq/drtrrtps5.h \ + ../include/dcmtk/dcmrt/seq/drtrpprs.h \ + ../include/dcmtk/dcmrt/seq/drtrtps4.h \ ../include/dcmtk/dcmrt/seq/drtrsers.h \ ../include/dcmtk/dcmrt/seq/drtrss.h ../include/dcmtk/dcmrt/seq/drtrpis.h \ ../include/dcmtk/dcmrt/seq/drtras.h \ @@ -399,7 +425,7 @@ drmimage.o: drmimage.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \ ../include/dcmtk/dcmrt/seq/drtssrcs.h \ ../include/dcmtk/dcmrt/seq/drtscris.h \ - ../include/dcmtk/dcmrt/seq/drtudis.h ../include/dcmtk/dcmrt/seq/drtvls.h \ + ../include/dcmtk/dcmrt/seq/drtvls.h \ ../../dcmimgle/include/dcmtk/dcmimgle/dcmimage.h \ ../../dcmimgle/include/dcmtk/dcmimgle/dimoimg.h \ ../../dcmimgle/include/dcmtk/dcmimgle/diimage.h \ @@ -428,6 +454,10 @@ drmplan.o: drmplan.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofstream.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -442,7 +472,6 @@ drmplan.o: drmplan.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -472,10 +501,7 @@ drmplan.o: drmplan.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -542,21 +568,33 @@ drmplan.o: drmplan.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtchs.h ../include/dcmtk/dcmrt/seq/drtbcps.h \ ../include/dcmtk/dcmrt/seq/drtbrdrs.h \ ../include/dcmtk/dcmrt/seq/drtcshs.h \ - ../include/dcmtk/dcmrt/seq/drtrris9.h ../include/dcmtk/dcmrt/seq/drtbs.h \ + ../include/dcmtk/dcmrt/seq/drtrris3.h ../include/dcmtk/dcmrt/seq/drtbs.h \ ../include/dcmtk/dcmrt/seq/drtas1.h ../include/dcmtk/dcmrt/seq/drtags.h \ ../include/dcmtk/dcmrt/seq/drtblds1.h \ - ../include/dcmtk/dcmrt/seq/drtbl2.h ../include/dcmtk/dcmrt/seq/drtcos.h \ + ../include/dcmtk/dcmrt/seq/drtbl1.h ../include/dcmtk/dcmrt/seq/drtcos.h \ ../include/dcmtk/dcmrt/seq/drtcps.h \ ../include/dcmtk/dcmrt/seq/drtbldps.h \ + ../include/dcmtk/dcmrt/seq/drteblos.h \ + ../include/dcmtk/dcmrt/seq/drtrbdgs.h \ ../include/dcmtk/dcmrt/seq/drtrdrs1.h \ ../include/dcmtk/dcmrt/seq/drtbvcps.h \ ../include/dcmtk/dcmrt/seq/drtrds.h ../include/dcmtk/dcmrt/seq/drtwps.h \ - ../include/dcmtk/dcmrt/seq/drtgas.h ../include/dcmtk/dcmrt/seq/drtpvis.h \ + ../include/dcmtk/dcmrt/seq/drtdfss.h \ + ../include/dcmtk/dcmrt/seq/drteblds.h \ + ../include/dcmtk/dcmrt/seq/drtdtcs.h \ + ../include/dcmtk/dcmrt/seq/drtfbdds.h \ + ../include/dcmtk/dcmrt/seq/drtpbdds.h \ + ../include/dcmtk/dcmrt/seq/drtpbdos.h \ + ../include/dcmtk/dcmrt/seq/drtudis.h \ + ../include/dcmtk/dcmrt/seq/drtgas2.h \ + ../include/dcmtk/dcmrt/seq/drtidcs.h \ + ../include/dcmtk/dcmrt/seq/drtpvis.h \ ../include/dcmtk/dcmrt/seq/drtpfms.h \ ../include/dcmtk/dcmrt/seq/drtrbos1.h \ ../include/dcmtk/dcmrt/seq/drtrris1.h ../include/dcmtk/dcmrt/seq/drtws.h \ ../include/dcmtk/dcmrt/seq/drtbrs.h \ ../include/dcmtk/dcmrt/seq/drtbrcss.h \ + ../include/dcmtk/dcmrt/seq/drtcttcs.h \ ../include/dcmtk/dcmrt/seq/drtcsis.h \ ../include/dcmtk/dcmrt/seq/drtcsrs.h \ ../include/dcmtk/dcmrt/seq/drtcctus.h \ @@ -570,9 +608,14 @@ drmplan.o: drmplan.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \ ../include/dcmtk/dcmrt/seq/drtdspcs.h \ ../include/dcmtk/dcmrt/seq/drtdrs.h ../include/dcmtk/dcmrt/seq/drteas.h \ - ../include/dcmtk/dcmrt/seq/drtfgs.h ../include/dcmtk/dcmrt/seq/drtrbs8.h \ - ../include/dcmtk/dcmrt/seq/drtrbas8.h \ - ../include/dcmtk/dcmrt/seq/drtrdrs8.h \ + ../include/dcmtk/dcmrt/seq/drtfgs.h ../include/dcmtk/dcmrt/seq/drtrbs3.h \ + ../include/dcmtk/dcmrt/seq/drtdccs.h \ + ../include/dcmtk/dcmrt/seq/drtrdcks.h \ + ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtcncs.h \ + ../include/dcmtk/dcmrt/seq/drtmucs.h \ + ../include/dcmtk/dcmrt/seq/drtrsos.h \ + ../include/dcmtk/dcmrt/seq/drtrbas2.h \ + ../include/dcmtk/dcmrt/seq/drtrdrs3.h \ ../include/dcmtk/dcmrt/seq/drtgms.h ../include/dcmtk/dcmrt/seq/drtgmcs.h \ ../include/dcmtk/dcmrt/seq/drtgpis.h \ ../include/dcmtk/dcmrt/seq/drtipiqs.h \ @@ -584,6 +627,7 @@ drmplan.o: drmplan.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtiseis.h \ ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \ ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \ + ../include/dcmtk/dcmrt/seq/drtnmas.h \ ../include/dcmtk/dcmrt/seq/drtopis.h \ ../include/dcmtk/dcmrt/seq/drtpbcs.h ../include/dcmtk/dcmrt/seq/drtpss.h \ ../include/dcmtk/dcmrt/seq/drtfds.h ../include/dcmtk/dcmrt/seq/drtmss.h \ @@ -592,11 +636,8 @@ drmplan.o: drmplan.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtpsics.h \ ../include/dcmtk/dcmrt/seq/drtpscs.h \ ../include/dcmtk/dcmrt/seq/drtppcs.h \ - ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \ - ../include/dcmtk/dcmrt/seq/drtcncs.h \ + ../include/dcmtk/dcmrt/seq/drtpcxs.h \ ../include/dcmtk/dcmrt/seq/drtcims.h \ - ../include/dcmtk/dcmrt/seq/drtmucs.h \ - ../include/dcmtk/dcmrt/seq/drtrsos.h \ ../include/dcmtk/dcmrt/seq/drtporis.h \ ../include/dcmtk/dcmrt/seq/drtprsis.h \ ../include/dcmtk/dcmrt/seq/drtpdecs.h \ @@ -604,6 +645,8 @@ drmplan.o: drmplan.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtpdeds.h \ ../include/dcmtk/dcmrt/seq/drtpcs.h \ ../include/dcmtk/dcmrt/seq/drtrppcs.h \ + ../include/dcmtk/dcmrt/seq/drtrvcs.h \ + ../include/dcmtk/dcmrt/seq/drtrdps.h \ ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \ ../include/dcmtk/dcmrt/seq/drtrpphs.h \ ../include/dcmtk/dcmrt/seq/drtdimrs.h \ @@ -612,7 +655,8 @@ drmplan.o: drmplan.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \ ../include/dcmtk/dcmrt/seq/drtrps.h \ ../include/dcmtk/dcmrt/seq/drtrppss.h \ - ../include/dcmtk/dcmrt/seq/drtrrtps3.h \ + ../include/dcmtk/dcmrt/seq/drtrpprs.h \ + ../include/dcmtk/dcmrt/seq/drtrtps2.h \ ../include/dcmtk/dcmrt/seq/drtrsers.h \ ../include/dcmtk/dcmrt/seq/drtrsss.h ../include/dcmtk/dcmrt/seq/drtrss.h \ ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \ @@ -628,8 +672,8 @@ drmplan.o: drmplan.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtscris.h \ ../include/dcmtk/dcmrt/seq/drttts.h \ ../include/dcmtk/dcmrt/seq/drtbldts.h \ - ../include/dcmtk/dcmrt/seq/drttms9.h \ - ../include/dcmtk/dcmrt/seq/drtudis.h ../include/dcmtk/dcmrt/drmsrch.h + ../include/dcmtk/dcmrt/seq/drttms1.h \ + ../include/dcmtk/dcmrt/seq/drttscs.h ../include/dcmtk/dcmrt/drmsrch.h drmstrct.o: drmstrct.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drmstrct.h ../include/dcmtk/dcmrt/drtstrct.h \ ../include/dcmtk/dcmrt/drttypes.h \ @@ -641,6 +685,10 @@ drmstrct.o: drmstrct.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofstream.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -655,7 +703,6 @@ drmstrct.o: drmstrct.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -685,10 +732,7 @@ drmstrct.o: drmstrct.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -753,14 +797,17 @@ drmstrct.o: drmstrct.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ ../include/dcmtk/dcmrt/seq/drtbrs.h \ ../include/dcmtk/dcmrt/seq/drtbrcss.h \ + ../include/dcmtk/dcmrt/seq/drtcttcs.h \ ../include/dcmtk/dcmrt/seq/drtcsis.h \ ../include/dcmtk/dcmrt/seq/drtcsrs.h \ ../include/dcmtk/dcmrt/seq/drtcctus.h \ ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \ + ../include/dcmtk/dcmrt/seq/drtidcs.h \ ../include/dcmtk/dcmrt/seq/drtpics.h \ ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \ ../include/dcmtk/dcmrt/seq/drtois.h \ ../include/dcmtk/dcmrt/seq/drtporcs.h \ + ../include/dcmtk/dcmrt/seq/drtudis.h \ ../include/dcmtk/dcmrt/seq/drtcsas.h \ ../include/dcmtk/dcmrt/seq/drtdimcs.h \ ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \ @@ -777,6 +824,7 @@ drmstrct.o: drmstrct.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtiseis.h \ ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \ ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \ + ../include/dcmtk/dcmrt/seq/drtnmas.h \ ../include/dcmtk/dcmrt/seq/drtopis.h \ ../include/dcmtk/dcmrt/seq/drtpbcs.h \ ../include/dcmtk/dcmrt/seq/drtpsics.h \ @@ -795,7 +843,11 @@ drmstrct.o: drmstrct.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtpdeds.h \ ../include/dcmtk/dcmrt/seq/drtpcs.h ../include/dcmtk/dcmrt/seq/drtrcs.h \ ../include/dcmtk/dcmrt/seq/drtcs.h ../include/dcmtk/dcmrt/seq/drtcis.h \ - ../include/dcmtk/dcmrt/seq/drtrros.h \ + ../include/dcmtk/dcmrt/seq/drtsppcs.h \ + ../include/dcmtk/dcmrt/seq/drtrros.h ../include/dcmtk/dcmrt/seq/drtars.h \ + ../include/dcmtk/dcmrt/seq/drtarms.h \ + ../include/dcmtk/dcmrt/seq/drtpass.h \ + ../include/dcmtk/dcmrt/seq/drtpasms.h \ ../include/dcmtk/dcmrt/seq/drtrpps.h \ ../include/dcmtk/dcmrt/seq/drtrecs.h \ ../include/dcmtk/dcmrt/seq/drtrics.h \ @@ -803,7 +855,11 @@ drmstrct.o: drmstrct.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtrrs.h \ ../include/dcmtk/dcmrt/seq/drtrrros.h \ ../include/dcmtk/dcmrt/seq/drtspccs.h \ + ../include/dcmtk/dcmrt/seq/drttrccs.h \ + ../include/dcmtk/dcmrt/seq/drttrtcs.h \ ../include/dcmtk/dcmrt/seq/drtrppcs.h \ + ../include/dcmtk/dcmrt/seq/drtrvcs.h \ + ../include/dcmtk/dcmrt/seq/drtrdps.h \ ../include/dcmtk/dcmrt/seq/drtrfors.h \ ../include/dcmtk/dcmrt/seq/drtrsts.h \ ../include/dcmtk/dcmrt/seq/drtrses.h \ @@ -815,6 +871,7 @@ drmstrct.o: drmstrct.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \ ../include/dcmtk/dcmrt/seq/drtrps.h \ ../include/dcmtk/dcmrt/seq/drtrppss.h \ + ../include/dcmtk/dcmrt/seq/drtrpprs.h \ ../include/dcmtk/dcmrt/seq/drtrsers.h \ ../include/dcmtk/dcmrt/seq/drtrss.h ../include/dcmtk/dcmrt/seq/drtrpis.h \ ../include/dcmtk/dcmrt/seq/drtras.h \ @@ -828,8 +885,20 @@ drmstrct.o: drmstrct.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \ ../include/dcmtk/dcmrt/seq/drtssrcs.h \ ../include/dcmtk/dcmrt/seq/drtssrs.h \ - ../include/dcmtk/dcmrt/seq/drtscris.h \ - ../include/dcmtk/dcmrt/seq/drtudis.h ../include/dcmtk/dcmrt/drmsrch.h + ../include/dcmtk/dcmrt/seq/drtcvis.h \ + ../include/dcmtk/dcmrt/seq/drtdcvs.h \ + ../include/dcmtk/dcmrt/seq/drtcvdas.h \ + ../include/dcmtk/dcmrt/seq/drtafcs.h \ + ../include/dcmtk/dcmrt/seq/drtancs.h \ + ../include/dcmtk/dcmrt/seq/drtscvs.h \ + ../include/dcmtk/dcmrt/seq/drtcvcss.h \ + ../include/dcmtk/dcmrt/seq/drtrdsis.h \ + ../include/dcmtk/dcmrt/seq/drtecvs.h \ + ../include/dcmtk/dcmrt/seq/drtecvis.h \ + ../include/dcmtk/dcmrt/seq/drtosirs.h \ + ../include/dcmtk/dcmrt/seq/drtdfss.h \ + ../include/dcmtk/dcmrt/seq/drtrdais.h \ + ../include/dcmtk/dcmrt/seq/drtscris.h ../include/dcmtk/dcmrt/drmsrch.h drtaadcs.o: drtaadcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtaadcs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ @@ -842,6 +911,10 @@ drtaadcs.o: drtaadcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -856,7 +929,6 @@ drtaadcs.o: drtaadcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -885,10 +957,7 @@ drtaadcs.o: drtaadcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -963,6 +1032,10 @@ drtadcs.o: drtadcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -977,7 +1050,6 @@ drtadcs.o: drtadcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -1006,10 +1078,7 @@ drtadcs.o: drtadcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -1084,6 +1153,10 @@ drtads.o: drtads.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -1098,7 +1171,6 @@ drtads.o: drtads.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -1127,10 +1199,7 @@ drtads.o: drtads.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -1193,8 +1262,8 @@ drtads.o: drtads.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ ../include/dcmtk/dcmrt/seq/drtecs.h -drtafs.o: drtafs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtafs.h \ +drtafcs.o: drtafcs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtafcs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -1205,6 +1274,10 @@ drtafs.o: drtafs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -1219,7 +1292,6 @@ drtafs.o: drtafs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -1248,10 +1320,7 @@ drtafs.o: drtafs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -1312,9 +1381,10 @@ drtafs.o: drtafs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtags.o: drtags.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtags.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtafs.o: drtafs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtafs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -1325,6 +1395,10 @@ drtags.o: drtags.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -1339,7 +1413,6 @@ drtags.o: drtags.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -1368,10 +1441,7 @@ drtags.o: drtags.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -1433,8 +1503,8 @@ drtags.o: drtags.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtajcs.o: drtajcs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtajcs.h \ +drtags.o: drtags.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtags.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -1445,6 +1515,10 @@ drtajcs.o: drtajcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -1459,7 +1533,6 @@ drtajcs.o: drtajcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -1488,10 +1561,7 @@ drtajcs.o: drtajcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -1552,10 +1622,9 @@ drtajcs.o: drtajcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h -drtas1.o: drtas1.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtas1.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtajcs.o: drtajcs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtajcs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -1566,6 +1635,10 @@ drtas1.o: drtas1.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -1580,7 +1653,6 @@ drtas1.o: drtas1.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -1609,10 +1681,7 @@ drtas1.o: drtas1.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -1674,9 +1743,9 @@ drtas1.o: drtas1.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtags.h -drtas5.o: drtas5.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtas5.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtancs.o: drtancs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtancs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -1687,6 +1756,10 @@ drtas5.o: drtas5.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -1701,7 +1774,6 @@ drtas5.o: drtas5.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -1730,10 +1802,7 @@ drtas5.o: drtas5.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -1795,9 +1864,9 @@ drtas5.o: drtas5.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtags.h -drtas6.o: drtas6.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtas6.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtarms.o: drtarms.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtarms.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -1808,6 +1877,10 @@ drtas6.o: drtas6.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -1822,7 +1895,6 @@ drtas6.o: drtas6.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -1851,10 +1923,7 @@ drtas6.o: drtas6.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -1915,9 +1984,10 @@ drtas6.o: drtas6.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtas7.o: drtas7.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtas7.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtars.o: drtars.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtars.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -1928,6 +1998,10 @@ drtas7.o: drtas7.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -1942,7 +2016,6 @@ drtas7.o: drtas7.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -1971,10 +2044,7 @@ drtas7.o: drtas7.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -2035,9 +2105,10 @@ drtas7.o: drtas7.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtass.o: drtass.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtass.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtarms.h ../include/dcmtk/dcmrt/seq/drtecs.h +drtas1.o: drtas1.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtas1.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -2048,6 +2119,10 @@ drtass.o: drtass.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -2062,7 +2137,6 @@ drtass.o: drtass.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -2091,10 +2165,7 @@ drtass.o: drtass.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -2156,13 +2227,9 @@ drtass.o: drtass.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtbads.h ../include/dcmtk/dcmrt/seq/drtchs.h \ - ../include/dcmtk/dcmrt/seq/drtbcps.h \ - ../include/dcmtk/dcmrt/seq/drtbrdrs.h \ - ../include/dcmtk/dcmrt/seq/drtcshs.h \ - ../include/dcmtk/dcmrt/seq/drtrris9.h -drtbads.o: drtbads.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtbads.h \ + ../include/dcmtk/dcmrt/seq/drtags.h +drtas2.o: drtas2.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtas2.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -2173,6 +2240,10 @@ drtbads.o: drtbads.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -2187,7 +2258,6 @@ drtbads.o: drtbads.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -2216,10 +2286,7 @@ drtbads.o: drtbads.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -2280,9 +2347,10 @@ drtbads.o: drtbads.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtbas.o: drtbas.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtbas.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtags.h +drtas3.o: drtas3.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtas3.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -2293,6 +2361,10 @@ drtbas.o: drtbas.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -2307,7 +2379,6 @@ drtbas.o: drtbas.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -2336,10 +2407,7 @@ drtbas.o: drtbas.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -2400,10 +2468,9 @@ drtbas.o: drtbas.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h -drtbcps.o: drtbcps.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtbcps.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtas4.o: drtas4.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtas4.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -2414,6 +2481,10 @@ drtbcps.o: drtbcps.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -2428,7 +2499,6 @@ drtbcps.o: drtbcps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -2457,10 +2527,7 @@ drtbcps.o: drtbcps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -2521,10 +2588,9 @@ drtbcps.o: drtbcps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtbrdrs.h -drtbl2.o: drtbl2.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtbl2.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtass.o: drtass.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtass.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -2535,6 +2601,10 @@ drtbl2.o: drtbl2.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -2549,7 +2619,6 @@ drtbl2.o: drtbl2.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -2578,10 +2647,7 @@ drtbl2.o: drtbl2.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -2642,9 +2708,14 @@ drtbl2.o: drtbl2.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtbl5.o: drtbl5.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtbl5.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtbads.h ../include/dcmtk/dcmrt/seq/drtchs.h \ + ../include/dcmtk/dcmrt/seq/drtbcps.h \ + ../include/dcmtk/dcmrt/seq/drtbrdrs.h \ + ../include/dcmtk/dcmrt/seq/drtcshs.h \ + ../include/dcmtk/dcmrt/seq/drtrris3.h +drtbads.o: drtbads.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtbads.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -2655,6 +2726,10 @@ drtbl5.o: drtbl5.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -2669,7 +2744,6 @@ drtbl5.o: drtbl5.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -2698,10 +2772,7 @@ drtbl5.o: drtbl5.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -2763,8 +2834,8 @@ drtbl5.o: drtbl5.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtbldls.o: drtbldls.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtbldls.h \ +drtbas.o: drtbas.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtbas.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -2775,6 +2846,10 @@ drtbldls.o: drtbldls.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -2789,7 +2864,6 @@ drtbldls.o: drtbldls.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -2818,10 +2892,7 @@ drtbldls.o: drtbldls.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -2882,9 +2953,10 @@ drtbldls.o: drtbldls.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtbldps.o: drtbldps.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtbldps.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtbcps.o: drtbcps.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtbcps.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -2895,6 +2967,10 @@ drtbldps.o: drtbldps.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -2909,7 +2985,6 @@ drtbldps.o: drtbldps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -2938,10 +3013,7 @@ drtbldps.o: drtbldps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -3002,9 +3074,10 @@ drtbldps.o: drtbldps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtblds1.o: drtblds1.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtblds1.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtbrdrs.h +drtbl1.o: drtbl1.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtbl1.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -3015,6 +3088,10 @@ drtblds1.o: drtblds1.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -3029,7 +3106,6 @@ drtblds1.o: drtblds1.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -3058,10 +3134,7 @@ drtblds1.o: drtblds1.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -3123,8 +3196,8 @@ drtblds1.o: drtblds1.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtblds5.o: drtblds5.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtblds5.h \ +drtbl2.o: drtbl2.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtbl2.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -3135,6 +3208,10 @@ drtblds5.o: drtblds5.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -3149,7 +3226,6 @@ drtblds5.o: drtblds5.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -3178,10 +3254,7 @@ drtblds5.o: drtblds5.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -3243,8 +3316,8 @@ drtblds5.o: drtblds5.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtblds6.o: drtblds6.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtblds6.h \ +drtbldls.o: drtbldls.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtbldls.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -3255,6 +3328,10 @@ drtblds6.o: drtblds6.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -3269,7 +3346,6 @@ drtblds6.o: drtblds6.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -3298,10 +3374,7 @@ drtblds6.o: drtblds6.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -3363,8 +3436,8 @@ drtblds6.o: drtblds6.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtbldts.o: drtbldts.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtbldts.h \ +drtbldps.o: drtbldps.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtbldps.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -3375,6 +3448,10 @@ drtbldts.o: drtbldts.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -3389,7 +3466,6 @@ drtbldts.o: drtbldts.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -3418,10 +3494,7 @@ drtbldts.o: drtbldts.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -3483,8 +3556,8 @@ drtbldts.o: drtbldts.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtbrcss.o: drtbrcss.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtbrcss.h \ +drtblds1.o: drtblds1.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtblds1.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -3495,6 +3568,10 @@ drtbrcss.o: drtbrcss.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -3509,7 +3586,6 @@ drtbrcss.o: drtbrcss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -3538,10 +3614,7 @@ drtbrcss.o: drtbrcss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -3602,10 +3675,9 @@ drtbrcss.o: drtbrcss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h -drtbrdrs.o: drtbrdrs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtbrdrs.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtblds2.o: drtblds2.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtblds2.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -3616,6 +3688,10 @@ drtbrdrs.o: drtbrdrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -3630,7 +3706,6 @@ drtbrdrs.o: drtbrdrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -3659,10 +3734,7 @@ drtbrdrs.o: drtbrdrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -3724,8 +3796,8 @@ drtbrdrs.o: drtbrdrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtbrs.o: drtbrs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtbrs.h \ +drtbldts.o: drtbldts.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtbldts.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -3736,6 +3808,10 @@ drtbrs.o: drtbrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -3750,7 +3826,6 @@ drtbrs.o: drtbrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -3779,10 +3854,7 @@ drtbrs.o: drtbrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -3843,11 +3915,9 @@ drtbrs.o: drtbrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtbrcss.o: drtbrcss.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtbrcss.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h -drtbs.o: drtbs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtbs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -3858,6 +3928,10 @@ drtbs.o: drtbs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -3872,7 +3946,6 @@ drtbs.o: drtbs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -3901,10 +3974,7 @@ drtbs.o: drtbs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -3966,20 +4036,9 @@ drtbs.o: drtbs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtas1.h ../include/dcmtk/dcmrt/seq/drtags.h \ - ../include/dcmtk/dcmrt/seq/drtblds1.h \ - ../include/dcmtk/dcmrt/seq/drtbl2.h ../include/dcmtk/dcmrt/seq/drtcos.h \ - ../include/dcmtk/dcmrt/seq/drtcps.h \ - ../include/dcmtk/dcmrt/seq/drtbldps.h \ - ../include/dcmtk/dcmrt/seq/drtrdrs1.h \ - ../include/dcmtk/dcmrt/seq/drtbvcps.h \ - ../include/dcmtk/dcmrt/seq/drtrds.h ../include/dcmtk/dcmrt/seq/drtwps.h \ - ../include/dcmtk/dcmrt/seq/drtgas.h ../include/dcmtk/dcmrt/seq/drtpvis.h \ - ../include/dcmtk/dcmrt/seq/drtpfms.h \ - ../include/dcmtk/dcmrt/seq/drtrbos1.h \ - ../include/dcmtk/dcmrt/seq/drtrris1.h ../include/dcmtk/dcmrt/seq/drtws.h -drtbss.o: drtbss.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtbss.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtbrdrs.o: drtbrdrs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtbrdrs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -3990,6 +4049,10 @@ drtbss.o: drtbss.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -4004,7 +4067,6 @@ drtbss.o: drtbss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -4033,10 +4095,7 @@ drtbss.o: drtbss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -4098,8 +4157,8 @@ drtbss.o: drtbss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtbvcps.o: drtbvcps.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtbvcps.h \ +drtbrs.o: drtbrs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtbrs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -4110,6 +4169,10 @@ drtbvcps.o: drtbvcps.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -4124,7 +4187,6 @@ drtbvcps.o: drtbvcps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -4153,10 +4215,7 @@ drtbvcps.o: drtbvcps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -4217,9 +4276,11 @@ drtbvcps.o: drtbvcps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtcbars.o: drtcbars.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtcbars.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtbrcss.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtbs.o: drtbs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtbs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -4230,6 +4291,10 @@ drtcbars.o: drtcbars.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -4244,7 +4309,6 @@ drtcbars.o: drtcbars.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -4273,10 +4337,7 @@ drtcbars.o: drtcbars.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -4338,9 +4399,31 @@ drtcbars.o: drtcbars.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtads.h ../include/dcmtk/dcmrt/seq/drtecs.h -drtccs.o: drtccs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtccs.h \ + ../include/dcmtk/dcmrt/seq/drtas1.h ../include/dcmtk/dcmrt/seq/drtags.h \ + ../include/dcmtk/dcmrt/seq/drtblds1.h \ + ../include/dcmtk/dcmrt/seq/drtbl1.h ../include/dcmtk/dcmrt/seq/drtcos.h \ + ../include/dcmtk/dcmrt/seq/drtcps.h \ + ../include/dcmtk/dcmrt/seq/drtbldps.h \ + ../include/dcmtk/dcmrt/seq/drteblos.h \ + ../include/dcmtk/dcmrt/seq/drtrbdgs.h \ + ../include/dcmtk/dcmrt/seq/drtrdrs1.h \ + ../include/dcmtk/dcmrt/seq/drtbvcps.h \ + ../include/dcmtk/dcmrt/seq/drtrds.h ../include/dcmtk/dcmrt/seq/drtwps.h \ + ../include/dcmtk/dcmrt/seq/drtdfss.h \ + ../include/dcmtk/dcmrt/seq/drteblds.h \ + ../include/dcmtk/dcmrt/seq/drtdtcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ + ../include/dcmtk/dcmrt/seq/drtfbdds.h \ + ../include/dcmtk/dcmrt/seq/drtpbdds.h \ + ../include/dcmtk/dcmrt/seq/drtpbdos.h \ + ../include/dcmtk/dcmrt/seq/drtudis.h \ + ../include/dcmtk/dcmrt/seq/drtgas2.h \ + ../include/dcmtk/dcmrt/seq/drtidcs.h \ + ../include/dcmtk/dcmrt/seq/drtpvis.h \ + ../include/dcmtk/dcmrt/seq/drtpfms.h \ + ../include/dcmtk/dcmrt/seq/drtrbos1.h \ + ../include/dcmtk/dcmrt/seq/drtrris1.h ../include/dcmtk/dcmrt/seq/drtws.h +drtbss.o: drtbss.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtbss.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -4351,6 +4434,10 @@ drtccs.o: drtccs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -4365,7 +4452,6 @@ drtccs.o: drtccs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -4394,10 +4480,7 @@ drtccs.o: drtccs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -4458,10 +4541,9 @@ drtccs.o: drtccs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h -drtcctus.o: drtcctus.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtcctus.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtbvcps.o: drtbvcps.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtbvcps.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -4472,6 +4554,10 @@ drtcctus.o: drtcctus.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -4486,7 +4572,6 @@ drtcctus.o: drtcctus.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -4515,10 +4600,7 @@ drtcctus.o: drtcctus.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -4580,8 +4662,8 @@ drtcctus.o: drtcctus.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtcdrs.o: drtcdrs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtcdrs.h \ +drtcbars.o: drtcbars.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtcbars.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -4592,6 +4674,10 @@ drtcdrs.o: drtcdrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -4606,7 +4692,6 @@ drtcdrs.o: drtcdrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -4635,10 +4720,7 @@ drtcdrs.o: drtcdrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -4699,9 +4781,10 @@ drtcdrs.o: drtcdrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtces.o: drtces.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtces.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtads.h ../include/dcmtk/dcmrt/seq/drtecs.h +drtccs.o: drtccs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtccs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -4712,6 +4795,10 @@ drtces.o: drtces.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -4726,7 +4813,6 @@ drtces.o: drtces.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -4755,10 +4841,7 @@ drtces.o: drtces.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -4820,11 +4903,9 @@ drtces.o: drtces.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtois.h ../include/dcmtk/dcmrt/seq/drtics.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtpics.h \ - ../include/dcmtk/dcmrt/seq/drtporcs.h -drtcgis.o: drtcgis.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtcgis.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtcctus.o: drtcctus.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtcctus.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -4835,6 +4916,10 @@ drtcgis.o: drtcgis.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -4849,7 +4934,6 @@ drtcgis.o: drtcgis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -4878,10 +4962,7 @@ drtcgis.o: drtcgis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -4943,8 +5024,8 @@ drtcgis.o: drtcgis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtchs.o: drtchs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtchs.h \ +drtcdrs.o: drtcdrs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtcdrs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -4955,6 +5036,10 @@ drtchs.o: drtchs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -4969,7 +5054,6 @@ drtchs.o: drtchs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -4998,10 +5082,7 @@ drtchs.o: drtchs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -5062,12 +5143,9 @@ drtchs.o: drtchs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtbcps.h \ - ../include/dcmtk/dcmrt/seq/drtbrdrs.h \ - ../include/dcmtk/dcmrt/seq/drtcshs.h -drtcims.o: drtcims.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtcims.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtces.o: drtces.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtces.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -5078,6 +5156,10 @@ drtcims.o: drtcims.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -5092,7 +5174,6 @@ drtcims.o: drtcims.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -5121,10 +5202,7 @@ drtcims.o: drtcims.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -5186,12 +5264,13 @@ drtcims.o: drtcims.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ - ../include/dcmtk/dcmrt/seq/drtcncs.h \ - ../include/dcmtk/dcmrt/seq/drtmucs.h \ - ../include/dcmtk/dcmrt/seq/drtrsos.h -drtcis.o: drtcis.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtcis.h \ + ../include/dcmtk/dcmrt/seq/drtidcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ + ../include/dcmtk/dcmrt/seq/drtois.h ../include/dcmtk/dcmrt/seq/drtics.h \ + ../include/dcmtk/dcmrt/seq/drtpics.h \ + ../include/dcmtk/dcmrt/seq/drtporcs.h \ + ../include/dcmtk/dcmrt/seq/drtudis.h +drtcgis.o: drtcgis.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtcgis.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -5202,6 +5281,10 @@ drtcis.o: drtcis.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -5216,7 +5299,6 @@ drtcis.o: drtcis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -5245,10 +5327,7 @@ drtcis.o: drtcis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -5310,8 +5389,8 @@ drtcis.o: drtcis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtcncs.o: drtcncs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtcncs.h \ +drtchs.o: drtchs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtchs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -5322,6 +5401,10 @@ drtcncs.o: drtcncs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -5336,7 +5419,6 @@ drtcncs.o: drtcncs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -5365,10 +5447,7 @@ drtcncs.o: drtcncs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -5430,9 +5509,11 @@ drtcncs.o: drtcncs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h -drtcos.o: drtcos.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtcos.h \ + ../include/dcmtk/dcmrt/seq/drtbcps.h \ + ../include/dcmtk/dcmrt/seq/drtbrdrs.h \ + ../include/dcmtk/dcmrt/seq/drtcshs.h +drtcims.o: drtcims.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtcims.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -5443,6 +5524,10 @@ drtcos.o: drtcos.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -5457,7 +5542,6 @@ drtcos.o: drtcos.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -5486,10 +5570,7 @@ drtcos.o: drtcos.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -5550,10 +5631,14 @@ drtcos.o: drtcos.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtcpas.o: drtcpas.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtcpas.h \ - ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ + ../include/dcmtk/dcmrt/seq/drtcncs.h \ + ../include/dcmtk/dcmrt/seq/drtmucs.h \ + ../include/dcmtk/dcmrt/seq/drtrsos.h +drtcis.o: drtcis.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtcis.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ ../../ofstd/include/dcmtk/ofstd/ofcast.h \ @@ -5563,6 +5648,10 @@ drtcpas.o: drtcpas.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -5577,7 +5666,6 @@ drtcpas.o: drtcpas.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -5606,10 +5694,7 @@ drtcpas.o: drtcpas.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -5671,8 +5756,8 @@ drtcpas.o: drtcpas.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtcpis.o: drtcpis.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtcpis.h \ +drtcncs.o: drtcncs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtcncs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -5683,6 +5768,10 @@ drtcpis.o: drtcpis.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -5697,7 +5786,6 @@ drtcpis.o: drtcpis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -5726,10 +5814,7 @@ drtcpis.o: drtcpis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -5791,10 +5876,9 @@ drtcpis.o: drtcpis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtecs.h \ - ../include/dcmtk/dcmrt/seq/drtpics.h -drtcps.o: drtcps.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtcps.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtcos.o: drtcos.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtcos.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -5805,6 +5889,10 @@ drtcps.o: drtcps.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -5819,7 +5907,6 @@ drtcps.o: drtcps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -5848,10 +5935,7 @@ drtcps.o: drtcps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -5912,13 +5996,9 @@ drtcps.o: drtcps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtbldps.h \ - ../include/dcmtk/dcmrt/seq/drtrdrs1.h \ - ../include/dcmtk/dcmrt/seq/drtbvcps.h \ - ../include/dcmtk/dcmrt/seq/drtrds.h ../include/dcmtk/dcmrt/seq/drtwps.h -drtcs.o: drtcs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtcpas.o: drtcpas.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtcpas.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -5929,6 +6009,10 @@ drtcs.o: drtcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -5943,7 +6027,6 @@ drtcs.o: drtcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -5972,10 +6055,7 @@ drtcs.o: drtcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -6036,10 +6116,9 @@ drtcs.o: drtcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtcis.h -drtcsas.o: drtcsas.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtcsas.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtcpis.o: drtcpis.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtcpis.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -6050,6 +6129,10 @@ drtcsas.o: drtcsas.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -6064,7 +6147,6 @@ drtcsas.o: drtcsas.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -6093,10 +6175,7 @@ drtcsas.o: drtcsas.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -6157,9 +6236,12 @@ drtcsas.o: drtcsas.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtcshs.o: drtcshs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtcshs.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtecs.h \ + ../include/dcmtk/dcmrt/seq/drtidcs.h \ + ../include/dcmtk/dcmrt/seq/drtpics.h +drtcps.o: drtcps.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtcps.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -6170,6 +6252,10 @@ drtcshs.o: drtcshs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -6184,7 +6270,6 @@ drtcshs.o: drtcshs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -6213,10 +6298,7 @@ drtcshs.o: drtcshs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -6277,9 +6359,15 @@ drtcshs.o: drtcshs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtcsis.o: drtcsis.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtcsis.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtbldps.h \ + ../include/dcmtk/dcmrt/seq/drteblos.h \ + ../include/dcmtk/dcmrt/seq/drtrbdgs.h \ + ../include/dcmtk/dcmrt/seq/drtrdrs1.h \ + ../include/dcmtk/dcmrt/seq/drtbvcps.h \ + ../include/dcmtk/dcmrt/seq/drtrds.h ../include/dcmtk/dcmrt/seq/drtwps.h +drtcs.o: drtcs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtcs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -6290,6 +6378,10 @@ drtcsis.o: drtcsis.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -6304,7 +6396,6 @@ drtcsis.o: drtcsis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -6333,10 +6424,7 @@ drtcsis.o: drtcsis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -6398,9 +6486,9 @@ drtcsis.o: drtcsis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtcsrs.h -drtcsrs.o: drtcsrs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtcsrs.h \ + ../include/dcmtk/dcmrt/seq/drtcis.h +drtcsas.o: drtcsas.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtcsas.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -6411,6 +6499,10 @@ drtcsrs.o: drtcsrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -6425,7 +6517,6 @@ drtcsrs.o: drtcsrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -6454,10 +6545,7 @@ drtcsrs.o: drtcsrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -6519,8 +6607,8 @@ drtcsrs.o: drtcsrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtcss.o: drtcss.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtcss.h \ +drtcshs.o: drtcshs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtcshs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -6531,6 +6619,10 @@ drtcss.o: drtcss.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -6545,7 +6637,6 @@ drtcss.o: drtcss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -6574,10 +6665,7 @@ drtcss.o: drtcss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -6638,10 +6726,9 @@ drtcss.o: drtcss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h -drtdcs.o: drtdcs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtdcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtcsis.o: drtcsis.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtcsis.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -6652,6 +6739,10 @@ drtdcs.o: drtdcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -6666,7 +6757,6 @@ drtdcs.o: drtdcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -6695,10 +6785,7 @@ drtdcs.o: drtdcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -6760,9 +6847,9 @@ drtdcs.o: drtdcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h -drtdddps.o: drtdddps.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtdddps.h \ + ../include/dcmtk/dcmrt/seq/drtcsrs.h +drtcsrs.o: drtcsrs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtcsrs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -6773,6 +6860,10 @@ drtdddps.o: drtdddps.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -6787,7 +6878,6 @@ drtdddps.o: drtdddps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -6816,10 +6906,7 @@ drtdddps.o: drtdddps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -6881,8 +6968,8 @@ drtdddps.o: drtdddps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtddps.o: drtddps.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtddps.h \ +drtcss.o: drtcss.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtcss.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -6893,6 +6980,10 @@ drtddps.o: drtddps.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -6907,7 +6998,6 @@ drtddps.o: drtddps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -6936,10 +7026,7 @@ drtddps.o: drtddps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -7000,9 +7087,10 @@ drtddps.o: drtddps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtdias.o: drtdias.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtdias.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtcttcs.o: drtcttcs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtcttcs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -7013,6 +7101,10 @@ drtdias.o: drtdias.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -7027,7 +7119,6 @@ drtdias.o: drtdias.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -7056,10 +7147,7 @@ drtdias.o: drtdias.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -7120,9 +7208,10 @@ drtdias.o: drtdias.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtdimcs.o: drtdimcs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtdimcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtcvcss.o: drtcvcss.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtcvcss.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -7133,6 +7222,10 @@ drtdimcs.o: drtdimcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -7147,7 +7240,6 @@ drtdimcs.o: drtdimcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -7176,10 +7268,7 @@ drtdimcs.o: drtdimcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -7241,9 +7330,9 @@ drtdimcs.o: drtdimcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h -drtdimrs.o: drtdimrs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtdimrs.h \ + ../include/dcmtk/dcmrt/seq/drtrdsis.h +drtcvdas.o: drtcvdas.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtcvdas.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -7254,6 +7343,10 @@ drtdimrs.o: drtdimrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -7268,7 +7361,6 @@ drtdimrs.o: drtdimrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -7297,10 +7389,7 @@ drtdimrs.o: drtdimrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -7361,9 +7450,11 @@ drtdimrs.o: drtdimrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtdirs.o: drtdirs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtdirs.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtafcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ + ../include/dcmtk/dcmrt/seq/drtancs.h +drtcvis.o: drtcvis.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtcvis.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -7374,6 +7465,10 @@ drtdirs.o: drtdirs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -7388,7 +7483,6 @@ drtdirs.o: drtdirs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -7417,10 +7511,7 @@ drtdirs.o: drtdirs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -7481,17 +7572,33 @@ drtdirs.o: drtdirs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtdose.o: drtdose.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/drtdose.h ../include/dcmtk/dcmrt/drttypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtdcvs.h \ + ../include/dcmtk/dcmrt/seq/drtcvdas.h \ + ../include/dcmtk/dcmrt/seq/drtafcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ + ../include/dcmtk/dcmrt/seq/drtancs.h \ + ../include/dcmtk/dcmrt/seq/drtscvs.h \ + ../include/dcmtk/dcmrt/seq/drtcvcss.h \ + ../include/dcmtk/dcmrt/seq/drtrdsis.h \ + ../include/dcmtk/dcmrt/seq/drtecvs.h \ + ../include/dcmtk/dcmrt/seq/drtecvis.h \ + ../include/dcmtk/dcmrt/seq/drtosirs.h +drtdccs.o: drtdccs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtdccs.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ ../../ofstd/include/dcmtk/ofstd/ofcast.h \ ../../ofstd/include/dcmtk/ofstd/ofexport.h \ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -7506,7 +7613,6 @@ drtdose.o: drtdose.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -7529,17 +7635,13 @@ drtdose.o: drtdose.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ ../../ofstd/include/dcmtk/ofstd/offile.h \ ../../ofstd/include/dcmtk/ofstd/ofstd.h \ - ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oflimits.h \ ../../config/include/dcmtk/config/arith.h \ ../../ofstd/include/dcmtk/ofstd/oferror.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -7600,91 +7702,9 @@ drtdose.o: drtdose.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ - ../include/dcmtk/dcmrt/seq/drtbrs.h \ - ../include/dcmtk/dcmrt/seq/drtbrcss.h \ - ../include/dcmtk/dcmrt/seq/drtcsis.h \ - ../include/dcmtk/dcmrt/seq/drtcsrs.h \ - ../include/dcmtk/dcmrt/seq/drtcctus.h \ - ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \ - ../include/dcmtk/dcmrt/seq/drtpics.h \ - ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \ - ../include/dcmtk/dcmrt/seq/drtois.h \ - ../include/dcmtk/dcmrt/seq/drtporcs.h \ - ../include/dcmtk/dcmrt/seq/drtcsas.h \ - ../include/dcmtk/dcmrt/seq/drtdvhs.h \ - ../include/dcmtk/dcmrt/seq/drtdvrrs.h \ - ../include/dcmtk/dcmrt/seq/drtdimcs.h \ - ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \ - ../include/dcmtk/dcmrt/seq/drtdspcs.h \ - ../include/dcmtk/dcmrt/seq/drteas.h ../include/dcmtk/dcmrt/seq/drtfes.h \ - ../include/dcmtk/dcmrt/seq/drtgms.h ../include/dcmtk/dcmrt/seq/drtgmcs.h \ - ../include/dcmtk/dcmrt/seq/drtgpis.h \ - ../include/dcmtk/dcmrt/seq/drtipiqs.h \ - ../include/dcmtk/dcmrt/seq/drtaadcs.h \ - ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \ - ../include/dcmtk/dcmrt/seq/drthsdrs.h \ - ../include/dcmtk/dcmrt/seq/drtiis.h ../include/dcmtk/dcmrt/seq/drtians.h \ - ../include/dcmtk/dcmrt/seq/drtiais.h \ - ../include/dcmtk/dcmrt/seq/drtiseis.h \ - ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \ - ../include/dcmtk/dcmrt/seq/drtmls.h ../include/dcmtk/dcmrt/seq/drtoas.h \ - ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtopis.h \ - ../include/dcmtk/dcmrt/seq/drtpbcs.h \ - ../include/dcmtk/dcmrt/seq/drtpsics.h \ - ../include/dcmtk/dcmrt/seq/drtpscs.h \ - ../include/dcmtk/dcmrt/seq/drtppcs.h \ - ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \ - ../include/dcmtk/dcmrt/seq/drtcncs.h \ - ../include/dcmtk/dcmrt/seq/drtcims.h \ - ../include/dcmtk/dcmrt/seq/drtmucs.h \ - ../include/dcmtk/dcmrt/seq/drtrsos.h \ - ../include/dcmtk/dcmrt/seq/drtporis.h \ - ../include/dcmtk/dcmrt/seq/drtprsis.h \ - ../include/dcmtk/dcmrt/seq/drtpsss.h \ - ../include/dcmtk/dcmrt/seq/drtpdecs.h \ - ../include/dcmtk/dcmrt/seq/drtdias.h \ - ../include/dcmtk/dcmrt/seq/drtpdeds.h \ - ../include/dcmtk/dcmrt/seq/drtpcs.h ../include/dcmtk/dcmrt/seq/drtrcs.h \ - ../include/dcmtk/dcmrt/seq/drtcs.h ../include/dcmtk/dcmrt/seq/drtcis.h \ - ../include/dcmtk/dcmrt/seq/drtrdros.h \ - ../include/dcmtk/dcmrt/seq/drtrwvms.h \ - ../include/dcmtk/dcmrt/seq/drtqds.h \ - ../include/dcmtk/dcmrt/seq/drtrppcs.h \ - ../include/dcmtk/dcmrt/seq/drtrfors.h \ - ../include/dcmtk/dcmrt/seq/drtrsts.h \ - ../include/dcmtk/dcmrt/seq/drtrses.h ../include/dcmtk/dcmrt/seq/drtris.h \ - ../include/dcmtk/dcmrt/seq/drtrpphs.h \ - ../include/dcmtk/dcmrt/seq/drtdimrs.h \ - ../include/dcmtk/dcmrt/seq/drtdirs.h \ - ../include/dcmtk/dcmrt/seq/drtwrsrs.h \ - ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \ - ../include/dcmtk/dcmrt/seq/drtrps.h \ - ../include/dcmtk/dcmrt/seq/drtrppss.h \ - ../include/dcmtk/dcmrt/seq/drtrrtps.h \ - ../include/dcmtk/dcmrt/seq/drtrfgs.h \ - ../include/dcmtk/dcmrt/seq/drtrbs2.h \ - ../include/dcmtk/dcmrt/seq/drtrcps.h \ - ../include/dcmtk/dcmrt/seq/drtrbas2.h \ - ../include/dcmtk/dcmrt/seq/drtrsers.h \ - ../include/dcmtk/dcmrt/seq/drtrsrs.h \ - ../include/dcmtk/dcmrt/seq/drtrsss.h ../include/dcmtk/dcmrt/seq/drtrss.h \ - ../include/dcmtk/dcmrt/seq/drtrtrs2.h \ - ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \ - ../include/dcmtk/dcmrt/seq/drtrrpcs.h \ - ../include/dcmtk/dcmrt/seq/drtrpcs.h \ - ../include/dcmtk/dcmrt/seq/drtspcs.h \ - ../include/dcmtk/dcmrt/seq/drtrscs.h \ - ../include/dcmtk/dcmrt/seq/drtsdcs.h \ - ../include/dcmtk/dcmrt/seq/drtspgis.h \ - ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \ - ../include/dcmtk/dcmrt/seq/drtssrcs.h \ - ../include/dcmtk/dcmrt/seq/drtssrs.h \ - ../include/dcmtk/dcmrt/seq/drtscris.h \ - ../include/dcmtk/dcmrt/seq/drtudis.h -drtdrs.o: drtdrs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtdrs.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtdcs.o: drtdcs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtdcs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -7695,6 +7715,10 @@ drtdrs.o: drtdrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -7709,7 +7733,6 @@ drtdrs.o: drtdrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -7738,10 +7761,7 @@ drtdrs.o: drtdrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -7802,9 +7822,10 @@ drtdrs.o: drtdrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtds.o: drtds.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtds.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtdcvs.o: drtdcvs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtdcvs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -7815,6 +7836,10 @@ drtds.o: drtds.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -7829,7 +7854,6 @@ drtds.o: drtds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -7858,10 +7882,7 @@ drtds.o: drtds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -7923,9 +7944,14 @@ drtds.o: drtds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h -drtdspcs.o: drtdspcs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtdspcs.h \ + ../include/dcmtk/dcmrt/seq/drtcvdas.h \ + ../include/dcmtk/dcmrt/seq/drtafcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ + ../include/dcmtk/dcmrt/seq/drtancs.h \ + ../include/dcmtk/dcmrt/seq/drtscvs.h \ + ../include/dcmtk/dcmrt/seq/drtcvcss.h \ + ../include/dcmtk/dcmrt/seq/drtrdsis.h +drtdddps.o: drtdddps.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtdddps.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -7936,6 +7962,10 @@ drtdspcs.o: drtdspcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -7950,7 +7980,6 @@ drtdspcs.o: drtdspcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -7979,10 +8008,7 @@ drtdspcs.o: drtdspcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -8043,10 +8069,9 @@ drtdspcs.o: drtdspcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h -drtdss.o: drtdss.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtdss.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtddps.o: drtddps.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtddps.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -8057,6 +8082,10 @@ drtdss.o: drtdss.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -8071,7 +8100,6 @@ drtdss.o: drtdss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -8100,10 +8128,7 @@ drtdss.o: drtdss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -8164,11 +8189,9 @@ drtdss.o: drtdss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtdspcs.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h -drtdvhs.o: drtdvhs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtdvhs.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtdfss.o: drtdfss.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtdfss.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -8179,6 +8202,10 @@ drtdvhs.o: drtdvhs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -8193,7 +8220,6 @@ drtdvhs.o: drtdvhs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -8222,10 +8248,7 @@ drtdvhs.o: drtdvhs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -8286,10 +8309,9 @@ drtdvhs.o: drtdvhs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtdvrrs.h -drtdvrrs.o: drtdvrrs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtdvrrs.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtdias.o: drtdias.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtdias.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -8300,6 +8322,10 @@ drtdvrrs.o: drtdvrrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -8314,7 +8340,6 @@ drtdvrrs.o: drtdvrrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -8343,10 +8368,7 @@ drtdvrrs.o: drtdvrrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -8408,8 +8430,8 @@ drtdvrrs.o: drtdvrrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drteas.o: drteas.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drteas.h \ +drtdimcs.o: drtdimcs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtdimcs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -8420,6 +8442,10 @@ drteas.o: drteas.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -8434,7 +8460,6 @@ drteas.o: drteas.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -8463,10 +8488,7 @@ drteas.o: drteas.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -8527,9 +8549,10 @@ drteas.o: drteas.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtecs.o: drtecs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtdimrs.o: drtdimrs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtdimrs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -8540,6 +8563,10 @@ drtecs.o: drtecs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -8554,7 +8581,6 @@ drtecs.o: drtecs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -8583,10 +8609,7 @@ drtecs.o: drtecs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -8648,8 +8671,8 @@ drtecs.o: drtecs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtes.o: drtes.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtes.h \ +drtdirs.o: drtdirs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtdirs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -8660,6 +8683,10 @@ drtes.o: drtes.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -8674,7 +8701,6 @@ drtes.o: drtes.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -8703,10 +8729,7 @@ drtes.o: drtes.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -8767,23 +8790,21 @@ drtes.o: drtes.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtas5.h ../include/dcmtk/dcmrt/seq/drtags.h \ - ../include/dcmtk/dcmrt/seq/drtblds5.h \ - ../include/dcmtk/dcmrt/seq/drtbl5.h ../include/dcmtk/dcmrt/seq/drtgas.h \ - ../include/dcmtk/dcmrt/seq/drtpfms.h -drtfds.o: drtfds.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtfds.h \ - ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtdose.o: drtdose.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/drtdose.h ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ ../../ofstd/include/dcmtk/ofstd/ofcast.h \ ../../ofstd/include/dcmtk/ofstd/ofexport.h \ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ ../../ofstd/include/dcmtk/ofstd/ofstream.h \ - ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -8798,7 +8819,6 @@ drtfds.o: drtfds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -8821,16 +8841,14 @@ drtfds.o: drtfds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ ../../ofstd/include/dcmtk/ofstd/offile.h \ ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oflimits.h \ ../../config/include/dcmtk/config/arith.h \ ../../ofstd/include/dcmtk/ofstd/oferror.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -8891,9 +8909,97 @@ drtfds.o: drtfds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtfes.o: drtfes.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtfes.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ + ../include/dcmtk/dcmrt/seq/drtars.h ../include/dcmtk/dcmrt/seq/drtarms.h \ + ../include/dcmtk/dcmrt/seq/drtbrs.h \ + ../include/dcmtk/dcmrt/seq/drtbrcss.h \ + ../include/dcmtk/dcmrt/seq/drtcttcs.h \ + ../include/dcmtk/dcmrt/seq/drtcsis.h \ + ../include/dcmtk/dcmrt/seq/drtcsrs.h \ + ../include/dcmtk/dcmrt/seq/drtcctus.h \ + ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \ + ../include/dcmtk/dcmrt/seq/drtidcs.h \ + ../include/dcmtk/dcmrt/seq/drtpics.h \ + ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \ + ../include/dcmtk/dcmrt/seq/drtois.h \ + ../include/dcmtk/dcmrt/seq/drtporcs.h \ + ../include/dcmtk/dcmrt/seq/drtudis.h \ + ../include/dcmtk/dcmrt/seq/drtcsas.h \ + ../include/dcmtk/dcmrt/seq/drtdvhs.h \ + ../include/dcmtk/dcmrt/seq/drtdvrrs.h \ + ../include/dcmtk/dcmrt/seq/drtdimcs.h \ + ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \ + ../include/dcmtk/dcmrt/seq/drtdspcs.h \ + ../include/dcmtk/dcmrt/seq/drteas.h ../include/dcmtk/dcmrt/seq/drtfes.h \ + ../include/dcmtk/dcmrt/seq/drtgms.h ../include/dcmtk/dcmrt/seq/drtgmcs.h \ + ../include/dcmtk/dcmrt/seq/drtgpis.h \ + ../include/dcmtk/dcmrt/seq/drtipiqs.h \ + ../include/dcmtk/dcmrt/seq/drtaadcs.h \ + ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \ + ../include/dcmtk/dcmrt/seq/drthsdrs.h \ + ../include/dcmtk/dcmrt/seq/drtiis.h ../include/dcmtk/dcmrt/seq/drtians.h \ + ../include/dcmtk/dcmrt/seq/drtiais.h \ + ../include/dcmtk/dcmrt/seq/drtiseis.h \ + ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \ + ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \ + ../include/dcmtk/dcmrt/seq/drtnmas.h \ + ../include/dcmtk/dcmrt/seq/drtopis.h \ + ../include/dcmtk/dcmrt/seq/drtpbcs.h \ + ../include/dcmtk/dcmrt/seq/drtpsics.h \ + ../include/dcmtk/dcmrt/seq/drtpscs.h \ + ../include/dcmtk/dcmrt/seq/drtppcs.h \ + ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \ + ../include/dcmtk/dcmrt/seq/drtcncs.h \ + ../include/dcmtk/dcmrt/seq/drtcims.h \ + ../include/dcmtk/dcmrt/seq/drtmucs.h \ + ../include/dcmtk/dcmrt/seq/drtrsos.h \ + ../include/dcmtk/dcmrt/seq/drtporis.h \ + ../include/dcmtk/dcmrt/seq/drtprsis.h \ + ../include/dcmtk/dcmrt/seq/drtplos.h \ + ../include/dcmtk/dcmrt/seq/drtpros.h \ + ../include/dcmtk/dcmrt/seq/drtrims.h \ + ../include/dcmtk/dcmrt/seq/drtrsss.h \ + ../include/dcmtk/dcmrt/seq/drttscs.h \ + ../include/dcmtk/dcmrt/seq/drtpass.h \ + ../include/dcmtk/dcmrt/seq/drtpasms.h \ + ../include/dcmtk/dcmrt/seq/drtpdecs.h \ + ../include/dcmtk/dcmrt/seq/drtdias.h \ + ../include/dcmtk/dcmrt/seq/drtpdeds.h \ + ../include/dcmtk/dcmrt/seq/drtpcs.h \ + ../include/dcmtk/dcmrt/seq/drtrwvms.h \ + ../include/dcmtk/dcmrt/seq/drtqds.h \ + ../include/dcmtk/dcmrt/seq/drtrppcs.h \ + ../include/dcmtk/dcmrt/seq/drtrvcs.h \ + ../include/dcmtk/dcmrt/seq/drtrdps.h ../include/dcmtk/dcmrt/seq/drtris.h \ + ../include/dcmtk/dcmrt/seq/drtrpphs.h \ + ../include/dcmtk/dcmrt/seq/drtdimrs.h \ + ../include/dcmtk/dcmrt/seq/drtdirs.h \ + ../include/dcmtk/dcmrt/seq/drtwrsrs.h \ + ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \ + ../include/dcmtk/dcmrt/seq/drtrps.h \ + ../include/dcmtk/dcmrt/seq/drtrppss.h \ + ../include/dcmtk/dcmrt/seq/drtrpprs.h \ + ../include/dcmtk/dcmrt/seq/drtrtps1.h \ + ../include/dcmtk/dcmrt/seq/drtrfgs.h \ + ../include/dcmtk/dcmrt/seq/drtrbs1.h \ + ../include/dcmtk/dcmrt/seq/drtrcps.h \ + ../include/dcmtk/dcmrt/seq/drtrbas1.h \ + ../include/dcmtk/dcmrt/seq/drtrsers.h \ + ../include/dcmtk/dcmrt/seq/drtrsrs.h ../include/dcmtk/dcmrt/seq/drtrss.h \ + ../include/dcmtk/dcmrt/seq/drtrtrs1.h \ + ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \ + ../include/dcmtk/dcmrt/seq/drtrrpcs.h \ + ../include/dcmtk/dcmrt/seq/drtrpcs.h \ + ../include/dcmtk/dcmrt/seq/drtspcs.h \ + ../include/dcmtk/dcmrt/seq/drtrscs.h \ + ../include/dcmtk/dcmrt/seq/drtsdcs.h \ + ../include/dcmtk/dcmrt/seq/drtspgis.h \ + ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \ + ../include/dcmtk/dcmrt/seq/drtssrcs.h \ + ../include/dcmtk/dcmrt/seq/drtscris.h +drtdrs.o: drtdrs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtdrs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -8904,6 +9010,10 @@ drtfes.o: drtfes.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -8918,7 +9028,6 @@ drtfes.o: drtfes.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -8947,10 +9056,7 @@ drtfes.o: drtfes.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -9012,8 +9118,8 @@ drtfes.o: drtfes.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtfgs.o: drtfgs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtfgs.h \ +drtds.o: drtds.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtds.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -9024,6 +9130,10 @@ drtfgs.o: drtfgs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -9038,7 +9148,6 @@ drtfgs.o: drtfgs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -9067,10 +9176,7 @@ drtfgs.o: drtfgs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -9132,12 +9238,9 @@ drtfgs.o: drtfgs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtrbs8.h \ - ../include/dcmtk/dcmrt/seq/drtrbas8.h \ - ../include/dcmtk/dcmrt/seq/drtrdrs8.h \ - ../include/dcmtk/dcmrt/seq/drtrds.h -drtfgss.o: drtfgss.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtfgss.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtdspcs.o: drtdspcs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtdspcs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -9148,6 +9251,10 @@ drtfgss.o: drtfgss.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -9162,7 +9269,6 @@ drtfgss.o: drtfgss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -9191,10 +9297,7 @@ drtfgss.o: drtfgss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -9256,9 +9359,9 @@ drtfgss.o: drtfgss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtfsss.h -drtfms.o: drtfms.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtfms.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtdss.o: drtdss.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtdss.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -9269,6 +9372,10 @@ drtfms.o: drtfms.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -9283,7 +9390,6 @@ drtfms.o: drtfms.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -9312,10 +9418,7 @@ drtfms.o: drtfms.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -9376,9 +9479,11 @@ drtfms.o: drtfms.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtfsss.o: drtfsss.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtfsss.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtdspcs.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtdtcs.o: drtdtcs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtdtcs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -9389,6 +9494,10 @@ drtfsss.o: drtfsss.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -9403,7 +9512,6 @@ drtfsss.o: drtfsss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -9432,10 +9540,7 @@ drtfsss.o: drtfsss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -9496,9 +9601,10 @@ drtfsss.o: drtfsss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtgas.o: drtgas.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtgas.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtdvhs.o: drtdvhs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtdvhs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -9509,6 +9615,10 @@ drtgas.o: drtgas.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -9523,7 +9633,6 @@ drtgas.o: drtgas.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -9552,10 +9661,7 @@ drtgas.o: drtgas.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -9616,9 +9722,10 @@ drtgas.o: drtgas.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtgmcs.o: drtgmcs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtgmcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtdvrrs.h +drtdvrrs.o: drtdvrrs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtdvrrs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -9629,6 +9736,10 @@ drtgmcs.o: drtgmcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -9643,7 +9754,6 @@ drtgmcs.o: drtgmcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -9672,10 +9782,7 @@ drtgmcs.o: drtgmcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -9736,10 +9843,9 @@ drtgmcs.o: drtgmcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h -drtgms.o: drtgms.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtgms.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drteas.o: drteas.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drteas.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -9750,6 +9856,10 @@ drtgms.o: drtgms.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -9764,7 +9874,6 @@ drtgms.o: drtgms.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -9793,10 +9902,7 @@ drtgms.o: drtgms.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -9857,10 +9963,9 @@ drtgms.o: drtgms.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtgmcs.h ../include/dcmtk/dcmrt/seq/drtecs.h -drtgpis.o: drtgpis.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtgpis.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drteblds.o: drteblds.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drteblds.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -9871,6 +9976,10 @@ drtgpis.o: drtgpis.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -9885,7 +9994,6 @@ drtgpis.o: drtgpis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -9914,10 +10022,7 @@ drtgpis.o: drtgpis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -9979,12 +10084,13 @@ drtgpis.o: drtgpis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtipiqs.h \ - ../include/dcmtk/dcmrt/seq/drtaadcs.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtafs.h \ - ../include/dcmtk/dcmrt/seq/drtajcs.h -drthsdrs.o: drthsdrs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drthsdrs.h \ + ../include/dcmtk/dcmrt/seq/drtdtcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ + ../include/dcmtk/dcmrt/seq/drtfbdds.h \ + ../include/dcmtk/dcmrt/seq/drtpbdds.h \ + ../include/dcmtk/dcmrt/seq/drtpbdos.h \ + ../include/dcmtk/dcmrt/seq/drtudis.h +drteblos.o: drteblos.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drteblos.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -9995,6 +10101,10 @@ drthsdrs.o: drthsdrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -10009,7 +10119,6 @@ drthsdrs.o: drthsdrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -10038,10 +10147,7 @@ drthsdrs.o: drthsdrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -10102,9 +10208,10 @@ drthsdrs.o: drthsdrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtiais.o: drtiais.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtiais.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtrbdgs.h +drtecs.o: drtecs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -10115,6 +10222,10 @@ drtiais.o: drtiais.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -10129,7 +10240,6 @@ drtiais.o: drtiais.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -10158,10 +10268,7 @@ drtiais.o: drtiais.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -10223,8 +10330,8 @@ drtiais.o: drtiais.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtians.o: drtians.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtians.h \ +drtecvis.o: drtecvis.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtecvis.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -10235,6 +10342,10 @@ drtians.o: drtians.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -10249,7 +10360,6 @@ drtians.o: drtians.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -10278,10 +10388,7 @@ drtians.o: drtians.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -10343,8 +10450,8 @@ drtians.o: drtians.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtiblds.o: drtiblds.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtiblds.h \ +drtecvs.o: drtecvs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtecvs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -10355,6 +10462,10 @@ drtiblds.o: drtiblds.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -10369,7 +10480,6 @@ drtiblds.o: drtiblds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -10398,10 +10508,7 @@ drtiblds.o: drtiblds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -10462,9 +10569,10 @@ drtiblds.o: drtiblds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtibls.o: drtibls.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtibls.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtecvis.h +drtes.o: drtes.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtes.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -10475,6 +10583,10 @@ drtibls.o: drtibls.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -10489,7 +10601,6 @@ drtibls.o: drtibls.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -10518,10 +10629,7 @@ drtibls.o: drtibls.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -10583,9 +10691,15 @@ drtibls.o: drtibls.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtbss.h -drtibs.o: drtibs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtibs.h \ + ../include/dcmtk/dcmrt/seq/drtas2.h ../include/dcmtk/dcmrt/seq/drtags.h \ + ../include/dcmtk/dcmrt/seq/drtblds2.h \ + ../include/dcmtk/dcmrt/seq/drtbl2.h \ + ../include/dcmtk/dcmrt/seq/drteblos.h \ + ../include/dcmtk/dcmrt/seq/drtrbdgs.h \ + ../include/dcmtk/dcmrt/seq/drtgas4.h \ + ../include/dcmtk/dcmrt/seq/drtpfms.h +drtfbdds.o: drtfbdds.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtfbdds.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -10596,6 +10710,10 @@ drtibs.o: drtibs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -10610,7 +10728,6 @@ drtibs.o: drtibs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -10639,10 +10756,7 @@ drtibs.o: drtibs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -10703,27 +10817,9 @@ drtibs.o: drtibs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtas6.h ../include/dcmtk/dcmrt/seq/drtddps.h \ - ../include/dcmtk/dcmrt/seq/drtgas.h \ - ../include/dcmtk/dcmrt/seq/drtiblds.h \ - ../include/dcmtk/dcmrt/seq/drtibls.h ../include/dcmtk/dcmrt/seq/drtbss.h \ - ../include/dcmtk/dcmrt/seq/drticps.h \ - ../include/dcmtk/dcmrt/seq/drtbldps.h \ - ../include/dcmtk/dcmrt/seq/drtiwps.h \ - ../include/dcmtk/dcmrt/seq/drtlsds6.h \ - ../include/dcmtk/dcmrt/seq/drtrmss6.h \ - ../include/dcmtk/dcmrt/seq/drtrshs6.h \ - ../include/dcmtk/dcmrt/seq/drtrdrs6.h \ - ../include/dcmtk/dcmrt/seq/drtircs.h ../include/dcmtk/dcmrt/seq/drtiws.h \ - ../include/dcmtk/dcmrt/seq/drtlsds.h ../include/dcmtk/dcmrt/seq/drtrms.h \ - ../include/dcmtk/dcmrt/seq/drtrshs.h \ - ../include/dcmtk/dcmrt/seq/drtrbos6.h \ - ../include/dcmtk/dcmrt/seq/drtrds.h \ - ../include/dcmtk/dcmrt/seq/drtrris6.h \ - ../include/dcmtk/dcmrt/seq/drtsns.h -drticpds.o: drticpds.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drticpds.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtfds.o: drtfds.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtfds.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -10734,6 +10830,10 @@ drticpds.o: drticpds.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -10748,7 +10848,6 @@ drticpds.o: drticpds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -10777,10 +10876,7 @@ drticpds.o: drticpds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -10841,17 +10937,9 @@ drticpds.o: drticpds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtbldps.h \ - ../include/dcmtk/dcmrt/seq/drtcpas.h \ - ../include/dcmtk/dcmrt/seq/drtiwps.h \ - ../include/dcmtk/dcmrt/seq/drtlsds7.h ../include/dcmtk/dcmrt/seq/drtos.h \ - ../include/dcmtk/dcmrt/seq/drtois.h ../include/dcmtk/dcmrt/seq/drtics.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtpics.h \ - ../include/dcmtk/dcmrt/seq/drtrmss7.h \ - ../include/dcmtk/dcmrt/seq/drtrshs7.h -drticps.o: drticps.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drticps.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtfes.o: drtfes.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtfes.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -10862,6 +10950,10 @@ drticps.o: drticps.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -10876,7 +10968,6 @@ drticps.o: drticps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -10905,10 +10996,7 @@ drticps.o: drticps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -10969,15 +11057,9 @@ drticps.o: drticps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtbldps.h \ - ../include/dcmtk/dcmrt/seq/drtiwps.h \ - ../include/dcmtk/dcmrt/seq/drtlsds6.h \ - ../include/dcmtk/dcmrt/seq/drtrmss6.h \ - ../include/dcmtk/dcmrt/seq/drtrshs6.h \ - ../include/dcmtk/dcmrt/seq/drtrdrs6.h -drtics.o: drtics.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtics.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtfgs.o: drtfgs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtfgs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -10988,6 +11070,10 @@ drtics.o: drtics.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -11002,7 +11088,6 @@ drtics.o: drtics.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -11031,10 +11116,7 @@ drtics.o: drtics.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -11096,9 +11178,19 @@ drtics.o: drtics.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h -drtiis.o: drtiis.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtiis.h \ + ../include/dcmtk/dcmrt/seq/drtdfss.h \ + ../include/dcmtk/dcmrt/seq/drtrbs3.h \ + ../include/dcmtk/dcmrt/seq/drtdccs.h \ + ../include/dcmtk/dcmrt/seq/drtrdcks.h \ + ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ + ../include/dcmtk/dcmrt/seq/drtcncs.h \ + ../include/dcmtk/dcmrt/seq/drtmucs.h \ + ../include/dcmtk/dcmrt/seq/drtrsos.h \ + ../include/dcmtk/dcmrt/seq/drtrbas2.h \ + ../include/dcmtk/dcmrt/seq/drtrdrs3.h \ + ../include/dcmtk/dcmrt/seq/drtrds.h +drtfgss.o: drtfgss.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtfgss.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -11109,6 +11201,10 @@ drtiis.o: drtiis.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -11123,7 +11219,6 @@ drtiis.o: drtiis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -11152,10 +11247,7 @@ drtiis.o: drtiis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -11216,17 +11308,24 @@ drtiis.o: drtiis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtimage.o: drtimage.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/drtimage.h ../include/dcmtk/dcmrt/drttypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtfsss.h +drtfms.o: drtfms.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtfms.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ ../../ofstd/include/dcmtk/ofstd/ofcast.h \ ../../ofstd/include/dcmtk/ofstd/ofexport.h \ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -11241,7 +11340,6 @@ drtimage.o: drtimage.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -11264,17 +11362,13 @@ drtimage.o: drtimage.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ ../../ofstd/include/dcmtk/ofstd/offile.h \ ../../ofstd/include/dcmtk/ofstd/ofstd.h \ - ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oflimits.h \ ../../config/include/dcmtk/config/arith.h \ ../../ofstd/include/dcmtk/ofstd/oferror.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -11335,49 +11429,3168 @@ drtimage.o: drtimage.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ - ../include/dcmtk/dcmrt/seq/drtbrs.h \ - ../include/dcmtk/dcmrt/seq/drtbrcss.h \ - ../include/dcmtk/dcmrt/seq/drtcsis.h \ - ../include/dcmtk/dcmrt/seq/drtcsrs.h \ - ../include/dcmtk/dcmrt/seq/drtcctus.h \ - ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \ - ../include/dcmtk/dcmrt/seq/drtpics.h \ - ../include/dcmtk/dcmrt/seq/drtcgis.h \ - ../include/dcmtk/dcmrt/seq/drtcbars.h \ - ../include/dcmtk/dcmrt/seq/drtads.h ../include/dcmtk/dcmrt/seq/drtbas.h \ - ../include/dcmtk/dcmrt/seq/drtces.h ../include/dcmtk/dcmrt/seq/drtois.h \ - ../include/dcmtk/dcmrt/seq/drtporcs.h \ - ../include/dcmtk/dcmrt/seq/drtcsas.h \ - ../include/dcmtk/dcmrt/seq/drtdimcs.h \ - ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtds.h \ - ../include/dcmtk/dcmrt/seq/drtdss.h \ - ../include/dcmtk/dcmrt/seq/drtdspcs.h \ - ../include/dcmtk/dcmrt/seq/drteas.h ../include/dcmtk/dcmrt/seq/drtes.h \ - ../include/dcmtk/dcmrt/seq/drtas5.h ../include/dcmtk/dcmrt/seq/drtags.h \ - ../include/dcmtk/dcmrt/seq/drtblds5.h \ - ../include/dcmtk/dcmrt/seq/drtbl5.h ../include/dcmtk/dcmrt/seq/drtgas.h \ - ../include/dcmtk/dcmrt/seq/drtpfms.h ../include/dcmtk/dcmrt/seq/drtfms.h \ - ../include/dcmtk/dcmrt/seq/drtfes.h ../include/dcmtk/dcmrt/seq/drtgms.h \ - ../include/dcmtk/dcmrt/seq/drtgmcs.h \ - ../include/dcmtk/dcmrt/seq/drtgpis.h \ - ../include/dcmtk/dcmrt/seq/drtipiqs.h \ - ../include/dcmtk/dcmrt/seq/drtaadcs.h \ - ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \ - ../include/dcmtk/dcmrt/seq/drthsdrs.h \ - ../include/dcmtk/dcmrt/seq/drtiis.h ../include/dcmtk/dcmrt/seq/drtians.h \ - ../include/dcmtk/dcmrt/seq/drtiais.h \ - ../include/dcmtk/dcmrt/seq/drtiseis.h \ - ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \ - ../include/dcmtk/dcmrt/seq/drtmls.h \ - ../include/dcmtk/dcmrt/seq/drtmacds.h \ - ../include/dcmtk/dcmrt/seq/drtcss.h ../include/dcmtk/dcmrt/seq/drtoas.h \ - ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtopis.h \ - ../include/dcmtk/dcmrt/seq/drtpbcs.h \ - ../include/dcmtk/dcmrt/seq/drtpsics.h \ - ../include/dcmtk/dcmrt/seq/drtpscs.h \ - ../include/dcmtk/dcmrt/seq/drtppcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtfsss.o: drtfsss.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtfsss.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtgas1.o: drtgas1.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtgas1.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtgas2.o: drtgas2.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtgas2.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtgas3.o: drtgas3.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtgas3.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtgas4.o: drtgas4.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtgas4.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtgas5.o: drtgas5.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtgas5.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtgas6.o: drtgas6.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtgas6.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtgmcs.o: drtgmcs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtgmcs.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtgms.o: drtgms.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtgms.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtgmcs.h ../include/dcmtk/dcmrt/seq/drtecs.h +drtgpis.o: drtgpis.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtgpis.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtipiqs.h \ + ../include/dcmtk/dcmrt/seq/drtaadcs.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtafs.h \ + ../include/dcmtk/dcmrt/seq/drtajcs.h +drthsdrs.o: drthsdrs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drthsdrs.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtiais.o: drtiais.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtiais.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtians.o: drtians.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtians.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtiblds.o: drtiblds.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtiblds.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtibls.o: drtibls.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtibls.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtbss.h +drtibs.o: drtibs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtibs.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtas3.h ../include/dcmtk/dcmrt/seq/drtddps.h \ + ../include/dcmtk/dcmrt/seq/drtgas5.h \ + ../include/dcmtk/dcmrt/seq/drtidcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ + ../include/dcmtk/dcmrt/seq/drtiblds.h \ + ../include/dcmtk/dcmrt/seq/drtibls.h ../include/dcmtk/dcmrt/seq/drtbss.h \ + ../include/dcmtk/dcmrt/seq/drticps.h \ + ../include/dcmtk/dcmrt/seq/drtbldps.h \ + ../include/dcmtk/dcmrt/seq/drtiwps.h \ + ../include/dcmtk/dcmrt/seq/drtlsds1.h \ + ../include/dcmtk/dcmrt/seq/drtrmss1.h \ + ../include/dcmtk/dcmrt/seq/drtrshs1.h \ + ../include/dcmtk/dcmrt/seq/drtrdrs2.h \ + ../include/dcmtk/dcmrt/seq/drtircs.h ../include/dcmtk/dcmrt/seq/drtiws.h \ + ../include/dcmtk/dcmrt/seq/drtlsds.h ../include/dcmtk/dcmrt/seq/drtrms.h \ + ../include/dcmtk/dcmrt/seq/drtrshs.h \ + ../include/dcmtk/dcmrt/seq/drtrbos2.h \ + ../include/dcmtk/dcmrt/seq/drtrds.h \ + ../include/dcmtk/dcmrt/seq/drtrris2.h \ + ../include/dcmtk/dcmrt/seq/drtsns.h +drticpds.o: drticpds.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drticpds.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtbldps.h \ + ../include/dcmtk/dcmrt/seq/drtcpas.h \ + ../include/dcmtk/dcmrt/seq/drtiwps.h \ + ../include/dcmtk/dcmrt/seq/drtlsds2.h ../include/dcmtk/dcmrt/seq/drtos.h \ + ../include/dcmtk/dcmrt/seq/drtois.h ../include/dcmtk/dcmrt/seq/drtics.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtidcs.h \ + ../include/dcmtk/dcmrt/seq/drtpics.h \ + ../include/dcmtk/dcmrt/seq/drtrmss2.h \ + ../include/dcmtk/dcmrt/seq/drtrshs2.h +drticps.o: drticps.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drticps.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtbldps.h \ + ../include/dcmtk/dcmrt/seq/drtiwps.h \ + ../include/dcmtk/dcmrt/seq/drtlsds1.h \ + ../include/dcmtk/dcmrt/seq/drtrmss1.h \ + ../include/dcmtk/dcmrt/seq/drtrshs1.h \ + ../include/dcmtk/dcmrt/seq/drtrdrs2.h +drtics.o: drtics.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtics.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtidcs.o: drtidcs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtidcs.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtiis.o: drtiis.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtiis.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtimage.o: drtimage.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/drtimage.h ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ + ../include/dcmtk/dcmrt/seq/drtars.h ../include/dcmtk/dcmrt/seq/drtarms.h \ + ../include/dcmtk/dcmrt/seq/drtbrs.h \ + ../include/dcmtk/dcmrt/seq/drtbrcss.h \ + ../include/dcmtk/dcmrt/seq/drtcttcs.h \ + ../include/dcmtk/dcmrt/seq/drtcsis.h \ + ../include/dcmtk/dcmrt/seq/drtcsrs.h \ + ../include/dcmtk/dcmrt/seq/drtcctus.h \ + ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \ + ../include/dcmtk/dcmrt/seq/drtidcs.h \ + ../include/dcmtk/dcmrt/seq/drtpics.h \ + ../include/dcmtk/dcmrt/seq/drtcgis.h \ + ../include/dcmtk/dcmrt/seq/drtcbars.h \ + ../include/dcmtk/dcmrt/seq/drtads.h ../include/dcmtk/dcmrt/seq/drtbas.h \ + ../include/dcmtk/dcmrt/seq/drtces.h ../include/dcmtk/dcmrt/seq/drtois.h \ + ../include/dcmtk/dcmrt/seq/drtporcs.h \ + ../include/dcmtk/dcmrt/seq/drtudis.h \ + ../include/dcmtk/dcmrt/seq/drtcsas.h \ + ../include/dcmtk/dcmrt/seq/drtdimcs.h \ + ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtds.h \ + ../include/dcmtk/dcmrt/seq/drtdss.h \ + ../include/dcmtk/dcmrt/seq/drtdspcs.h \ + ../include/dcmtk/dcmrt/seq/drteas.h \ + ../include/dcmtk/dcmrt/seq/drteblds.h \ + ../include/dcmtk/dcmrt/seq/drtdtcs.h \ + ../include/dcmtk/dcmrt/seq/drtfbdds.h \ + ../include/dcmtk/dcmrt/seq/drtpbdds.h \ + ../include/dcmtk/dcmrt/seq/drtpbdos.h ../include/dcmtk/dcmrt/seq/drtes.h \ + ../include/dcmtk/dcmrt/seq/drtas2.h ../include/dcmtk/dcmrt/seq/drtags.h \ + ../include/dcmtk/dcmrt/seq/drtblds2.h \ + ../include/dcmtk/dcmrt/seq/drtbl2.h \ + ../include/dcmtk/dcmrt/seq/drteblos.h \ + ../include/dcmtk/dcmrt/seq/drtrbdgs.h \ + ../include/dcmtk/dcmrt/seq/drtgas4.h \ + ../include/dcmtk/dcmrt/seq/drtpfms.h ../include/dcmtk/dcmrt/seq/drtfms.h \ + ../include/dcmtk/dcmrt/seq/drtfes.h ../include/dcmtk/dcmrt/seq/drtgms.h \ + ../include/dcmtk/dcmrt/seq/drtgmcs.h \ + ../include/dcmtk/dcmrt/seq/drtgpis.h \ + ../include/dcmtk/dcmrt/seq/drtipiqs.h \ + ../include/dcmtk/dcmrt/seq/drtaadcs.h \ + ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \ + ../include/dcmtk/dcmrt/seq/drthsdrs.h \ + ../include/dcmtk/dcmrt/seq/drtiis.h ../include/dcmtk/dcmrt/seq/drtians.h \ + ../include/dcmtk/dcmrt/seq/drtiais.h \ + ../include/dcmtk/dcmrt/seq/drtiseis.h \ + ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \ + ../include/dcmtk/dcmrt/seq/drtmls.h \ + ../include/dcmtk/dcmrt/seq/drtmacds.h \ + ../include/dcmtk/dcmrt/seq/drtcss.h ../include/dcmtk/dcmrt/seq/drtoas.h \ + ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtnmas.h \ + ../include/dcmtk/dcmrt/seq/drtopis.h \ + ../include/dcmtk/dcmrt/seq/drtpbcs.h \ + ../include/dcmtk/dcmrt/seq/drtpsics.h \ + ../include/dcmtk/dcmrt/seq/drtpscs.h \ + ../include/dcmtk/dcmrt/seq/drtppcs.h \ + ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \ + ../include/dcmtk/dcmrt/seq/drtcncs.h \ + ../include/dcmtk/dcmrt/seq/drtcims.h \ + ../include/dcmtk/dcmrt/seq/drtmucs.h \ + ../include/dcmtk/dcmrt/seq/drtrsos.h \ + ../include/dcmtk/dcmrt/seq/drtporis.h \ + ../include/dcmtk/dcmrt/seq/drtprsis.h \ + ../include/dcmtk/dcmrt/seq/drtpass.h \ + ../include/dcmtk/dcmrt/seq/drtpasms.h \ + ../include/dcmtk/dcmrt/seq/drtpdecs.h \ + ../include/dcmtk/dcmrt/seq/drtdias.h \ + ../include/dcmtk/dcmrt/seq/drtpdeds.h \ + ../include/dcmtk/dcmrt/seq/drtpcs.h \ + ../include/dcmtk/dcmrt/seq/drtrwvms.h \ + ../include/dcmtk/dcmrt/seq/drtqds.h \ + ../include/dcmtk/dcmrt/seq/drtrppcs.h \ + ../include/dcmtk/dcmrt/seq/drtrvcs.h \ + ../include/dcmtk/dcmrt/seq/drtrdps.h \ + ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \ + ../include/dcmtk/dcmrt/seq/drtrpphs.h \ + ../include/dcmtk/dcmrt/seq/drtdimrs.h \ + ../include/dcmtk/dcmrt/seq/drtdirs.h \ + ../include/dcmtk/dcmrt/seq/drtwrsrs.h \ + ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \ + ../include/dcmtk/dcmrt/seq/drtrps.h \ + ../include/dcmtk/dcmrt/seq/drtrppss.h \ + ../include/dcmtk/dcmrt/seq/drtrpprs.h \ + ../include/dcmtk/dcmrt/seq/drtrtps4.h \ + ../include/dcmtk/dcmrt/seq/drtrsers.h \ + ../include/dcmtk/dcmrt/seq/drtrss.h ../include/dcmtk/dcmrt/seq/drtrpis.h \ + ../include/dcmtk/dcmrt/seq/drtras.h \ + ../include/dcmtk/dcmrt/seq/drtrrpcs.h \ + ../include/dcmtk/dcmrt/seq/drtrpcs.h \ + ../include/dcmtk/dcmrt/seq/drtspcs.h \ + ../include/dcmtk/dcmrt/seq/drtrscs.h \ + ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtsis.h \ + ../include/dcmtk/dcmrt/seq/drtsins.h \ + ../include/dcmtk/dcmrt/seq/drtspgis.h \ + ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \ + ../include/dcmtk/dcmrt/seq/drtssrcs.h \ + ../include/dcmtk/dcmrt/seq/drtscris.h \ + ../include/dcmtk/dcmrt/seq/drtvls.h +drtionpl.o: drtionpl.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/drtionpl.h ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ + ../include/dcmtk/dcmrt/seq/drtbrs.h \ + ../include/dcmtk/dcmrt/seq/drtbrcss.h \ + ../include/dcmtk/dcmrt/seq/drtcttcs.h \ + ../include/dcmtk/dcmrt/seq/drtcsis.h \ + ../include/dcmtk/dcmrt/seq/drtcsrs.h \ + ../include/dcmtk/dcmrt/seq/drtcctus.h \ + ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \ + ../include/dcmtk/dcmrt/seq/drtidcs.h \ + ../include/dcmtk/dcmrt/seq/drtpics.h \ + ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \ + ../include/dcmtk/dcmrt/seq/drtois.h \ + ../include/dcmtk/dcmrt/seq/drtporcs.h \ + ../include/dcmtk/dcmrt/seq/drtudis.h \ + ../include/dcmtk/dcmrt/seq/drtcsas.h \ + ../include/dcmtk/dcmrt/seq/drtdimcs.h \ + ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \ + ../include/dcmtk/dcmrt/seq/drtdspcs.h \ + ../include/dcmtk/dcmrt/seq/drtdrs.h ../include/dcmtk/dcmrt/seq/drteas.h \ + ../include/dcmtk/dcmrt/seq/drtfgs.h ../include/dcmtk/dcmrt/seq/drtdfss.h \ + ../include/dcmtk/dcmrt/seq/drtrbs3.h \ + ../include/dcmtk/dcmrt/seq/drtdccs.h \ + ../include/dcmtk/dcmrt/seq/drtrdcks.h \ + ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtcncs.h \ + ../include/dcmtk/dcmrt/seq/drtmucs.h \ + ../include/dcmtk/dcmrt/seq/drtrsos.h \ + ../include/dcmtk/dcmrt/seq/drtrbas2.h \ + ../include/dcmtk/dcmrt/seq/drtrdrs3.h \ + ../include/dcmtk/dcmrt/seq/drtrds.h ../include/dcmtk/dcmrt/seq/drtgms.h \ + ../include/dcmtk/dcmrt/seq/drtgmcs.h \ + ../include/dcmtk/dcmrt/seq/drtgpis.h \ + ../include/dcmtk/dcmrt/seq/drtipiqs.h \ + ../include/dcmtk/dcmrt/seq/drtaadcs.h \ + ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \ + ../include/dcmtk/dcmrt/seq/drthsdrs.h \ + ../include/dcmtk/dcmrt/seq/drtibs.h ../include/dcmtk/dcmrt/seq/drtas3.h \ + ../include/dcmtk/dcmrt/seq/drtddps.h \ + ../include/dcmtk/dcmrt/seq/drtgas5.h \ + ../include/dcmtk/dcmrt/seq/drtiblds.h \ + ../include/dcmtk/dcmrt/seq/drtibls.h ../include/dcmtk/dcmrt/seq/drtbss.h \ + ../include/dcmtk/dcmrt/seq/drticps.h \ + ../include/dcmtk/dcmrt/seq/drtbldps.h \ + ../include/dcmtk/dcmrt/seq/drtiwps.h \ + ../include/dcmtk/dcmrt/seq/drtlsds1.h \ + ../include/dcmtk/dcmrt/seq/drtrmss1.h \ + ../include/dcmtk/dcmrt/seq/drtrshs1.h \ + ../include/dcmtk/dcmrt/seq/drtrdrs2.h \ + ../include/dcmtk/dcmrt/seq/drtircs.h ../include/dcmtk/dcmrt/seq/drtiws.h \ + ../include/dcmtk/dcmrt/seq/drtlsds.h ../include/dcmtk/dcmrt/seq/drtrms.h \ + ../include/dcmtk/dcmrt/seq/drtrshs.h \ + ../include/dcmtk/dcmrt/seq/drtrbos2.h \ + ../include/dcmtk/dcmrt/seq/drtrris2.h \ + ../include/dcmtk/dcmrt/seq/drtsns.h ../include/dcmtk/dcmrt/seq/drtitts.h \ + ../include/dcmtk/dcmrt/seq/drtbldts.h \ + ../include/dcmtk/dcmrt/seq/drtians.h \ + ../include/dcmtk/dcmrt/seq/drtiais.h \ + ../include/dcmtk/dcmrt/seq/drtiseis.h \ + ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \ + ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \ + ../include/dcmtk/dcmrt/seq/drtnmas.h \ + ../include/dcmtk/dcmrt/seq/drtopis.h \ + ../include/dcmtk/dcmrt/seq/drtpbcs.h ../include/dcmtk/dcmrt/seq/drtpss.h \ + ../include/dcmtk/dcmrt/seq/drtfds.h ../include/dcmtk/dcmrt/seq/drtmss.h \ + ../include/dcmtk/dcmrt/seq/drtrsis.h ../include/dcmtk/dcmrt/seq/drtsds.h \ + ../include/dcmtk/dcmrt/seq/drtshds.h \ + ../include/dcmtk/dcmrt/seq/drtpsics.h \ + ../include/dcmtk/dcmrt/seq/drtpscs.h \ + ../include/dcmtk/dcmrt/seq/drtppcs.h \ + ../include/dcmtk/dcmrt/seq/drtpcxs.h \ + ../include/dcmtk/dcmrt/seq/drtcims.h \ + ../include/dcmtk/dcmrt/seq/drtporis.h \ + ../include/dcmtk/dcmrt/seq/drtprsis.h \ + ../include/dcmtk/dcmrt/seq/drtpdecs.h \ + ../include/dcmtk/dcmrt/seq/drtdias.h \ + ../include/dcmtk/dcmrt/seq/drtpdeds.h \ + ../include/dcmtk/dcmrt/seq/drtpcs.h \ + ../include/dcmtk/dcmrt/seq/drtrppcs.h \ + ../include/dcmtk/dcmrt/seq/drtrvcs.h \ + ../include/dcmtk/dcmrt/seq/drtrdps.h \ + ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \ + ../include/dcmtk/dcmrt/seq/drtrpphs.h \ + ../include/dcmtk/dcmrt/seq/drtdimrs.h \ + ../include/dcmtk/dcmrt/seq/drtdirs.h \ + ../include/dcmtk/dcmrt/seq/drtwrsrs.h \ + ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \ + ../include/dcmtk/dcmrt/seq/drtrps.h \ + ../include/dcmtk/dcmrt/seq/drtrppss.h \ + ../include/dcmtk/dcmrt/seq/drtrpprs.h \ + ../include/dcmtk/dcmrt/seq/drtrtps2.h \ + ../include/dcmtk/dcmrt/seq/drtrsers.h \ + ../include/dcmtk/dcmrt/seq/drtrsss.h ../include/dcmtk/dcmrt/seq/drtrss.h \ + ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \ + ../include/dcmtk/dcmrt/seq/drtrrpcs.h \ + ../include/dcmtk/dcmrt/seq/drtrpcs.h \ + ../include/dcmtk/dcmrt/seq/drtspcs.h \ + ../include/dcmtk/dcmrt/seq/drtrscs.h \ + ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtsis.h \ + ../include/dcmtk/dcmrt/seq/drtsins.h \ + ../include/dcmtk/dcmrt/seq/drtspgis.h \ + ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \ + ../include/dcmtk/dcmrt/seq/drtssrcs.h \ + ../include/dcmtk/dcmrt/seq/drtscris.h \ + ../include/dcmtk/dcmrt/seq/drttscs.h +drtiontr.o: drtiontr.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/drtiontr.h ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ + ../include/dcmtk/dcmrt/seq/drtbrs.h \ + ../include/dcmtk/dcmrt/seq/drtbrcss.h \ + ../include/dcmtk/dcmrt/seq/drtcdrs.h \ + ../include/dcmtk/dcmrt/seq/drtcttcs.h \ + ../include/dcmtk/dcmrt/seq/drtcsis.h \ + ../include/dcmtk/dcmrt/seq/drtcsrs.h \ + ../include/dcmtk/dcmrt/seq/drtcctus.h \ + ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \ + ../include/dcmtk/dcmrt/seq/drtidcs.h \ + ../include/dcmtk/dcmrt/seq/drtpics.h \ + ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \ + ../include/dcmtk/dcmrt/seq/drtois.h \ + ../include/dcmtk/dcmrt/seq/drtporcs.h \ + ../include/dcmtk/dcmrt/seq/drtudis.h \ + ../include/dcmtk/dcmrt/seq/drtcsas.h \ + ../include/dcmtk/dcmrt/seq/drtdimcs.h \ + ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \ + ../include/dcmtk/dcmrt/seq/drtdspcs.h \ + ../include/dcmtk/dcmrt/seq/drteas.h ../include/dcmtk/dcmrt/seq/drtfgss.h \ + ../include/dcmtk/dcmrt/seq/drtfsss.h ../include/dcmtk/dcmrt/seq/drtgms.h \ + ../include/dcmtk/dcmrt/seq/drtgmcs.h \ + ../include/dcmtk/dcmrt/seq/drtgpis.h \ + ../include/dcmtk/dcmrt/seq/drtipiqs.h \ + ../include/dcmtk/dcmrt/seq/drtaadcs.h \ + ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \ + ../include/dcmtk/dcmrt/seq/drthsdrs.h \ + ../include/dcmtk/dcmrt/seq/drtians.h \ + ../include/dcmtk/dcmrt/seq/drtiais.h \ + ../include/dcmtk/dcmrt/seq/drtiseis.h \ + ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \ + ../include/dcmtk/dcmrt/seq/drtmdrs.h ../include/dcmtk/dcmrt/seq/drtoas.h \ + ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtnmas.h \ + ../include/dcmtk/dcmrt/seq/drtopis.h \ + ../include/dcmtk/dcmrt/seq/drtpbcs.h ../include/dcmtk/dcmrt/seq/drtpss.h \ + ../include/dcmtk/dcmrt/seq/drtfds.h ../include/dcmtk/dcmrt/seq/drtmss.h \ + ../include/dcmtk/dcmrt/seq/drtrsis.h ../include/dcmtk/dcmrt/seq/drtsds.h \ + ../include/dcmtk/dcmrt/seq/drtshds.h \ + ../include/dcmtk/dcmrt/seq/drtpsics.h \ + ../include/dcmtk/dcmrt/seq/drtpscs.h \ + ../include/dcmtk/dcmrt/seq/drtppcs.h \ ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \ ../include/dcmtk/dcmrt/seq/drtcncs.h \ ../include/dcmtk/dcmrt/seq/drtcims.h \ @@ -11389,9 +14602,9 @@ drtimage.o: drtimage.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtdias.h \ ../include/dcmtk/dcmrt/seq/drtpdeds.h \ ../include/dcmtk/dcmrt/seq/drtpcs.h \ - ../include/dcmtk/dcmrt/seq/drtrwvms.h \ - ../include/dcmtk/dcmrt/seq/drtqds.h \ ../include/dcmtk/dcmrt/seq/drtrppcs.h \ + ../include/dcmtk/dcmrt/seq/drtrvcs.h \ + ../include/dcmtk/dcmrt/seq/drtrdps.h \ ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \ ../include/dcmtk/dcmrt/seq/drtrpphs.h \ ../include/dcmtk/dcmrt/seq/drtdimrs.h \ @@ -11400,10 +14613,12 @@ drtimage.o: drtimage.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \ ../include/dcmtk/dcmrt/seq/drtrps.h \ ../include/dcmtk/dcmrt/seq/drtrppss.h \ - ../include/dcmtk/dcmrt/seq/drtrrtps5.h \ + ../include/dcmtk/dcmrt/seq/drtrpprs.h \ + ../include/dcmtk/dcmrt/seq/drtrtps3.h \ ../include/dcmtk/dcmrt/seq/drtrsers.h \ - ../include/dcmtk/dcmrt/seq/drtrss.h ../include/dcmtk/dcmrt/seq/drtrpis.h \ - ../include/dcmtk/dcmrt/seq/drtras.h \ + ../include/dcmtk/dcmrt/seq/drtrss.h \ + ../include/dcmtk/dcmrt/seq/drtrtrs2.h \ + ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \ ../include/dcmtk/dcmrt/seq/drtrrpcs.h \ ../include/dcmtk/dcmrt/seq/drtrpcs.h \ ../include/dcmtk/dcmrt/seq/drtspcs.h \ @@ -11414,17 +14629,2337 @@ drtimage.o: drtimage.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \ ../include/dcmtk/dcmrt/seq/drtssrcs.h \ ../include/dcmtk/dcmrt/seq/drtscris.h \ - ../include/dcmtk/dcmrt/seq/drtudis.h ../include/dcmtk/dcmrt/seq/drtvls.h -drtionpl.o: drtionpl.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/drtionpl.h ../include/dcmtk/dcmrt/drttypes.h \ + ../include/dcmtk/dcmrt/seq/drttms2.h \ + ../include/dcmtk/dcmrt/seq/drttsibs.h \ + ../include/dcmtk/dcmrt/seq/drtas4.h \ + ../include/dcmtk/dcmrt/seq/drtbldls.h \ + ../include/dcmtk/dcmrt/seq/drtdddps.h \ + ../include/dcmtk/dcmrt/seq/drtgas6.h \ + ../include/dcmtk/dcmrt/seq/drticpds.h \ + ../include/dcmtk/dcmrt/seq/drtbldps.h \ + ../include/dcmtk/dcmrt/seq/drtcpas.h \ + ../include/dcmtk/dcmrt/seq/drtiwps.h \ + ../include/dcmtk/dcmrt/seq/drtlsds2.h ../include/dcmtk/dcmrt/seq/drtos.h \ + ../include/dcmtk/dcmrt/seq/drtrmss2.h \ + ../include/dcmtk/dcmrt/seq/drtrshs2.h \ + ../include/dcmtk/dcmrt/seq/drtmttcs.h \ + ../include/dcmtk/dcmrt/seq/drtttrcs.h \ + ../include/dcmtk/dcmrt/seq/drtrbls.h \ + ../include/dcmtk/dcmrt/seq/drtrbss.h \ + ../include/dcmtk/dcmrt/seq/drtrcos.h \ + ../include/dcmtk/dcmrt/seq/drtrlsds.h \ + ../include/dcmtk/dcmrt/seq/drtrrms.h \ + ../include/dcmtk/dcmrt/seq/drtrrshs.h \ + ../include/dcmtk/dcmrt/seq/drtrsns.h ../include/dcmtk/dcmrt/seq/drtrws.h \ + ../include/dcmtk/dcmrt/seq/drtrbos3.h \ + ../include/dcmtk/dcmrt/seq/drtrcdrs.h \ + ../include/dcmtk/dcmrt/seq/drtrmdrs.h \ + ../include/dcmtk/dcmrt/seq/drtrvis.h \ + ../include/dcmtk/dcmrt/seq/drttscds.h \ + ../include/dcmtk/dcmrt/seq/drttsmds.h +drtipiqs.o: drtipiqs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtipiqs.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtaadcs.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtafs.h \ + ../include/dcmtk/dcmrt/seq/drtajcs.h +drtircs.o: drtircs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtircs.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtiseis.o: drtiseis.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtiseis.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtitts.o: drtitts.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtitts.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtbldts.h +drtiwps.o: drtiwps.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtiwps.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtiws.o: drtiws.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtiws.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtlsds.o: drtlsds.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtlsds.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtlsds1.o: drtlsds1.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtlsds1.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtlsds2.o: drtlsds2.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtlsds2.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtmacds.o: drtmacds.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtmacds.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtcss.h ../include/dcmtk/dcmrt/seq/drtecs.h +drtmas.o: drtmas.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtmas.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtmdrs.o: drtmdrs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtmdrs.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtmls.o: drtmls.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtmls.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtmps.o: drtmps.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtmps.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtmris.o: drtmris.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtmris.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtmss.o: drtmss.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtmss.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtmttcs.o: drtmttcs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtmttcs.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtmucs.o: drtmucs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtmucs.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtnmas.o: drtnmas.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtnmas.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtoas.o: drtoas.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtoas.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ ../../ofstd/include/dcmtk/ofstd/ofcast.h \ ../../ofstd/include/dcmtk/ofstd/ofexport.h \ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -11439,7 +16974,6 @@ drtionpl.o: drtionpl.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -11462,17 +16996,13 @@ drtionpl.o: drtionpl.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ ../../ofstd/include/dcmtk/ofstd/offile.h \ ../../ofstd/include/dcmtk/ofstd/ofstd.h \ - ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oflimits.h \ ../../config/include/dcmtk/config/arith.h \ ../../ofstd/include/dcmtk/ofstd/oferror.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -11534,108 +17064,146 @@ drtionpl.o: drtionpl.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ - ../include/dcmtk/dcmrt/seq/drtbrs.h \ - ../include/dcmtk/dcmrt/seq/drtbrcss.h \ - ../include/dcmtk/dcmrt/seq/drtcsis.h \ - ../include/dcmtk/dcmrt/seq/drtcsrs.h \ - ../include/dcmtk/dcmrt/seq/drtcctus.h \ - ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \ - ../include/dcmtk/dcmrt/seq/drtpics.h \ - ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \ + ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtnmas.h +drtois.o: drtois.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtois.h \ - ../include/dcmtk/dcmrt/seq/drtporcs.h \ - ../include/dcmtk/dcmrt/seq/drtcsas.h \ - ../include/dcmtk/dcmrt/seq/drtdimcs.h \ - ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \ - ../include/dcmtk/dcmrt/seq/drtdspcs.h \ - ../include/dcmtk/dcmrt/seq/drtdrs.h ../include/dcmtk/dcmrt/seq/drteas.h \ - ../include/dcmtk/dcmrt/seq/drtfgs.h ../include/dcmtk/dcmrt/seq/drtrbs8.h \ - ../include/dcmtk/dcmrt/seq/drtrbas8.h \ - ../include/dcmtk/dcmrt/seq/drtrdrs8.h \ - ../include/dcmtk/dcmrt/seq/drtrds.h ../include/dcmtk/dcmrt/seq/drtgms.h \ - ../include/dcmtk/dcmrt/seq/drtgmcs.h \ - ../include/dcmtk/dcmrt/seq/drtgpis.h \ - ../include/dcmtk/dcmrt/seq/drtipiqs.h \ - ../include/dcmtk/dcmrt/seq/drtaadcs.h \ - ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \ - ../include/dcmtk/dcmrt/seq/drthsdrs.h \ - ../include/dcmtk/dcmrt/seq/drtibs.h ../include/dcmtk/dcmrt/seq/drtas6.h \ - ../include/dcmtk/dcmrt/seq/drtddps.h ../include/dcmtk/dcmrt/seq/drtgas.h \ - ../include/dcmtk/dcmrt/seq/drtiblds.h \ - ../include/dcmtk/dcmrt/seq/drtibls.h ../include/dcmtk/dcmrt/seq/drtbss.h \ - ../include/dcmtk/dcmrt/seq/drticps.h \ - ../include/dcmtk/dcmrt/seq/drtbldps.h \ - ../include/dcmtk/dcmrt/seq/drtiwps.h \ - ../include/dcmtk/dcmrt/seq/drtlsds6.h \ - ../include/dcmtk/dcmrt/seq/drtrmss6.h \ - ../include/dcmtk/dcmrt/seq/drtrshs6.h \ - ../include/dcmtk/dcmrt/seq/drtrdrs6.h \ - ../include/dcmtk/dcmrt/seq/drtircs.h ../include/dcmtk/dcmrt/seq/drtiws.h \ - ../include/dcmtk/dcmrt/seq/drtlsds.h ../include/dcmtk/dcmrt/seq/drtrms.h \ - ../include/dcmtk/dcmrt/seq/drtrshs.h \ - ../include/dcmtk/dcmrt/seq/drtrbos6.h \ - ../include/dcmtk/dcmrt/seq/drtrris6.h \ - ../include/dcmtk/dcmrt/seq/drtsns.h ../include/dcmtk/dcmrt/seq/drtitts.h \ - ../include/dcmtk/dcmrt/seq/drtbldts.h \ - ../include/dcmtk/dcmrt/seq/drtians.h \ - ../include/dcmtk/dcmrt/seq/drtiais.h \ - ../include/dcmtk/dcmrt/seq/drtiseis.h \ - ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \ - ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \ - ../include/dcmtk/dcmrt/seq/drtopis.h \ - ../include/dcmtk/dcmrt/seq/drtpbcs.h ../include/dcmtk/dcmrt/seq/drtpss.h \ - ../include/dcmtk/dcmrt/seq/drtfds.h ../include/dcmtk/dcmrt/seq/drtmss.h \ - ../include/dcmtk/dcmrt/seq/drtrsis.h ../include/dcmtk/dcmrt/seq/drtsds.h \ - ../include/dcmtk/dcmrt/seq/drtshds.h \ - ../include/dcmtk/dcmrt/seq/drtpsics.h \ - ../include/dcmtk/dcmrt/seq/drtpscs.h \ - ../include/dcmtk/dcmrt/seq/drtppcs.h \ - ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \ - ../include/dcmtk/dcmrt/seq/drtcncs.h \ - ../include/dcmtk/dcmrt/seq/drtcims.h \ - ../include/dcmtk/dcmrt/seq/drtmucs.h \ - ../include/dcmtk/dcmrt/seq/drtrsos.h \ - ../include/dcmtk/dcmrt/seq/drtporis.h \ - ../include/dcmtk/dcmrt/seq/drtprsis.h \ - ../include/dcmtk/dcmrt/seq/drtpdecs.h \ - ../include/dcmtk/dcmrt/seq/drtdias.h \ - ../include/dcmtk/dcmrt/seq/drtpdeds.h \ - ../include/dcmtk/dcmrt/seq/drtpcs.h \ - ../include/dcmtk/dcmrt/seq/drtrppcs.h \ - ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \ - ../include/dcmtk/dcmrt/seq/drtrpphs.h \ - ../include/dcmtk/dcmrt/seq/drtdimrs.h \ - ../include/dcmtk/dcmrt/seq/drtdirs.h \ - ../include/dcmtk/dcmrt/seq/drtwrsrs.h \ - ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \ - ../include/dcmtk/dcmrt/seq/drtrps.h \ - ../include/dcmtk/dcmrt/seq/drtrppss.h \ - ../include/dcmtk/dcmrt/seq/drtrrtps3.h \ - ../include/dcmtk/dcmrt/seq/drtrsers.h \ - ../include/dcmtk/dcmrt/seq/drtrsss.h ../include/dcmtk/dcmrt/seq/drtrss.h \ - ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \ - ../include/dcmtk/dcmrt/seq/drtrrpcs.h \ - ../include/dcmtk/dcmrt/seq/drtrpcs.h \ - ../include/dcmtk/dcmrt/seq/drtspcs.h \ - ../include/dcmtk/dcmrt/seq/drtrscs.h \ - ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtsis.h \ - ../include/dcmtk/dcmrt/seq/drtsins.h \ - ../include/dcmtk/dcmrt/seq/drtspgis.h \ - ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \ - ../include/dcmtk/dcmrt/seq/drtssrcs.h \ - ../include/dcmtk/dcmrt/seq/drtscris.h \ - ../include/dcmtk/dcmrt/seq/drtudis.h -drtiontr.o: drtiontr.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/drtiontr.h ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ ../../ofstd/include/dcmtk/ofstd/ofcast.h \ ../../ofstd/include/dcmtk/ofstd/ofexport.h \ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ + ../../ofstd/include/dcmtk/ofstd/ofvector.h \ + ../../oflog/include/dcmtk/oflog/oflog.h \ + ../../oflog/include/dcmtk/oflog/logger.h \ + ../../oflog/include/dcmtk/oflog/config.h \ + ../../oflog/include/dcmtk/oflog/config/defines.h \ + ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \ + ../../oflog/include/dcmtk/oflog/loglevel.h \ + ../../oflog/include/dcmtk/oflog/tstring.h \ + ../../oflog/include/dcmtk/oflog/tchar.h \ + ../../oflog/include/dcmtk/oflog/spi/apndatch.h \ + ../../oflog/include/dcmtk/oflog/appender.h \ + ../../ofstd/include/dcmtk/ofstd/ofmem.h \ + ../../ofstd/include/dcmtk/ofstd/ofutil.h \ + ../../ofstd/include/dcmtk/ofstd/oftraits.h \ + ../../oflog/include/dcmtk/oflog/layout.h \ + ../../oflog/include/dcmtk/oflog/streams.h \ + ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ + ../../oflog/include/dcmtk/oflog/thread/syncprim.h \ + ../../oflog/include/dcmtk/oflog/spi/filter.h \ + ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \ + ../../oflog/include/dcmtk/oflog/spi/logfact.h \ + ../../oflog/include/dcmtk/oflog/logmacro.h \ + ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \ + ../../oflog/include/dcmtk/oflog/tracelog.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctk.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \ + ../../ofstd/include/dcmtk/ofstd/ofglobal.h \ + ../../ofstd/include/dcmtk/ofstd/ofthread.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ + ../../ofstd/include/dcmtk/ofstd/offile.h \ + ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflimits.h \ + ../../config/include/dcmtk/config/arith.h \ + ../../ofstd/include/dcmtk/ofstd/oferror.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ + ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ + ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ + ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ + ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \ + ../../dcmdata/include/dcmtk/dcmdata/dclist.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \ + ../../ofstd/include/dcmtk/ofstd/ofmap.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \ + ../../ofstd/include/dcmtk/ofstd/ofdate.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \ + ../../ofstd/include/dcmtk/ofstd/ofdatime.h \ + ../../ofstd/include/dcmtk/ofstd/oftime.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtecs.h \ + ../include/dcmtk/dcmrt/seq/drtidcs.h \ + ../include/dcmtk/dcmrt/seq/drtpics.h +drtopis.o: drtopis.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtopis.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../ofstd/include/dcmtk/ofstd/oftypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ + ../../ofstd/include/dcmtk/ofstd/ofcast.h \ + ../../ofstd/include/dcmtk/ofstd/ofexport.h \ + ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ + ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ + ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -11650,7 +17218,6 @@ drtiontr.o: drtiontr.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -11673,17 +17240,13 @@ drtiontr.o: drtiontr.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ ../../ofstd/include/dcmtk/ofstd/offile.h \ ../../ofstd/include/dcmtk/ofstd/ofstd.h \ - ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oflimits.h \ ../../config/include/dcmtk/config/arith.h \ ../../ofstd/include/dcmtk/ofstd/oferror.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -11745,106 +17308,12 @@ drtiontr.o: drtiontr.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ - ../include/dcmtk/dcmrt/seq/drtbrs.h \ - ../include/dcmtk/dcmrt/seq/drtbrcss.h \ - ../include/dcmtk/dcmrt/seq/drtcdrs.h \ - ../include/dcmtk/dcmrt/seq/drtcsis.h \ - ../include/dcmtk/dcmrt/seq/drtcsrs.h \ - ../include/dcmtk/dcmrt/seq/drtcctus.h \ - ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \ - ../include/dcmtk/dcmrt/seq/drtpics.h \ - ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \ - ../include/dcmtk/dcmrt/seq/drtois.h \ - ../include/dcmtk/dcmrt/seq/drtporcs.h \ - ../include/dcmtk/dcmrt/seq/drtcsas.h \ - ../include/dcmtk/dcmrt/seq/drtdimcs.h \ - ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \ - ../include/dcmtk/dcmrt/seq/drtdspcs.h \ - ../include/dcmtk/dcmrt/seq/drteas.h ../include/dcmtk/dcmrt/seq/drtfgss.h \ - ../include/dcmtk/dcmrt/seq/drtfsss.h ../include/dcmtk/dcmrt/seq/drtgms.h \ - ../include/dcmtk/dcmrt/seq/drtgmcs.h \ - ../include/dcmtk/dcmrt/seq/drtgpis.h \ - ../include/dcmtk/dcmrt/seq/drtipiqs.h \ - ../include/dcmtk/dcmrt/seq/drtaadcs.h \ - ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \ - ../include/dcmtk/dcmrt/seq/drthsdrs.h \ - ../include/dcmtk/dcmrt/seq/drtians.h \ - ../include/dcmtk/dcmrt/seq/drtiais.h \ - ../include/dcmtk/dcmrt/seq/drtiseis.h \ - ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \ - ../include/dcmtk/dcmrt/seq/drtmdrs.h ../include/dcmtk/dcmrt/seq/drtoas.h \ - ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtopis.h \ - ../include/dcmtk/dcmrt/seq/drtpbcs.h ../include/dcmtk/dcmrt/seq/drtpss.h \ - ../include/dcmtk/dcmrt/seq/drtfds.h ../include/dcmtk/dcmrt/seq/drtmss.h \ - ../include/dcmtk/dcmrt/seq/drtrsis.h ../include/dcmtk/dcmrt/seq/drtsds.h \ - ../include/dcmtk/dcmrt/seq/drtshds.h \ - ../include/dcmtk/dcmrt/seq/drtpsics.h \ - ../include/dcmtk/dcmrt/seq/drtpscs.h \ - ../include/dcmtk/dcmrt/seq/drtppcs.h \ - ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \ - ../include/dcmtk/dcmrt/seq/drtcncs.h \ - ../include/dcmtk/dcmrt/seq/drtcims.h \ - ../include/dcmtk/dcmrt/seq/drtmucs.h \ - ../include/dcmtk/dcmrt/seq/drtrsos.h \ - ../include/dcmtk/dcmrt/seq/drtporis.h \ - ../include/dcmtk/dcmrt/seq/drtprsis.h \ - ../include/dcmtk/dcmrt/seq/drtpdecs.h \ - ../include/dcmtk/dcmrt/seq/drtdias.h \ - ../include/dcmtk/dcmrt/seq/drtpdeds.h \ - ../include/dcmtk/dcmrt/seq/drtpcs.h \ - ../include/dcmtk/dcmrt/seq/drtrppcs.h \ - ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \ - ../include/dcmtk/dcmrt/seq/drtrpphs.h \ - ../include/dcmtk/dcmrt/seq/drtdimrs.h \ - ../include/dcmtk/dcmrt/seq/drtdirs.h \ - ../include/dcmtk/dcmrt/seq/drtwrsrs.h \ - ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \ - ../include/dcmtk/dcmrt/seq/drtrps.h \ - ../include/dcmtk/dcmrt/seq/drtrppss.h \ - ../include/dcmtk/dcmrt/seq/drtrrtps4.h \ - ../include/dcmtk/dcmrt/seq/drtrsers.h \ - ../include/dcmtk/dcmrt/seq/drtrss.h \ - ../include/dcmtk/dcmrt/seq/drtrtrs4.h \ - ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \ - ../include/dcmtk/dcmrt/seq/drtrrpcs.h \ - ../include/dcmtk/dcmrt/seq/drtrpcs.h \ - ../include/dcmtk/dcmrt/seq/drtspcs.h \ - ../include/dcmtk/dcmrt/seq/drtrscs.h \ - ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtsis.h \ - ../include/dcmtk/dcmrt/seq/drtsins.h \ - ../include/dcmtk/dcmrt/seq/drtspgis.h \ - ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \ - ../include/dcmtk/dcmrt/seq/drtssrcs.h \ - ../include/dcmtk/dcmrt/seq/drtscris.h \ - ../include/dcmtk/dcmrt/seq/drttms0.h \ - ../include/dcmtk/dcmrt/seq/drttsibs.h \ - ../include/dcmtk/dcmrt/seq/drtas7.h \ - ../include/dcmtk/dcmrt/seq/drtbldls.h \ - ../include/dcmtk/dcmrt/seq/drtdddps.h \ - ../include/dcmtk/dcmrt/seq/drtgas.h \ - ../include/dcmtk/dcmrt/seq/drticpds.h \ - ../include/dcmtk/dcmrt/seq/drtbldps.h \ - ../include/dcmtk/dcmrt/seq/drtcpas.h \ - ../include/dcmtk/dcmrt/seq/drtiwps.h \ - ../include/dcmtk/dcmrt/seq/drtlsds7.h ../include/dcmtk/dcmrt/seq/drtos.h \ - ../include/dcmtk/dcmrt/seq/drtrmss7.h \ - ../include/dcmtk/dcmrt/seq/drtrshs7.h \ - ../include/dcmtk/dcmrt/seq/drtrbls.h \ - ../include/dcmtk/dcmrt/seq/drtrcos.h \ - ../include/dcmtk/dcmrt/seq/drtrlsds.h \ - ../include/dcmtk/dcmrt/seq/drtrrms.h \ - ../include/dcmtk/dcmrt/seq/drtrrshs.h \ - ../include/dcmtk/dcmrt/seq/drtrsns.h ../include/dcmtk/dcmrt/seq/drtrws.h \ - ../include/dcmtk/dcmrt/seq/drtrbos7.h \ - ../include/dcmtk/dcmrt/seq/drtrcdrs.h \ - ../include/dcmtk/dcmrt/seq/drtrmdrs.h \ - ../include/dcmtk/dcmrt/seq/drtrvis.h \ - ../include/dcmtk/dcmrt/seq/drttscds.h \ - ../include/dcmtk/dcmrt/seq/drttsmds.h \ - ../include/dcmtk/dcmrt/seq/drtudis.h -drtipiqs.o: drtipiqs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtipiqs.h \ + ../include/dcmtk/dcmrt/seq/drtaadcs.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtafs.h \ + ../include/dcmtk/dcmrt/seq/drtajcs.h +drtos.o: drtos.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtos.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -11855,6 +17324,10 @@ drtipiqs.o: drtipiqs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -11869,7 +17342,6 @@ drtipiqs.o: drtipiqs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -11898,10 +17370,7 @@ drtipiqs.o: drtipiqs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -11963,11 +17432,11 @@ drtipiqs.o: drtipiqs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtaadcs.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtafs.h \ - ../include/dcmtk/dcmrt/seq/drtajcs.h -drtircs.o: drtircs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtircs.h \ + ../include/dcmtk/dcmrt/seq/drtois.h ../include/dcmtk/dcmrt/seq/drtics.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtidcs.h \ + ../include/dcmtk/dcmrt/seq/drtpics.h +drtosirs.o: drtosirs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtosirs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -11978,6 +17447,10 @@ drtircs.o: drtircs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -11992,7 +17465,6 @@ drtircs.o: drtircs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -12021,10 +17493,7 @@ drtircs.o: drtircs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -12086,8 +17555,8 @@ drtircs.o: drtircs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtiseis.o: drtiseis.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtiseis.h \ +drtpasms.o: drtpasms.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtpasms.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -12098,6 +17567,10 @@ drtiseis.o: drtiseis.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -12112,7 +17585,6 @@ drtiseis.o: drtiseis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -12141,10 +17613,7 @@ drtiseis.o: drtiseis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -12205,9 +17674,10 @@ drtiseis.o: drtiseis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtitts.o: drtitts.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtitts.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtpass.o: drtpass.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtpass.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -12218,6 +17688,10 @@ drtitts.o: drtitts.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -12232,7 +17706,6 @@ drtitts.o: drtitts.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -12261,10 +17734,7 @@ drtitts.o: drtitts.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -12326,9 +17796,10 @@ drtitts.o: drtitts.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtbldts.h -drtiwps.o: drtiwps.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtiwps.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h \ + ../include/dcmtk/dcmrt/seq/drtpasms.h +drtpbcs.o: drtpbcs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtpbcs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -12339,6 +17810,10 @@ drtiwps.o: drtiwps.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -12353,7 +17828,6 @@ drtiwps.o: drtiwps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -12382,10 +17856,7 @@ drtiwps.o: drtiwps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -12446,9 +17917,10 @@ drtiwps.o: drtiwps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtiws.o: drtiws.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtiws.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtpbdds.o: drtpbdds.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtpbdds.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -12459,6 +17931,10 @@ drtiws.o: drtiws.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -12473,7 +17949,6 @@ drtiws.o: drtiws.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -12502,10 +17977,7 @@ drtiws.o: drtiws.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -12566,9 +18038,11 @@ drtiws.o: drtiws.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtlsds.o: drtlsds.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtlsds.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtpbdos.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtpbdos.o: drtpbdos.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtpbdos.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -12579,6 +18053,10 @@ drtlsds.o: drtlsds.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -12593,7 +18071,6 @@ drtlsds.o: drtlsds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -12622,10 +18099,7 @@ drtlsds.o: drtlsds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -12686,9 +18160,10 @@ drtlsds.o: drtlsds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtlsds6.o: drtlsds6.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtlsds6.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtpcs.o: drtpcs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtpcs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -12699,6 +18174,10 @@ drtlsds6.o: drtlsds6.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -12713,7 +18192,6 @@ drtlsds6.o: drtlsds6.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -12742,10 +18220,7 @@ drtlsds6.o: drtlsds6.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -12806,9 +18281,10 @@ drtlsds6.o: drtlsds6.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtlsds7.o: drtlsds7.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtlsds7.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtpcxs.o: drtpcxs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtpcxs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -12819,6 +18295,10 @@ drtlsds7.o: drtlsds7.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -12833,7 +18313,6 @@ drtlsds7.o: drtlsds7.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -12862,10 +18341,7 @@ drtlsds7.o: drtlsds7.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -12926,9 +18402,14 @@ drtlsds7.o: drtlsds7.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtmacds.o: drtmacds.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtmacds.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ + ../include/dcmtk/dcmrt/seq/drtcncs.h \ + ../include/dcmtk/dcmrt/seq/drtcims.h \ + ../include/dcmtk/dcmrt/seq/drtmucs.h \ + ../include/dcmtk/dcmrt/seq/drtrsos.h +drtpdecs.o: drtpdecs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtpdecs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -12939,6 +18420,10 @@ drtmacds.o: drtmacds.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -12953,7 +18438,6 @@ drtmacds.o: drtmacds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -12982,10 +18466,7 @@ drtmacds.o: drtmacds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -13047,9 +18528,10 @@ drtmacds.o: drtmacds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtcss.h ../include/dcmtk/dcmrt/seq/drtecs.h -drtmas.o: drtmas.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtmas.h \ + ../include/dcmtk/dcmrt/seq/drtdias.h \ + ../include/dcmtk/dcmrt/seq/drtpdeds.h +drtpdeds.o: drtpdeds.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtpdeds.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -13060,6 +18542,10 @@ drtmas.o: drtmas.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -13074,7 +18560,6 @@ drtmas.o: drtmas.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -13103,10 +18588,7 @@ drtmas.o: drtmas.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -13168,8 +18650,8 @@ drtmas.o: drtmas.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtmdrs.o: drtmdrs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtmdrs.h \ +drtpfms.o: drtpfms.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtpfms.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -13180,6 +18662,10 @@ drtmdrs.o: drtmdrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -13194,7 +18680,6 @@ drtmdrs.o: drtmdrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -13223,10 +18708,7 @@ drtmdrs.o: drtmdrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -13288,8 +18770,8 @@ drtmdrs.o: drtmdrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtmls.o: drtmls.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtmls.h \ +drtpics.o: drtpics.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtpics.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -13300,6 +18782,10 @@ drtmls.o: drtmls.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -13314,7 +18800,6 @@ drtmls.o: drtmls.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -13343,10 +18828,7 @@ drtmls.o: drtmls.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -13407,19 +18889,22 @@ drtmls.o: drtmls.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtmps.o: drtmps.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtmps.h \ - ../../ofstd/include/dcmtk/ofstd/oflist.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtplan.o: drtplan.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/drtplan.h ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ ../../ofstd/include/dcmtk/ofstd/ofcast.h \ ../../ofstd/include/dcmtk/ofstd/ofexport.h \ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ ../../ofstd/include/dcmtk/ofstd/ofstream.h \ - ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -13434,7 +18919,6 @@ drtmps.o: drtmps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -13457,16 +18941,14 @@ drtmps.o: drtmps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ ../../ofstd/include/dcmtk/ofstd/offile.h \ ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oflimits.h \ ../../config/include/dcmtk/config/arith.h \ ../../ofstd/include/dcmtk/ofstd/oferror.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -13527,9 +19009,120 @@ drtmps.o: drtmps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtmris.o: drtmris.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtmris.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ + ../include/dcmtk/dcmrt/seq/drtass.h ../include/dcmtk/dcmrt/seq/drtbads.h \ + ../include/dcmtk/dcmrt/seq/drtchs.h ../include/dcmtk/dcmrt/seq/drtbcps.h \ + ../include/dcmtk/dcmrt/seq/drtbrdrs.h \ + ../include/dcmtk/dcmrt/seq/drtcshs.h \ + ../include/dcmtk/dcmrt/seq/drtrris3.h ../include/dcmtk/dcmrt/seq/drtbs.h \ + ../include/dcmtk/dcmrt/seq/drtas1.h ../include/dcmtk/dcmrt/seq/drtags.h \ + ../include/dcmtk/dcmrt/seq/drtblds1.h \ + ../include/dcmtk/dcmrt/seq/drtbl1.h ../include/dcmtk/dcmrt/seq/drtcos.h \ + ../include/dcmtk/dcmrt/seq/drtcps.h \ + ../include/dcmtk/dcmrt/seq/drtbldps.h \ + ../include/dcmtk/dcmrt/seq/drteblos.h \ + ../include/dcmtk/dcmrt/seq/drtrbdgs.h \ + ../include/dcmtk/dcmrt/seq/drtrdrs1.h \ + ../include/dcmtk/dcmrt/seq/drtbvcps.h \ + ../include/dcmtk/dcmrt/seq/drtrds.h ../include/dcmtk/dcmrt/seq/drtwps.h \ + ../include/dcmtk/dcmrt/seq/drtdfss.h \ + ../include/dcmtk/dcmrt/seq/drteblds.h \ + ../include/dcmtk/dcmrt/seq/drtdtcs.h \ + ../include/dcmtk/dcmrt/seq/drtfbdds.h \ + ../include/dcmtk/dcmrt/seq/drtpbdds.h \ + ../include/dcmtk/dcmrt/seq/drtpbdos.h \ + ../include/dcmtk/dcmrt/seq/drtudis.h \ + ../include/dcmtk/dcmrt/seq/drtgas2.h \ + ../include/dcmtk/dcmrt/seq/drtidcs.h \ + ../include/dcmtk/dcmrt/seq/drtpvis.h \ + ../include/dcmtk/dcmrt/seq/drtpfms.h \ + ../include/dcmtk/dcmrt/seq/drtrbos1.h \ + ../include/dcmtk/dcmrt/seq/drtrris1.h ../include/dcmtk/dcmrt/seq/drtws.h \ + ../include/dcmtk/dcmrt/seq/drtbrs.h \ + ../include/dcmtk/dcmrt/seq/drtbrcss.h \ + ../include/dcmtk/dcmrt/seq/drtcttcs.h \ + ../include/dcmtk/dcmrt/seq/drtcsis.h \ + ../include/dcmtk/dcmrt/seq/drtcsrs.h \ + ../include/dcmtk/dcmrt/seq/drtcctus.h \ + ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \ + ../include/dcmtk/dcmrt/seq/drtpics.h \ + ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \ + ../include/dcmtk/dcmrt/seq/drtois.h \ + ../include/dcmtk/dcmrt/seq/drtporcs.h \ + ../include/dcmtk/dcmrt/seq/drtcsas.h \ + ../include/dcmtk/dcmrt/seq/drtdimcs.h \ + ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \ + ../include/dcmtk/dcmrt/seq/drtdspcs.h \ + ../include/dcmtk/dcmrt/seq/drtdrs.h ../include/dcmtk/dcmrt/seq/drteas.h \ + ../include/dcmtk/dcmrt/seq/drtfgs.h ../include/dcmtk/dcmrt/seq/drtrbs3.h \ + ../include/dcmtk/dcmrt/seq/drtdccs.h \ + ../include/dcmtk/dcmrt/seq/drtrdcks.h \ + ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtcncs.h \ + ../include/dcmtk/dcmrt/seq/drtmucs.h \ + ../include/dcmtk/dcmrt/seq/drtrsos.h \ + ../include/dcmtk/dcmrt/seq/drtrbas2.h \ + ../include/dcmtk/dcmrt/seq/drtrdrs3.h \ + ../include/dcmtk/dcmrt/seq/drtgms.h ../include/dcmtk/dcmrt/seq/drtgmcs.h \ + ../include/dcmtk/dcmrt/seq/drtgpis.h \ + ../include/dcmtk/dcmrt/seq/drtipiqs.h \ + ../include/dcmtk/dcmrt/seq/drtaadcs.h \ + ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \ + ../include/dcmtk/dcmrt/seq/drthsdrs.h \ + ../include/dcmtk/dcmrt/seq/drtians.h \ + ../include/dcmtk/dcmrt/seq/drtiais.h \ + ../include/dcmtk/dcmrt/seq/drtiseis.h \ + ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \ + ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \ + ../include/dcmtk/dcmrt/seq/drtnmas.h \ + ../include/dcmtk/dcmrt/seq/drtopis.h \ + ../include/dcmtk/dcmrt/seq/drtpbcs.h ../include/dcmtk/dcmrt/seq/drtpss.h \ + ../include/dcmtk/dcmrt/seq/drtfds.h ../include/dcmtk/dcmrt/seq/drtmss.h \ + ../include/dcmtk/dcmrt/seq/drtrsis.h ../include/dcmtk/dcmrt/seq/drtsds.h \ + ../include/dcmtk/dcmrt/seq/drtshds.h \ + ../include/dcmtk/dcmrt/seq/drtpsics.h \ + ../include/dcmtk/dcmrt/seq/drtpscs.h \ + ../include/dcmtk/dcmrt/seq/drtppcs.h \ + ../include/dcmtk/dcmrt/seq/drtpcxs.h \ + ../include/dcmtk/dcmrt/seq/drtcims.h \ + ../include/dcmtk/dcmrt/seq/drtporis.h \ + ../include/dcmtk/dcmrt/seq/drtprsis.h \ + ../include/dcmtk/dcmrt/seq/drtpdecs.h \ + ../include/dcmtk/dcmrt/seq/drtdias.h \ + ../include/dcmtk/dcmrt/seq/drtpdeds.h \ + ../include/dcmtk/dcmrt/seq/drtpcs.h \ + ../include/dcmtk/dcmrt/seq/drtrppcs.h \ + ../include/dcmtk/dcmrt/seq/drtrvcs.h \ + ../include/dcmtk/dcmrt/seq/drtrdps.h \ + ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \ + ../include/dcmtk/dcmrt/seq/drtrpphs.h \ + ../include/dcmtk/dcmrt/seq/drtdimrs.h \ + ../include/dcmtk/dcmrt/seq/drtdirs.h \ + ../include/dcmtk/dcmrt/seq/drtwrsrs.h \ + ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \ + ../include/dcmtk/dcmrt/seq/drtrps.h \ + ../include/dcmtk/dcmrt/seq/drtrppss.h \ + ../include/dcmtk/dcmrt/seq/drtrpprs.h \ + ../include/dcmtk/dcmrt/seq/drtrtps2.h \ + ../include/dcmtk/dcmrt/seq/drtrsers.h \ + ../include/dcmtk/dcmrt/seq/drtrsss.h ../include/dcmtk/dcmrt/seq/drtrss.h \ + ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \ + ../include/dcmtk/dcmrt/seq/drtrrpcs.h \ + ../include/dcmtk/dcmrt/seq/drtrpcs.h \ + ../include/dcmtk/dcmrt/seq/drtspcs.h \ + ../include/dcmtk/dcmrt/seq/drtrscs.h \ + ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtsis.h \ + ../include/dcmtk/dcmrt/seq/drtsins.h \ + ../include/dcmtk/dcmrt/seq/drtspgis.h ../include/dcmtk/dcmrt/seq/drtss.h \ + ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \ + ../include/dcmtk/dcmrt/seq/drtssrcs.h \ + ../include/dcmtk/dcmrt/seq/drtscris.h \ + ../include/dcmtk/dcmrt/seq/drttts.h \ + ../include/dcmtk/dcmrt/seq/drtbldts.h \ + ../include/dcmtk/dcmrt/seq/drttms1.h \ + ../include/dcmtk/dcmrt/seq/drttscs.h +drtplos.o: drtplos.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtplos.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -13540,6 +19133,10 @@ drtmris.o: drtmris.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -13554,7 +19151,6 @@ drtmris.o: drtmris.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -13583,10 +19179,7 @@ drtmris.o: drtmris.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -13647,9 +19240,14 @@ drtmris.o: drtmris.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtmss.o: drtmss.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtmss.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtpros.h \ + ../include/dcmtk/dcmrt/seq/drtrims.h \ + ../include/dcmtk/dcmrt/seq/drtporcs.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtrsss.h \ + ../include/dcmtk/dcmrt/seq/drttscs.h +drtporcs.o: drtporcs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtporcs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -13660,6 +19258,10 @@ drtmss.o: drtmss.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -13674,7 +19276,6 @@ drtmss.o: drtmss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -13703,10 +19304,7 @@ drtmss.o: drtmss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -13767,9 +19365,10 @@ drtmss.o: drtmss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtmucs.o: drtmucs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtmucs.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtporis.o: drtporis.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtporis.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -13780,6 +19379,10 @@ drtmucs.o: drtmucs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -13794,7 +19397,6 @@ drtmucs.o: drtmucs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -13823,10 +19425,7 @@ drtmucs.o: drtmucs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -13888,9 +19487,11 @@ drtmucs.o: drtmucs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h -drtoas.o: drtoas.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtoas.h \ + ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtecs.h \ + ../include/dcmtk/dcmrt/seq/drtidcs.h \ + ../include/dcmtk/dcmrt/seq/drtpics.h +drtppcs.o: drtppcs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtppcs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -13901,6 +19502,10 @@ drtoas.o: drtoas.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -13915,7 +19520,6 @@ drtoas.o: drtoas.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -13944,10 +19548,7 @@ drtoas.o: drtoas.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -14009,9 +19610,13 @@ drtoas.o: drtoas.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtmas.h -drtois.o: drtois.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtois.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtpcxs.h \ + ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtcncs.h \ + ../include/dcmtk/dcmrt/seq/drtcims.h \ + ../include/dcmtk/dcmrt/seq/drtmucs.h \ + ../include/dcmtk/dcmrt/seq/drtrsos.h +drtpros.o: drtpros.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtpros.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -14022,6 +19627,10 @@ drtois.o: drtois.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -14036,7 +19645,6 @@ drtois.o: drtois.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -14065,10 +19673,7 @@ drtois.o: drtois.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -14129,11 +19734,9 @@ drtois.o: drtois.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtecs.h \ - ../include/dcmtk/dcmrt/seq/drtpics.h -drtopis.o: drtopis.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtopis.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtprsis.o: drtprsis.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtprsis.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -14144,6 +19747,10 @@ drtopis.o: drtopis.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -14158,7 +19765,6 @@ drtopis.o: drtopis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -14187,10 +19793,7 @@ drtopis.o: drtopis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -14252,12 +19855,11 @@ drtopis.o: drtopis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtipiqs.h \ - ../include/dcmtk/dcmrt/seq/drtaadcs.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtafs.h \ - ../include/dcmtk/dcmrt/seq/drtajcs.h -drtos.o: drtos.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtos.h \ + ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtecs.h \ + ../include/dcmtk/dcmrt/seq/drtidcs.h \ + ../include/dcmtk/dcmrt/seq/drtpics.h +drtpscs.o: drtpscs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtpscs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -14268,6 +19870,10 @@ drtos.o: drtos.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -14282,7 +19888,6 @@ drtos.o: drtos.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -14311,10 +19916,7 @@ drtos.o: drtos.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -14376,10 +19978,9 @@ drtos.o: drtos.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtois.h ../include/dcmtk/dcmrt/seq/drtics.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtpics.h -drtpbcs.o: drtpbcs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtpbcs.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtpsics.o: drtpsics.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtpsics.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -14390,6 +19991,10 @@ drtpbcs.o: drtpbcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -14404,7 +20009,6 @@ drtpbcs.o: drtpbcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -14433,10 +20037,7 @@ drtpbcs.o: drtpbcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -14499,8 +20100,8 @@ drtpbcs.o: drtpbcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ ../include/dcmtk/dcmrt/seq/drtecs.h -drtpcs.o: drtpcs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtpcs.h \ +drtpss.o: drtpss.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtpss.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -14511,6 +20112,10 @@ drtpcs.o: drtpcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -14525,7 +20130,6 @@ drtpcs.o: drtpcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -14554,10 +20158,7 @@ drtpcs.o: drtpcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -14619,9 +20220,11 @@ drtpcs.o: drtpcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h -drtpcxs.o: drtpcxs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtpcxs.h \ + ../include/dcmtk/dcmrt/seq/drtfds.h ../include/dcmtk/dcmrt/seq/drtmss.h \ + ../include/dcmtk/dcmrt/seq/drtrsis.h ../include/dcmtk/dcmrt/seq/drtsds.h \ + ../include/dcmtk/dcmrt/seq/drtshds.h +drtpsss.o: drtpsss.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtpsss.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -14632,6 +20235,10 @@ drtpcxs.o: drtpcxs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -14646,7 +20253,6 @@ drtpcxs.o: drtpcxs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -14675,10 +20281,7 @@ drtpcxs.o: drtpcxs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -14739,14 +20342,9 @@ drtpcxs.o: drtpcxs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ - ../include/dcmtk/dcmrt/seq/drtcncs.h \ - ../include/dcmtk/dcmrt/seq/drtcims.h \ - ../include/dcmtk/dcmrt/seq/drtmucs.h \ - ../include/dcmtk/dcmrt/seq/drtrsos.h -drtpdecs.o: drtpdecs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtpdecs.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtpvis.o: drtpvis.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtpvis.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -14757,6 +20355,10 @@ drtpdecs.o: drtpdecs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -14771,7 +20373,6 @@ drtpdecs.o: drtpdecs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -14800,10 +20401,7 @@ drtpdecs.o: drtpdecs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -14864,11 +20462,9 @@ drtpdecs.o: drtpdecs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtdias.h \ - ../include/dcmtk/dcmrt/seq/drtpdeds.h -drtpdeds.o: drtpdeds.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtpdeds.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtqds.o: drtqds.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtqds.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -14879,6 +20475,10 @@ drtpdeds.o: drtpdeds.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -14893,7 +20493,6 @@ drtpdeds.o: drtpdeds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -14922,10 +20521,7 @@ drtpdeds.o: drtpdeds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -14986,9 +20582,14 @@ drtpdeds.o: drtpdeds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtpfms.o: drtpfms.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtpfms.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ + ../include/dcmtk/dcmrt/seq/drtcncs.h \ + ../include/dcmtk/dcmrt/seq/drtcims.h \ + ../include/dcmtk/dcmrt/seq/drtmucs.h \ + ../include/dcmtk/dcmrt/seq/drtrsos.h +drtras.o: drtras.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtras.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -14999,6 +20600,10 @@ drtpfms.o: drtpfms.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -15013,7 +20618,6 @@ drtpfms.o: drtpfms.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -15042,10 +20646,7 @@ drtpfms.o: drtpfms.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -15106,9 +20707,19 @@ drtpfms.o: drtpfms.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtpics.o: drtpics.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtpics.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtians.h \ + ../include/dcmtk/dcmrt/seq/drtrrpcs.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtrss.h \ + ../include/dcmtk/dcmrt/seq/drtrpcs.h \ + ../include/dcmtk/dcmrt/seq/drtspcs.h \ + ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \ + ../include/dcmtk/dcmrt/seq/drtcncs.h \ + ../include/dcmtk/dcmrt/seq/drtcims.h \ + ../include/dcmtk/dcmrt/seq/drtmucs.h \ + ../include/dcmtk/dcmrt/seq/drtrsos.h +drtrbas1.o: drtrbas1.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrbas1.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -15119,6 +20730,10 @@ drtpics.o: drtpics.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -15133,7 +20748,6 @@ drtpics.o: drtpics.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -15162,10 +20776,7 @@ drtpics.o: drtpics.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -15226,18 +20837,23 @@ drtpics.o: drtpics.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h -drtplan.o: drtplan.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/drtplan.h ../include/dcmtk/dcmrt/drttypes.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtrbas2.o: drtrbas2.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrbas2.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ ../../ofstd/include/dcmtk/ofstd/ofcast.h \ ../../ofstd/include/dcmtk/ofstd/ofexport.h \ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -15252,7 +20868,6 @@ drtplan.o: drtplan.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -15275,17 +20890,13 @@ drtplan.o: drtplan.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ ../../ofstd/include/dcmtk/ofstd/offile.h \ ../../ofstd/include/dcmtk/ofstd/ofstd.h \ - ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oflimits.h \ ../../config/include/dcmtk/config/arith.h \ ../../ofstd/include/dcmtk/ofstd/oferror.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -15346,102 +20957,9 @@ drtplan.o: drtplan.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ - ../include/dcmtk/dcmrt/seq/drtass.h ../include/dcmtk/dcmrt/seq/drtbads.h \ - ../include/dcmtk/dcmrt/seq/drtchs.h ../include/dcmtk/dcmrt/seq/drtbcps.h \ - ../include/dcmtk/dcmrt/seq/drtbrdrs.h \ - ../include/dcmtk/dcmrt/seq/drtcshs.h \ - ../include/dcmtk/dcmrt/seq/drtrris9.h ../include/dcmtk/dcmrt/seq/drtbs.h \ - ../include/dcmtk/dcmrt/seq/drtas1.h ../include/dcmtk/dcmrt/seq/drtags.h \ - ../include/dcmtk/dcmrt/seq/drtblds1.h \ - ../include/dcmtk/dcmrt/seq/drtbl2.h ../include/dcmtk/dcmrt/seq/drtcos.h \ - ../include/dcmtk/dcmrt/seq/drtcps.h \ - ../include/dcmtk/dcmrt/seq/drtbldps.h \ - ../include/dcmtk/dcmrt/seq/drtrdrs1.h \ - ../include/dcmtk/dcmrt/seq/drtbvcps.h \ - ../include/dcmtk/dcmrt/seq/drtrds.h ../include/dcmtk/dcmrt/seq/drtwps.h \ - ../include/dcmtk/dcmrt/seq/drtgas.h ../include/dcmtk/dcmrt/seq/drtpvis.h \ - ../include/dcmtk/dcmrt/seq/drtpfms.h \ - ../include/dcmtk/dcmrt/seq/drtrbos1.h \ - ../include/dcmtk/dcmrt/seq/drtrris1.h ../include/dcmtk/dcmrt/seq/drtws.h \ - ../include/dcmtk/dcmrt/seq/drtbrs.h \ - ../include/dcmtk/dcmrt/seq/drtbrcss.h \ - ../include/dcmtk/dcmrt/seq/drtcsis.h \ - ../include/dcmtk/dcmrt/seq/drtcsrs.h \ - ../include/dcmtk/dcmrt/seq/drtcctus.h \ - ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \ - ../include/dcmtk/dcmrt/seq/drtpics.h \ - ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \ - ../include/dcmtk/dcmrt/seq/drtois.h \ - ../include/dcmtk/dcmrt/seq/drtporcs.h \ - ../include/dcmtk/dcmrt/seq/drtcsas.h \ - ../include/dcmtk/dcmrt/seq/drtdimcs.h \ - ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \ - ../include/dcmtk/dcmrt/seq/drtdspcs.h \ - ../include/dcmtk/dcmrt/seq/drtdrs.h ../include/dcmtk/dcmrt/seq/drteas.h \ - ../include/dcmtk/dcmrt/seq/drtfgs.h ../include/dcmtk/dcmrt/seq/drtrbs8.h \ - ../include/dcmtk/dcmrt/seq/drtrbas8.h \ - ../include/dcmtk/dcmrt/seq/drtrdrs8.h \ - ../include/dcmtk/dcmrt/seq/drtgms.h ../include/dcmtk/dcmrt/seq/drtgmcs.h \ - ../include/dcmtk/dcmrt/seq/drtgpis.h \ - ../include/dcmtk/dcmrt/seq/drtipiqs.h \ - ../include/dcmtk/dcmrt/seq/drtaadcs.h \ - ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \ - ../include/dcmtk/dcmrt/seq/drthsdrs.h \ - ../include/dcmtk/dcmrt/seq/drtians.h \ - ../include/dcmtk/dcmrt/seq/drtiais.h \ - ../include/dcmtk/dcmrt/seq/drtiseis.h \ - ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \ - ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \ - ../include/dcmtk/dcmrt/seq/drtopis.h \ - ../include/dcmtk/dcmrt/seq/drtpbcs.h ../include/dcmtk/dcmrt/seq/drtpss.h \ - ../include/dcmtk/dcmrt/seq/drtfds.h ../include/dcmtk/dcmrt/seq/drtmss.h \ - ../include/dcmtk/dcmrt/seq/drtrsis.h ../include/dcmtk/dcmrt/seq/drtsds.h \ - ../include/dcmtk/dcmrt/seq/drtshds.h \ - ../include/dcmtk/dcmrt/seq/drtpsics.h \ - ../include/dcmtk/dcmrt/seq/drtpscs.h \ - ../include/dcmtk/dcmrt/seq/drtppcs.h \ - ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \ - ../include/dcmtk/dcmrt/seq/drtcncs.h \ - ../include/dcmtk/dcmrt/seq/drtcims.h \ - ../include/dcmtk/dcmrt/seq/drtmucs.h \ - ../include/dcmtk/dcmrt/seq/drtrsos.h \ - ../include/dcmtk/dcmrt/seq/drtporis.h \ - ../include/dcmtk/dcmrt/seq/drtprsis.h \ - ../include/dcmtk/dcmrt/seq/drtpdecs.h \ - ../include/dcmtk/dcmrt/seq/drtdias.h \ - ../include/dcmtk/dcmrt/seq/drtpdeds.h \ - ../include/dcmtk/dcmrt/seq/drtpcs.h \ - ../include/dcmtk/dcmrt/seq/drtrppcs.h \ - ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \ - ../include/dcmtk/dcmrt/seq/drtrpphs.h \ - ../include/dcmtk/dcmrt/seq/drtdimrs.h \ - ../include/dcmtk/dcmrt/seq/drtdirs.h \ - ../include/dcmtk/dcmrt/seq/drtwrsrs.h \ - ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \ - ../include/dcmtk/dcmrt/seq/drtrps.h \ - ../include/dcmtk/dcmrt/seq/drtrppss.h \ - ../include/dcmtk/dcmrt/seq/drtrrtps3.h \ - ../include/dcmtk/dcmrt/seq/drtrsers.h \ - ../include/dcmtk/dcmrt/seq/drtrsss.h ../include/dcmtk/dcmrt/seq/drtrss.h \ - ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \ - ../include/dcmtk/dcmrt/seq/drtrrpcs.h \ - ../include/dcmtk/dcmrt/seq/drtrpcs.h \ - ../include/dcmtk/dcmrt/seq/drtspcs.h \ - ../include/dcmtk/dcmrt/seq/drtrscs.h \ - ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtsis.h \ - ../include/dcmtk/dcmrt/seq/drtsins.h \ - ../include/dcmtk/dcmrt/seq/drtspgis.h ../include/dcmtk/dcmrt/seq/drtss.h \ - ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \ - ../include/dcmtk/dcmrt/seq/drtssrcs.h \ - ../include/dcmtk/dcmrt/seq/drtscris.h \ - ../include/dcmtk/dcmrt/seq/drttts.h \ - ../include/dcmtk/dcmrt/seq/drtbldts.h \ - ../include/dcmtk/dcmrt/seq/drttms9.h \ - ../include/dcmtk/dcmrt/seq/drtudis.h -drtporcs.o: drtporcs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtporcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtrbdgs.o: drtrbdgs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrbdgs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -15452,6 +20970,10 @@ drtporcs.o: drtporcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -15466,7 +20988,6 @@ drtporcs.o: drtporcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -15495,10 +21016,7 @@ drtporcs.o: drtporcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -15559,10 +21077,9 @@ drtporcs.o: drtporcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h -drtporis.o: drtporis.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtporis.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtrbls.o: drtrbls.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrbls.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -15573,6 +21090,10 @@ drtporis.o: drtporis.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -15587,7 +21108,6 @@ drtporis.o: drtporis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -15616,10 +21136,7 @@ drtporis.o: drtporis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -15681,10 +21198,9 @@ drtporis.o: drtporis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtecs.h \ - ../include/dcmtk/dcmrt/seq/drtpics.h -drtppcs.o: drtppcs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtppcs.h \ + ../include/dcmtk/dcmrt/seq/drtrbss.h +drtrbos1.o: drtrbos1.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrbos1.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -15695,6 +21211,10 @@ drtppcs.o: drtppcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -15709,7 +21229,6 @@ drtppcs.o: drtppcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -15738,10 +21257,7 @@ drtppcs.o: drtppcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -15802,14 +21318,9 @@ drtppcs.o: drtppcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtpcxs.h \ - ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtcncs.h \ - ../include/dcmtk/dcmrt/seq/drtcims.h \ - ../include/dcmtk/dcmrt/seq/drtmucs.h \ - ../include/dcmtk/dcmrt/seq/drtrsos.h -drtprsis.o: drtprsis.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtprsis.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtrbos2.o: drtrbos2.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrbos2.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -15820,6 +21331,10 @@ drtprsis.o: drtprsis.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -15834,7 +21349,6 @@ drtprsis.o: drtprsis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -15863,10 +21377,7 @@ drtprsis.o: drtprsis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -15927,11 +21438,9 @@ drtprsis.o: drtprsis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtecs.h \ - ../include/dcmtk/dcmrt/seq/drtpics.h -drtpscs.o: drtpscs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtpscs.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtrbos3.o: drtrbos3.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrbos3.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -15942,6 +21451,10 @@ drtpscs.o: drtpscs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -15956,7 +21469,6 @@ drtpscs.o: drtpscs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -15985,10 +21497,7 @@ drtpscs.o: drtpscs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -16049,10 +21558,9 @@ drtpscs.o: drtpscs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h -drtpsics.o: drtpsics.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtpsics.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtrbs1.o: drtrbs1.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrbs1.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -16063,6 +21571,10 @@ drtpsics.o: drtpsics.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -16077,7 +21589,6 @@ drtpsics.o: drtpsics.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -16106,10 +21617,7 @@ drtpsics.o: drtpsics.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -16171,9 +21679,9 @@ drtpsics.o: drtpsics.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h -drtpss.o: drtpss.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtpss.h \ + ../include/dcmtk/dcmrt/seq/drtrcps.h +drtrbs2.o: drtrbs2.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrbs2.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -16184,6 +21692,10 @@ drtpss.o: drtpss.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -16198,7 +21710,6 @@ drtpss.o: drtpss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -16227,10 +21738,7 @@ drtpss.o: drtpss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -16292,11 +21800,14 @@ drtpss.o: drtpss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtfds.h ../include/dcmtk/dcmrt/seq/drtmss.h \ - ../include/dcmtk/dcmrt/seq/drtrsis.h ../include/dcmtk/dcmrt/seq/drtsds.h \ - ../include/dcmtk/dcmrt/seq/drtshds.h -drtpsss.o: drtpsss.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtpsss.h \ + ../include/dcmtk/dcmrt/seq/drtdccs.h \ + ../include/dcmtk/dcmrt/seq/drtrdcks.h \ + ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ + ../include/dcmtk/dcmrt/seq/drtcncs.h \ + ../include/dcmtk/dcmrt/seq/drtmucs.h \ + ../include/dcmtk/dcmrt/seq/drtrsos.h +drtrbs3.o: drtrbs3.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrbs3.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -16307,6 +21818,10 @@ drtpsss.o: drtpsss.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -16321,7 +21836,6 @@ drtpsss.o: drtpsss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -16350,10 +21864,7 @@ drtpsss.o: drtpsss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -16414,9 +21925,15 @@ drtpsss.o: drtpsss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtpvis.o: drtpvis.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtpvis.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtdccs.h \ + ../include/dcmtk/dcmrt/seq/drtrdcks.h \ + ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ + ../include/dcmtk/dcmrt/seq/drtcncs.h \ + ../include/dcmtk/dcmrt/seq/drtmucs.h \ + ../include/dcmtk/dcmrt/seq/drtrsos.h +drtrbss.o: drtrbss.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrbss.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -16427,6 +21944,10 @@ drtpvis.o: drtpvis.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -16441,7 +21962,6 @@ drtpvis.o: drtpvis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -16470,10 +21990,7 @@ drtpvis.o: drtpvis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -16535,8 +22052,8 @@ drtpvis.o: drtpvis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtqds.o: drtqds.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtqds.h \ +drtrcdrs.o: drtrcdrs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrcdrs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -16547,6 +22064,10 @@ drtqds.o: drtqds.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -16561,7 +22082,6 @@ drtqds.o: drtqds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -16590,10 +22110,7 @@ drtqds.o: drtqds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -16654,13 +22171,9 @@ drtqds.o: drtqds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ - ../include/dcmtk/dcmrt/seq/drtcncs.h \ - ../include/dcmtk/dcmrt/seq/drtmucs.h \ - ../include/dcmtk/dcmrt/seq/drtrsos.h -drtras.o: drtras.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtras.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtrcos.o: drtrcos.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrcos.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -16671,6 +22184,10 @@ drtras.o: drtras.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -16685,7 +22202,6 @@ drtras.o: drtras.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -16714,10 +22230,7 @@ drtras.o: drtras.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -16777,20 +22290,10 @@ drtras.o: drtras.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ - ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtians.h \ - ../include/dcmtk/dcmrt/seq/drtrrpcs.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtrss.h \ - ../include/dcmtk/dcmrt/seq/drtrpcs.h \ - ../include/dcmtk/dcmrt/seq/drtspcs.h \ - ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \ - ../include/dcmtk/dcmrt/seq/drtcncs.h \ - ../include/dcmtk/dcmrt/seq/drtcims.h \ - ../include/dcmtk/dcmrt/seq/drtmucs.h \ - ../include/dcmtk/dcmrt/seq/drtrsos.h -drtrbas2.o: drtrbas2.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrbas2.h \ + ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtrcps.o: drtrcps.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrcps.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -16801,6 +22304,10 @@ drtrbas2.o: drtrbas2.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -16815,7 +22322,6 @@ drtrbas2.o: drtrbas2.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -16844,10 +22350,7 @@ drtrbas2.o: drtrbas2.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -16909,8 +22412,8 @@ drtrbas2.o: drtrbas2.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrbas8.o: drtrbas8.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrbas8.h \ +drtrcs.o: drtrcs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrcs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -16921,6 +22424,10 @@ drtrbas8.o: drtrbas8.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -16935,7 +22442,6 @@ drtrbas8.o: drtrbas8.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -16964,10 +22470,7 @@ drtrbas8.o: drtrbas8.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -17028,9 +22531,11 @@ drtrbas8.o: drtrbas8.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrbls.o: drtrbls.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrbls.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtcs.h ../include/dcmtk/dcmrt/seq/drtcis.h \ + ../include/dcmtk/dcmrt/seq/drtsppcs.h +drtrdais.o: drtrdais.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrdais.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -17041,6 +22546,10 @@ drtrbls.o: drtrbls.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -17055,7 +22564,6 @@ drtrbls.o: drtrbls.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -17084,10 +22592,7 @@ drtrbls.o: drtrbls.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -17148,9 +22653,11 @@ drtrbls.o: drtrbls.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrbos1.o: drtrbos1.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrbos1.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtafcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ + ../include/dcmtk/dcmrt/seq/drtancs.h +drtrdcks.o: drtrdcks.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrdcks.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -17161,6 +22668,10 @@ drtrbos1.o: drtrbos1.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -17175,7 +22686,6 @@ drtrbos1.o: drtrbos1.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -17204,10 +22714,7 @@ drtrbos1.o: drtrbos1.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -17268,9 +22775,13 @@ drtrbos1.o: drtrbos1.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrbos6.o: drtrbos6.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrbos6.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ + ../include/dcmtk/dcmrt/seq/drtcncs.h \ + ../include/dcmtk/dcmrt/seq/drtmucs.h \ + ../include/dcmtk/dcmrt/seq/drtrsos.h +drtrdps.o: drtrdps.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrdps.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -17281,6 +22792,10 @@ drtrbos6.o: drtrbos6.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -17295,7 +22810,6 @@ drtrbos6.o: drtrbos6.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -17324,10 +22838,7 @@ drtrbos6.o: drtrbos6.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -17389,8 +22900,8 @@ drtrbos6.o: drtrbos6.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrbos7.o: drtrbos7.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrbos7.h \ +drtrdrs1.o: drtrdrs1.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrdrs1.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -17401,6 +22912,10 @@ drtrbos7.o: drtrbos7.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -17415,7 +22930,6 @@ drtrbos7.o: drtrbos7.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -17444,10 +22958,7 @@ drtrbos7.o: drtrbos7.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -17508,9 +23019,10 @@ drtrbos7.o: drtrbos7.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrbs2.o: drtrbs2.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrbs2.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtbvcps.h +drtrdrs2.o: drtrdrs2.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrdrs2.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -17521,6 +23033,10 @@ drtrbs2.o: drtrbs2.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -17535,7 +23051,6 @@ drtrbs2.o: drtrbs2.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -17564,10 +23079,7 @@ drtrbs2.o: drtrbs2.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -17628,10 +23140,9 @@ drtrbs2.o: drtrbs2.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtrcps.h -drtrbs4.o: drtrbs4.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrbs4.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtrdrs3.o: drtrdrs3.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrdrs3.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -17642,6 +23153,10 @@ drtrbs4.o: drtrbs4.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -17656,7 +23171,6 @@ drtrbs4.o: drtrbs4.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -17685,10 +23199,7 @@ drtrbs4.o: drtrbs4.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -17750,8 +23261,8 @@ drtrbs4.o: drtrbs4.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrbs8.o: drtrbs8.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrbs8.h \ +drtrds.o: drtrds.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrds.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -17762,6 +23273,10 @@ drtrbs8.o: drtrbs8.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -17776,7 +23291,6 @@ drtrbs8.o: drtrbs8.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -17805,10 +23319,7 @@ drtrbs8.o: drtrbs8.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -17870,8 +23381,8 @@ drtrbs8.o: drtrbs8.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrcdrs.o: drtrcdrs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrcdrs.h \ +drtrdsis.o: drtrdsis.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrdsis.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -17882,6 +23393,10 @@ drtrcdrs.o: drtrcdrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -17896,7 +23411,6 @@ drtrcdrs.o: drtrcdrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -17925,10 +23439,7 @@ drtrcdrs.o: drtrcdrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -17990,8 +23501,8 @@ drtrcdrs.o: drtrcdrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrcos.o: drtrcos.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrcos.h \ +drtrecs.o: drtrecs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrecs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -18002,6 +23513,10 @@ drtrcos.o: drtrcos.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -18016,7 +23531,6 @@ drtrcos.o: drtrcos.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -18045,10 +23559,7 @@ drtrcos.o: drtrcos.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -18110,8 +23621,8 @@ drtrcos.o: drtrcos.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrcps.o: drtrcps.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrcps.h \ +drtrfgs.o: drtrfgs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrfgs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -18122,6 +23633,10 @@ drtrcps.o: drtrcps.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -18136,7 +23651,6 @@ drtrcps.o: drtrcps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -18165,10 +23679,7 @@ drtrcps.o: drtrcps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -18229,9 +23740,12 @@ drtrcps.o: drtrcps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrcs.o: drtrcs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtrbs1.h \ + ../include/dcmtk/dcmrt/seq/drtrcps.h \ + ../include/dcmtk/dcmrt/seq/drtrbas1.h +drtrfors.o: drtrfors.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrfors.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -18242,6 +23756,10 @@ drtrcs.o: drtrcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -18256,7 +23774,6 @@ drtrcs.o: drtrcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -18285,10 +23802,7 @@ drtrcs.o: drtrcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -18350,9 +23864,10 @@ drtrcs.o: drtrcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtcs.h ../include/dcmtk/dcmrt/seq/drtcis.h -drtrdros.o: drtrdros.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrdros.h \ + ../include/dcmtk/dcmrt/seq/drtrsts.h \ + ../include/dcmtk/dcmrt/seq/drtrses.h ../include/dcmtk/dcmrt/seq/drtcis.h +drtrics.o: drtrics.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrics.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -18363,6 +23878,10 @@ drtrdros.o: drtrdros.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -18377,7 +23896,6 @@ drtrdros.o: drtrdros.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -18406,10 +23924,7 @@ drtrdros.o: drtrdros.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -18470,9 +23985,11 @@ drtrdros.o: drtrdros.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrdrs1.o: drtrdrs1.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrdrs1.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h \ + ../include/dcmtk/dcmrt/seq/drtsptcs.h +drtrims.o: drtrims.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrims.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -18483,6 +24000,10 @@ drtrdrs1.o: drtrdrs1.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -18497,7 +24018,6 @@ drtrdrs1.o: drtrdrs1.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -18526,10 +24046,7 @@ drtrdrs1.o: drtrdrs1.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -18591,9 +24108,10 @@ drtrdrs1.o: drtrdrs1.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtbvcps.h -drtrdrs6.o: drtrdrs6.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrdrs6.h \ + ../include/dcmtk/dcmrt/seq/drtporcs.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtris.o: drtris.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtris.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -18604,6 +24122,10 @@ drtrdrs6.o: drtrdrs6.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -18618,7 +24140,6 @@ drtrdrs6.o: drtrdrs6.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -18647,10 +24168,7 @@ drtrdrs6.o: drtrdrs6.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -18711,9 +24229,11 @@ drtrdrs6.o: drtrdrs6.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrdrs8.o: drtrdrs8.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrdrs8.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtporcs.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtrlsds.o: drtrlsds.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrlsds.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -18724,6 +24244,10 @@ drtrdrs8.o: drtrdrs8.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -18738,7 +24262,6 @@ drtrdrs8.o: drtrdrs8.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -18767,10 +24290,7 @@ drtrdrs8.o: drtrdrs8.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -18832,8 +24352,8 @@ drtrdrs8.o: drtrdrs8.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrds.o: drtrds.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrds.h \ +drtrmdrs.o: drtrmdrs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrmdrs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -18844,6 +24364,10 @@ drtrds.o: drtrds.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -18858,7 +24382,6 @@ drtrds.o: drtrds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -18887,10 +24410,7 @@ drtrds.o: drtrds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -18952,8 +24472,8 @@ drtrds.o: drtrds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrecs.o: drtrecs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrecs.h \ +drtrms.o: drtrms.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrms.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -18964,6 +24484,10 @@ drtrecs.o: drtrecs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -18978,7 +24502,6 @@ drtrecs.o: drtrecs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -19007,10 +24530,7 @@ drtrecs.o: drtrecs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -19072,8 +24592,8 @@ drtrecs.o: drtrecs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrfgs.o: drtrfgs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrfgs.h \ +drtrmss1.o: drtrmss1.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrmss1.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -19084,6 +24604,10 @@ drtrfgs.o: drtrfgs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -19098,7 +24622,6 @@ drtrfgs.o: drtrfgs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -19127,10 +24650,7 @@ drtrfgs.o: drtrfgs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -19191,12 +24711,9 @@ drtrfgs.o: drtrfgs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtrbs2.h \ - ../include/dcmtk/dcmrt/seq/drtrcps.h \ - ../include/dcmtk/dcmrt/seq/drtrbas2.h -drtrfors.o: drtrfors.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrfors.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtrmss2.o: drtrmss2.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrmss2.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -19207,6 +24724,10 @@ drtrfors.o: drtrfors.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -19221,7 +24742,6 @@ drtrfors.o: drtrfors.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -19250,10 +24770,7 @@ drtrfors.o: drtrfors.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -19314,11 +24831,9 @@ drtrfors.o: drtrfors.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtrsts.h \ - ../include/dcmtk/dcmrt/seq/drtrses.h ../include/dcmtk/dcmrt/seq/drtcis.h -drtrics.o: drtrics.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrics.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtrpcs.o: drtrpcs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrpcs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -19329,6 +24844,10 @@ drtrics.o: drtrics.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -19343,7 +24862,6 @@ drtrics.o: drtrics.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -19372,10 +24890,7 @@ drtrics.o: drtrics.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -19437,10 +24952,9 @@ drtrics.o: drtrics.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h \ - ../include/dcmtk/dcmrt/seq/drtsptcs.h -drtrims.o: drtrims.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrims.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtrpis.o: drtrpis.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrpis.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -19451,6 +24965,10 @@ drtrims.o: drtrims.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -19465,7 +24983,6 @@ drtrims.o: drtrims.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -19494,10 +25011,7 @@ drtrims.o: drtrims.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -19559,10 +25073,11 @@ drtrims.o: drtrims.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtporcs.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h -drtris.o: drtris.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtris.h \ + ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtecs.h \ + ../include/dcmtk/dcmrt/seq/drtidcs.h \ + ../include/dcmtk/dcmrt/seq/drtpics.h +drtrppcs.o: drtrppcs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrppcs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -19573,6 +25088,10 @@ drtris.o: drtris.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -19587,7 +25106,6 @@ drtris.o: drtris.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -19616,10 +25134,7 @@ drtris.o: drtris.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -19681,10 +25196,9 @@ drtris.o: drtris.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtporcs.h \ ../include/dcmtk/dcmrt/seq/drtecs.h -drtrlsds.o: drtrlsds.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrlsds.h \ +drtrpphs.o: drtrpphs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrpphs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -19695,6 +25209,10 @@ drtrlsds.o: drtrlsds.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -19709,7 +25227,6 @@ drtrlsds.o: drtrlsds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -19738,10 +25255,7 @@ drtrlsds.o: drtrlsds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -19802,9 +25316,14 @@ drtrlsds.o: drtrlsds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrmdrs.o: drtrmdrs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrmdrs.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtdimrs.h \ + ../include/dcmtk/dcmrt/seq/drtdirs.h \ + ../include/dcmtk/dcmrt/seq/drtrsos.h \ + ../include/dcmtk/dcmrt/seq/drtwrsrs.h \ + ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h +drtrpprs.o: drtrpprs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrpprs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -19815,6 +25334,10 @@ drtrmdrs.o: drtrmdrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -19829,7 +25352,6 @@ drtrmdrs.o: drtrmdrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -19858,10 +25380,7 @@ drtrmdrs.o: drtrmdrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -19923,8 +25442,8 @@ drtrmdrs.o: drtrmdrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrms.o: drtrms.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrms.h \ +drtrpps.o: drtrpps.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrpps.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -19935,6 +25454,10 @@ drtrms.o: drtrms.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -19949,7 +25472,6 @@ drtrms.o: drtrms.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -19978,10 +25500,7 @@ drtrms.o: drtrms.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -20042,9 +25561,10 @@ drtrms.o: drtrms.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrmss6.o: drtrmss6.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrmss6.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtrecs.h +drtrppss.o: drtrppss.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrppss.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -20055,6 +25575,10 @@ drtrmss6.o: drtrmss6.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -20069,7 +25593,6 @@ drtrmss6.o: drtrmss6.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -20098,10 +25621,7 @@ drtrmss6.o: drtrmss6.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -20163,8 +25683,8 @@ drtrmss6.o: drtrmss6.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrmss7.o: drtrmss7.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrmss7.h \ +drtrps.o: drtrps.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrps.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -20175,6 +25695,10 @@ drtrmss7.o: drtrmss7.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -20189,7 +25713,6 @@ drtrmss7.o: drtrmss7.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -20218,10 +25741,7 @@ drtrmss7.o: drtrmss7.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -20283,8 +25803,8 @@ drtrmss7.o: drtrmss7.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrpcs.o: drtrpcs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrpcs.h \ +drtrris1.o: drtrris1.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrris1.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -20295,6 +25815,10 @@ drtrpcs.o: drtrpcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -20309,7 +25833,6 @@ drtrpcs.o: drtrpcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -20338,10 +25861,7 @@ drtrpcs.o: drtrpcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -20402,10 +25922,9 @@ drtrpcs.o: drtrpcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h -drtrpis.o: drtrpis.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrpis.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtrris2.o: drtrris2.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrris2.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -20416,6 +25935,10 @@ drtrpis.o: drtrpis.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -20430,7 +25953,6 @@ drtrpis.o: drtrpis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -20459,10 +25981,7 @@ drtrpis.o: drtrpis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -20523,11 +26042,9 @@ drtrpis.o: drtrpis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtecs.h \ - ../include/dcmtk/dcmrt/seq/drtpics.h -drtrppcs.o: drtrppcs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrppcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtrris3.o: drtrris3.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrris3.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -20538,6 +26055,10 @@ drtrppcs.o: drtrppcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -20552,7 +26073,6 @@ drtrppcs.o: drtrppcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -20581,10 +26101,7 @@ drtrppcs.o: drtrppcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -20645,10 +26162,9 @@ drtrppcs.o: drtrppcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h -drtrpphs.o: drtrpphs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrpphs.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtrrms.o: drtrrms.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrrms.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -20659,6 +26175,10 @@ drtrpphs.o: drtrpphs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -20673,7 +26193,6 @@ drtrpphs.o: drtrpphs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -20702,10 +26221,7 @@ drtrpphs.o: drtrpphs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -20766,14 +26282,9 @@ drtrpphs.o: drtrpphs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtdimrs.h \ - ../include/dcmtk/dcmrt/seq/drtdirs.h \ - ../include/dcmtk/dcmrt/seq/drtrsos.h \ - ../include/dcmtk/dcmrt/seq/drtwrsrs.h \ - ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h -drtrpps.o: drtrpps.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrpps.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtrros.o: drtrros.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrros.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -20784,6 +26295,10 @@ drtrpps.o: drtrpps.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -20798,7 +26313,6 @@ drtrpps.o: drtrpps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -20827,10 +26341,7 @@ drtrpps.o: drtrpps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -20892,9 +26403,20 @@ drtrpps.o: drtrpps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtrecs.h -drtrppss.o: drtrppss.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrppss.h \ + ../include/dcmtk/dcmrt/seq/drtars.h ../include/dcmtk/dcmrt/seq/drtarms.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtpass.h \ + ../include/dcmtk/dcmrt/seq/drtpasms.h \ + ../include/dcmtk/dcmrt/seq/drtrpps.h \ + ../include/dcmtk/dcmrt/seq/drtrecs.h \ + ../include/dcmtk/dcmrt/seq/drtrics.h \ + ../include/dcmtk/dcmrt/seq/drtsptcs.h \ + ../include/dcmtk/dcmrt/seq/drtrrs.h \ + ../include/dcmtk/dcmrt/seq/drtrrros.h \ + ../include/dcmtk/dcmrt/seq/drtspccs.h \ + ../include/dcmtk/dcmrt/seq/drttrccs.h \ + ../include/dcmtk/dcmrt/seq/drttrtcs.h +drtrrpcs.o: drtrrpcs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrrpcs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -20905,6 +26427,10 @@ drtrppss.o: drtrppss.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -20919,7 +26445,6 @@ drtrppss.o: drtrppss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -20948,10 +26473,7 @@ drtrppss.o: drtrppss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -21012,9 +26534,10 @@ drtrppss.o: drtrppss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrps.o: drtrps.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrps.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtrrros.o: drtrrros.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrrros.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -21025,6 +26548,10 @@ drtrps.o: drtrps.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -21039,7 +26566,6 @@ drtrps.o: drtrps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -21068,10 +26594,7 @@ drtrps.o: drtrps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -21133,8 +26656,8 @@ drtrps.o: drtrps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrris1.o: drtrris1.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrris1.h \ +drtrrs.o: drtrrs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrrs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -21145,6 +26668,10 @@ drtrris1.o: drtrris1.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -21159,7 +26686,6 @@ drtrris1.o: drtrris1.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -21188,10 +26714,7 @@ drtrris1.o: drtrris1.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -21253,8 +26776,8 @@ drtrris1.o: drtrris1.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrris6.o: drtrris6.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrris6.h \ +drtrrshs.o: drtrrshs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrrshs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -21265,6 +26788,10 @@ drtrris6.o: drtrris6.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -21279,7 +26806,6 @@ drtrris6.o: drtrris6.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -21308,10 +26834,7 @@ drtrris6.o: drtrris6.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -21373,8 +26896,8 @@ drtrris6.o: drtrris6.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrris9.o: drtrris9.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrris9.h \ +drtrscs.o: drtrscs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrscs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -21385,6 +26908,10 @@ drtrris9.o: drtrris9.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -21399,7 +26926,6 @@ drtrris9.o: drtrris9.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -21428,10 +26954,7 @@ drtrris9.o: drtrris9.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -21492,9 +27015,10 @@ drtrris9.o: drtrris9.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrrms.o: drtrrms.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrrms.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtrsers.o: drtrsers.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrsers.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -21505,6 +27029,10 @@ drtrrms.o: drtrrms.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -21519,7 +27047,6 @@ drtrrms.o: drtrrms.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -21548,10 +27075,7 @@ drtrrms.o: drtrrms.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -21612,9 +27136,12 @@ drtrrms.o: drtrrms.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrros.o: drtrros.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrros.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtris.h \ + ../include/dcmtk/dcmrt/seq/drtporcs.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtrses.o: drtrses.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrses.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -21625,6 +27152,10 @@ drtrros.o: drtrros.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -21639,7 +27170,6 @@ drtrros.o: drtrros.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -21668,10 +27198,7 @@ drtrros.o: drtrros.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -21733,15 +27260,9 @@ drtrros.o: drtrros.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtrpps.h \ - ../include/dcmtk/dcmrt/seq/drtrecs.h \ - ../include/dcmtk/dcmrt/seq/drtrics.h ../include/dcmtk/dcmrt/seq/drtecs.h \ - ../include/dcmtk/dcmrt/seq/drtsptcs.h \ - ../include/dcmtk/dcmrt/seq/drtrrs.h \ - ../include/dcmtk/dcmrt/seq/drtrrros.h \ - ../include/dcmtk/dcmrt/seq/drtspccs.h -drtrrpcs.o: drtrrpcs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrrpcs.h \ + ../include/dcmtk/dcmrt/seq/drtcis.h +drtrshs.o: drtrshs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrshs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -21752,6 +27273,10 @@ drtrrpcs.o: drtrrpcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -21766,7 +27291,6 @@ drtrrpcs.o: drtrrpcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -21795,10 +27319,7 @@ drtrrpcs.o: drtrrpcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -21859,10 +27380,9 @@ drtrrpcs.o: drtrrpcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h -drtrrros.o: drtrrros.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrrros.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtrshs1.o: drtrshs1.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrshs1.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -21873,6 +27393,10 @@ drtrrros.o: drtrrros.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -21887,7 +27411,6 @@ drtrrros.o: drtrrros.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -21916,10 +27439,7 @@ drtrrros.o: drtrrros.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -21981,8 +27501,8 @@ drtrrros.o: drtrrros.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrrs.o: drtrrs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrrs.h \ +drtrshs2.o: drtrshs2.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrshs2.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -21993,6 +27513,10 @@ drtrrs.o: drtrrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -22007,7 +27531,6 @@ drtrrs.o: drtrrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -22036,10 +27559,7 @@ drtrrs.o: drtrrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -22101,8 +27621,8 @@ drtrrs.o: drtrrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrrshs.o: drtrrshs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrrshs.h \ +drtrsis.o: drtrsis.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrsis.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -22113,6 +27633,10 @@ drtrrshs.o: drtrrshs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -22127,7 +27651,6 @@ drtrrshs.o: drtrrshs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -22156,10 +27679,7 @@ drtrrshs.o: drtrrshs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -22221,8 +27741,8 @@ drtrrshs.o: drtrrshs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrrtps.o: drtrrtps.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrrtps.h \ +drtrsns.o: drtrsns.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrsns.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -22233,6 +27753,10 @@ drtrrtps.o: drtrrtps.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -22247,7 +27771,6 @@ drtrrtps.o: drtrrtps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -22276,10 +27799,7 @@ drtrrtps.o: drtrrtps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -22340,13 +27860,9 @@ drtrrtps.o: drtrrtps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtrfgs.h \ - ../include/dcmtk/dcmrt/seq/drtrbs2.h \ - ../include/dcmtk/dcmrt/seq/drtrcps.h \ - ../include/dcmtk/dcmrt/seq/drtrbas2.h -drtrrtps3.o: drtrrtps3.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrrtps3.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtrsos.o: drtrsos.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrsos.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -22357,6 +27873,10 @@ drtrrtps3.o: drtrrtps3.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -22371,7 +27891,6 @@ drtrrtps3.o: drtrrtps3.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -22400,10 +27919,7 @@ drtrrtps3.o: drtrrtps3.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -22465,8 +27981,8 @@ drtrrtps3.o: drtrrtps3.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrrtps4.o: drtrrtps4.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrrtps4.h \ +drtrsrs.o: drtrsrs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrsrs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -22477,6 +27993,10 @@ drtrrtps4.o: drtrrtps4.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -22491,7 +28011,6 @@ drtrrtps4.o: drtrrtps4.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -22520,10 +28039,7 @@ drtrrtps4.o: drtrrtps4.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -22585,8 +28101,8 @@ drtrrtps4.o: drtrrtps4.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrrtps5.o: drtrrtps5.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrrtps5.h \ +drtrss.o: drtrss.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrss.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -22597,6 +28113,10 @@ drtrrtps5.o: drtrrtps5.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -22611,7 +28131,6 @@ drtrrtps5.o: drtrrtps5.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -22640,10 +28159,7 @@ drtrrtps5.o: drtrrtps5.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -22705,8 +28221,8 @@ drtrrtps5.o: drtrrtps5.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrscs.o: drtrscs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrscs.h \ +drtrsss.o: drtrsss.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrsss.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -22717,6 +28233,10 @@ drtrscs.o: drtrscs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -22731,7 +28251,6 @@ drtrscs.o: drtrscs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -22760,10 +28279,7 @@ drtrscs.o: drtrscs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -22824,10 +28340,9 @@ drtrscs.o: drtrscs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h -drtrsers.o: drtrsers.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrsers.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtrsts.o: drtrsts.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrsts.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -22838,6 +28353,10 @@ drtrsers.o: drtrsers.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -22852,7 +28371,6 @@ drtrsers.o: drtrsers.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -22881,10 +28399,7 @@ drtrsers.o: drtrsers.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -22946,11 +28461,9 @@ drtrsers.o: drtrsers.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtris.h \ - ../include/dcmtk/dcmrt/seq/drtporcs.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h -drtrses.o: drtrses.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrses.h \ + ../include/dcmtk/dcmrt/seq/drtrses.h ../include/dcmtk/dcmrt/seq/drtcis.h +drtrtps1.o: drtrtps1.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrtps1.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -22961,6 +28474,10 @@ drtrses.o: drtrses.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -22975,7 +28492,6 @@ drtrses.o: drtrses.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -23004,10 +28520,7 @@ drtrses.o: drtrses.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -23069,9 +28582,12 @@ drtrses.o: drtrses.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtcis.h -drtrshs.o: drtrshs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrshs.h \ + ../include/dcmtk/dcmrt/seq/drtrfgs.h \ + ../include/dcmtk/dcmrt/seq/drtrbs1.h \ + ../include/dcmtk/dcmrt/seq/drtrcps.h \ + ../include/dcmtk/dcmrt/seq/drtrbas1.h +drtrtps2.o: drtrtps2.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrtps2.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -23082,6 +28598,10 @@ drtrshs.o: drtrshs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -23096,7 +28616,6 @@ drtrshs.o: drtrshs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -23125,10 +28644,7 @@ drtrshs.o: drtrshs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -23190,8 +28706,8 @@ drtrshs.o: drtrshs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrshs6.o: drtrshs6.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrshs6.h \ +drtrtps3.o: drtrtps3.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrtps3.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -23202,6 +28718,10 @@ drtrshs6.o: drtrshs6.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -23216,7 +28736,6 @@ drtrshs6.o: drtrshs6.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -23245,10 +28764,7 @@ drtrshs6.o: drtrshs6.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -23310,8 +28826,8 @@ drtrshs6.o: drtrshs6.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrshs7.o: drtrshs7.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrshs7.h \ +drtrtps4.o: drtrtps4.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrtps4.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -23322,6 +28838,10 @@ drtrshs7.o: drtrshs7.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -23336,7 +28856,6 @@ drtrshs7.o: drtrshs7.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -23365,10 +28884,7 @@ drtrshs7.o: drtrshs7.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -23430,8 +28946,8 @@ drtrshs7.o: drtrshs7.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrsis.o: drtrsis.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrsis.h \ +drtrtrs1.o: drtrtrs1.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrtrs1.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -23442,6 +28958,10 @@ drtrsis.o: drtrsis.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -23456,7 +28976,6 @@ drtrsis.o: drtrsis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -23485,10 +29004,7 @@ drtrsis.o: drtrsis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -23549,9 +29065,11 @@ drtrsis.o: drtrsis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrsns.o: drtrsns.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrsns.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtrbs1.h \ + ../include/dcmtk/dcmrt/seq/drtrcps.h +drtrtrs2.o: drtrtrs2.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrtrs2.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -23562,6 +29080,10 @@ drtrsns.o: drtrsns.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -23576,7 +29098,6 @@ drtrsns.o: drtrsns.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -23605,10 +29126,7 @@ drtrsns.o: drtrsns.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -23670,8 +29188,8 @@ drtrsns.o: drtrsns.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrsos.o: drtrsos.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrsos.h \ +drtrvcs.o: drtrvcs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrvcs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -23682,6 +29200,10 @@ drtrsos.o: drtrsos.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -23696,7 +29218,6 @@ drtrsos.o: drtrsos.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -23725,10 +29246,7 @@ drtrsos.o: drtrsos.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -23789,9 +29307,10 @@ drtrsos.o: drtrsos.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrsrs.o: drtrsrs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrsrs.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtrvis.o: drtrvis.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrvis.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -23802,6 +29321,10 @@ drtrsrs.o: drtrsrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -23816,7 +29339,6 @@ drtrsrs.o: drtrsrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -23845,10 +29367,7 @@ drtrsrs.o: drtrsrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -23910,8 +29429,8 @@ drtrsrs.o: drtrsrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrss.o: drtrss.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrss.h \ +drtrws.o: drtrws.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrws.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -23922,6 +29441,10 @@ drtrss.o: drtrss.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -23936,7 +29459,6 @@ drtrss.o: drtrss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -23965,10 +29487,7 @@ drtrss.o: drtrss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -24030,8 +29549,8 @@ drtrss.o: drtrss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrsss.o: drtrsss.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrsss.h \ +drtrwvms.o: drtrwvms.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtrwvms.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -24042,6 +29561,10 @@ drtrsss.o: drtrsss.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -24056,7 +29579,6 @@ drtrsss.o: drtrsss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -24085,10 +29607,7 @@ drtrsss.o: drtrsss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -24149,9 +29668,14 @@ drtrsss.o: drtrsss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrsts.o: drtrsts.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrsts.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtmucs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ + ../include/dcmtk/dcmrt/seq/drtqds.h ../include/dcmtk/dcmrt/seq/drtccs.h \ + ../include/dcmtk/dcmrt/seq/drtcncs.h \ + ../include/dcmtk/dcmrt/seq/drtcims.h \ + ../include/dcmtk/dcmrt/seq/drtrsos.h +drtscris.o: drtscris.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtscris.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -24162,6 +29686,10 @@ drtrsts.o: drtrsts.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -24176,7 +29704,6 @@ drtrsts.o: drtrsts.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -24205,10 +29732,7 @@ drtrsts.o: drtrsts.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -24270,9 +29794,12 @@ drtrsts.o: drtrsts.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtrses.h ../include/dcmtk/dcmrt/seq/drtcis.h -drtrtrs2.o: drtrtrs2.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrtrs2.h \ + ../include/dcmtk/dcmrt/seq/drtrsers.h \ + ../include/dcmtk/dcmrt/seq/drtris.h \ + ../include/dcmtk/dcmrt/seq/drtporcs.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtscs.o: drtscs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtscs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -24283,6 +29810,10 @@ drtrtrs2.o: drtrtrs2.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -24297,7 +29828,6 @@ drtrtrs2.o: drtrtrs2.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -24326,10 +29856,7 @@ drtrtrs2.o: drtrtrs2.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -24391,10 +29918,9 @@ drtrtrs2.o: drtrtrs2.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtrbs2.h \ - ../include/dcmtk/dcmrt/seq/drtrcps.h -drtrtrs4.o: drtrtrs4.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrtrs4.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtscvs.o: drtscvs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtscvs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -24405,6 +29931,10 @@ drtrtrs4.o: drtrtrs4.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -24419,7 +29949,6 @@ drtrtrs4.o: drtrtrs4.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -24448,10 +29977,7 @@ drtrtrs4.o: drtrtrs4.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -24512,9 +30038,11 @@ drtrtrs4.o: drtrtrs4.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrvis.o: drtrvis.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrvis.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtcvcss.h \ + ../include/dcmtk/dcmrt/seq/drtrdsis.h +drtsdcs.o: drtsdcs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtsdcs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -24525,6 +30053,10 @@ drtrvis.o: drtrvis.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -24539,7 +30071,6 @@ drtrvis.o: drtrvis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -24568,10 +30099,7 @@ drtrvis.o: drtrvis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -24632,9 +30160,10 @@ drtrvis.o: drtrvis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrws.o: drtrws.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrws.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtsds.o: drtsds.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtsds.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -24645,6 +30174,10 @@ drtrws.o: drtrws.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -24659,7 +30192,6 @@ drtrws.o: drtrws.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -24688,10 +30220,7 @@ drtrws.o: drtrws.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -24753,8 +30282,8 @@ drtrws.o: drtrws.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtrwvms.o: drtrwvms.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtrwvms.h \ +drtshds.o: drtshds.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtshds.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -24765,6 +30294,10 @@ drtrwvms.o: drtrwvms.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -24779,7 +30312,6 @@ drtrwvms.o: drtrwvms.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -24808,10 +30340,7 @@ drtrwvms.o: drtrwvms.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -24872,13 +30401,9 @@ drtrwvms.o: drtrwvms.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtmucs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ - ../include/dcmtk/dcmrt/seq/drtqds.h ../include/dcmtk/dcmrt/seq/drtccs.h \ - ../include/dcmtk/dcmrt/seq/drtcncs.h \ - ../include/dcmtk/dcmrt/seq/drtrsos.h -drtscris.o: drtscris.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtscris.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtsins.o: drtsins.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtsins.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -24889,6 +30414,10 @@ drtscris.o: drtscris.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -24903,7 +30432,6 @@ drtscris.o: drtscris.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -24932,10 +30460,7 @@ drtscris.o: drtscris.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -24997,12 +30522,10 @@ drtscris.o: drtscris.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtrsers.h \ - ../include/dcmtk/dcmrt/seq/drtris.h \ ../include/dcmtk/dcmrt/seq/drtporcs.h \ ../include/dcmtk/dcmrt/seq/drtecs.h -drtscs.o: drtscs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtscs.h \ +drtsis.o: drtsis.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtsis.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -25013,6 +30536,10 @@ drtscs.o: drtscs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -25027,7 +30554,6 @@ drtscs.o: drtscs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -25056,10 +30582,7 @@ drtscs.o: drtscs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -25121,9 +30644,10 @@ drtscs.o: drtscs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtporcs.h \ ../include/dcmtk/dcmrt/seq/drtecs.h -drtsdcs.o: drtsdcs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtsdcs.h \ +drtsns.o: drtsns.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtsns.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -25134,6 +30658,10 @@ drtsdcs.o: drtsdcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -25148,7 +30676,6 @@ drtsdcs.o: drtsdcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -25177,10 +30704,7 @@ drtsdcs.o: drtsdcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -25241,10 +30765,9 @@ drtsdcs.o: drtsdcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h -drtsds.o: drtsds.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtsds.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtspccs.o: drtspccs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtspccs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -25255,6 +30778,10 @@ drtsds.o: drtsds.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -25269,7 +30796,6 @@ drtsds.o: drtsds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -25298,10 +30824,7 @@ drtsds.o: drtsds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -25362,9 +30885,10 @@ drtsds.o: drtsds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtshds.o: drtshds.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtshds.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtspcs.o: drtspcs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtspcs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -25375,6 +30899,10 @@ drtshds.o: drtshds.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -25389,7 +30917,6 @@ drtshds.o: drtshds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -25418,10 +30945,7 @@ drtshds.o: drtshds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -25482,9 +31006,14 @@ drtshds.o: drtshds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtsins.o: drtsins.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtsins.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtpcxs.h \ + ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtcncs.h \ + ../include/dcmtk/dcmrt/seq/drtcims.h \ + ../include/dcmtk/dcmrt/seq/drtmucs.h \ + ../include/dcmtk/dcmrt/seq/drtrsos.h +drtspgis.o: drtspgis.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtspgis.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -25495,6 +31024,10 @@ drtsins.o: drtsins.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -25509,7 +31042,6 @@ drtsins.o: drtsins.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -25538,10 +31070,7 @@ drtsins.o: drtsins.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -25603,10 +31132,12 @@ drtsins.o: drtsins.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtporcs.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h -drtsis.o: drtsis.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtsis.h \ + ../include/dcmtk/dcmrt/seq/drtipiqs.h \ + ../include/dcmtk/dcmrt/seq/drtaadcs.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtafs.h \ + ../include/dcmtk/dcmrt/seq/drtajcs.h +drtsppcs.o: drtsppcs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtsppcs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -25617,6 +31148,10 @@ drtsis.o: drtsis.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -25631,7 +31166,6 @@ drtsis.o: drtsis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -25660,10 +31194,7 @@ drtsis.o: drtsis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -25724,11 +31255,9 @@ drtsis.o: drtsis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtporcs.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h -drtsns.o: drtsns.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtsns.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtsptcs.o: drtsptcs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtsptcs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -25739,6 +31268,10 @@ drtsns.o: drtsns.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -25753,7 +31286,6 @@ drtsns.o: drtsns.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -25782,10 +31314,7 @@ drtsns.o: drtsns.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -25846,9 +31375,10 @@ drtsns.o: drtsns.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtspccs.o: drtspccs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtspccs.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtss.o: drtss.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtss.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -25859,6 +31389,10 @@ drtspccs.o: drtspccs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -25873,7 +31407,6 @@ drtspccs.o: drtspccs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -25902,10 +31435,7 @@ drtspccs.o: drtspccs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -25966,10 +31496,9 @@ drtspccs.o: drtspccs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h -drtspcs.o: drtspcs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtspcs.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtssrcs.o: drtssrcs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtssrcs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -25980,6 +31509,10 @@ drtspcs.o: drtspcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -25994,7 +31527,6 @@ drtspcs.o: drtspcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -26023,10 +31555,7 @@ drtspcs.o: drtspcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -26088,13 +31617,9 @@ drtspcs.o: drtspcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtpcxs.h \ - ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtcncs.h \ - ../include/dcmtk/dcmrt/seq/drtcims.h \ - ../include/dcmtk/dcmrt/seq/drtmucs.h \ - ../include/dcmtk/dcmrt/seq/drtrsos.h -drtspgis.o: drtspgis.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtspgis.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drtssrs.o: drtssrs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtssrs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -26105,6 +31630,10 @@ drtspgis.o: drtspgis.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -26119,7 +31648,6 @@ drtspgis.o: drtspgis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -26148,10 +31676,7 @@ drtspgis.o: drtspgis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -26213,12 +31738,21 @@ drtspgis.o: drtspgis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtipiqs.h \ - ../include/dcmtk/dcmrt/seq/drtaadcs.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtafs.h \ - ../include/dcmtk/dcmrt/seq/drtajcs.h -drtsptcs.o: drtsptcs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtsptcs.h \ + ../include/dcmtk/dcmrt/seq/drtcvis.h \ + ../include/dcmtk/dcmrt/seq/drtdcvs.h \ + ../include/dcmtk/dcmrt/seq/drtcvdas.h \ + ../include/dcmtk/dcmrt/seq/drtafcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ + ../include/dcmtk/dcmrt/seq/drtancs.h \ + ../include/dcmtk/dcmrt/seq/drtscvs.h \ + ../include/dcmtk/dcmrt/seq/drtcvcss.h \ + ../include/dcmtk/dcmrt/seq/drtrdsis.h \ + ../include/dcmtk/dcmrt/seq/drtecvs.h \ + ../include/dcmtk/dcmrt/seq/drtecvis.h \ + ../include/dcmtk/dcmrt/seq/drtosirs.h \ + ../include/dcmtk/dcmrt/seq/drtdfss.h ../include/dcmtk/dcmrt/seq/drtdcs.h \ + ../include/dcmtk/dcmrt/seq/drtrdais.h +drtsss.o: drtsss.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtsss.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -26229,6 +31763,10 @@ drtsptcs.o: drtsptcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -26243,7 +31781,6 @@ drtsptcs.o: drtsptcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -26272,10 +31809,7 @@ drtsptcs.o: drtsptcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -26337,19 +31871,22 @@ drtsptcs.o: drtsptcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtssrcs.h \ ../include/dcmtk/dcmrt/seq/drtecs.h -drtss.o: drtss.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtss.h \ - ../../ofstd/include/dcmtk/ofstd/oflist.h \ +drtstrct.o: drtstrct.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/drtstrct.h ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ ../../ofstd/include/dcmtk/ofstd/ofcast.h \ ../../ofstd/include/dcmtk/ofstd/ofexport.h \ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ ../../ofstd/include/dcmtk/ofstd/ofstream.h \ - ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -26364,7 +31901,6 @@ drtss.o: drtss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -26387,16 +31923,14 @@ drtss.o: drtss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ ../../ofstd/include/dcmtk/ofstd/offile.h \ ../../ofstd/include/dcmtk/ofstd/ofstd.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oflimits.h \ ../../config/include/dcmtk/config/arith.h \ ../../ofstd/include/dcmtk/ofstd/oferror.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -26457,9 +31991,114 @@ drtss.o: drtss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drtssrcs.o: drtssrcs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ + ../include/dcmtk/dcmrt/seq/drtbrs.h \ + ../include/dcmtk/dcmrt/seq/drtbrcss.h \ + ../include/dcmtk/dcmrt/seq/drtcttcs.h \ + ../include/dcmtk/dcmrt/seq/drtcsis.h \ + ../include/dcmtk/dcmrt/seq/drtcsrs.h \ + ../include/dcmtk/dcmrt/seq/drtcctus.h \ + ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \ + ../include/dcmtk/dcmrt/seq/drtidcs.h \ + ../include/dcmtk/dcmrt/seq/drtpics.h \ + ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \ + ../include/dcmtk/dcmrt/seq/drtois.h \ + ../include/dcmtk/dcmrt/seq/drtporcs.h \ + ../include/dcmtk/dcmrt/seq/drtudis.h \ + ../include/dcmtk/dcmrt/seq/drtcsas.h \ + ../include/dcmtk/dcmrt/seq/drtdimcs.h \ + ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \ + ../include/dcmtk/dcmrt/seq/drtdspcs.h \ + ../include/dcmtk/dcmrt/seq/drteas.h ../include/dcmtk/dcmrt/seq/drtgms.h \ + ../include/dcmtk/dcmrt/seq/drtgmcs.h \ + ../include/dcmtk/dcmrt/seq/drtgpis.h \ + ../include/dcmtk/dcmrt/seq/drtipiqs.h \ + ../include/dcmtk/dcmrt/seq/drtaadcs.h \ + ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \ + ../include/dcmtk/dcmrt/seq/drthsdrs.h \ + ../include/dcmtk/dcmrt/seq/drtians.h \ + ../include/dcmtk/dcmrt/seq/drtiais.h \ + ../include/dcmtk/dcmrt/seq/drtiseis.h \ + ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \ + ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \ + ../include/dcmtk/dcmrt/seq/drtnmas.h \ + ../include/dcmtk/dcmrt/seq/drtopis.h \ + ../include/dcmtk/dcmrt/seq/drtpbcs.h \ + ../include/dcmtk/dcmrt/seq/drtpsics.h \ + ../include/dcmtk/dcmrt/seq/drtpscs.h \ + ../include/dcmtk/dcmrt/seq/drtppcs.h \ + ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \ + ../include/dcmtk/dcmrt/seq/drtcncs.h \ + ../include/dcmtk/dcmrt/seq/drtcims.h \ + ../include/dcmtk/dcmrt/seq/drtmucs.h \ + ../include/dcmtk/dcmrt/seq/drtrsos.h \ + ../include/dcmtk/dcmrt/seq/drtporis.h \ + ../include/dcmtk/dcmrt/seq/drtprsis.h \ + ../include/dcmtk/dcmrt/seq/drtpsss.h \ + ../include/dcmtk/dcmrt/seq/drtpdecs.h \ + ../include/dcmtk/dcmrt/seq/drtdias.h \ + ../include/dcmtk/dcmrt/seq/drtpdeds.h \ + ../include/dcmtk/dcmrt/seq/drtpcs.h ../include/dcmtk/dcmrt/seq/drtrcs.h \ + ../include/dcmtk/dcmrt/seq/drtcs.h ../include/dcmtk/dcmrt/seq/drtcis.h \ + ../include/dcmtk/dcmrt/seq/drtsppcs.h \ + ../include/dcmtk/dcmrt/seq/drtrros.h ../include/dcmtk/dcmrt/seq/drtars.h \ + ../include/dcmtk/dcmrt/seq/drtarms.h \ + ../include/dcmtk/dcmrt/seq/drtpass.h \ + ../include/dcmtk/dcmrt/seq/drtpasms.h \ + ../include/dcmtk/dcmrt/seq/drtrpps.h \ + ../include/dcmtk/dcmrt/seq/drtrecs.h \ + ../include/dcmtk/dcmrt/seq/drtrics.h \ + ../include/dcmtk/dcmrt/seq/drtsptcs.h \ + ../include/dcmtk/dcmrt/seq/drtrrs.h \ + ../include/dcmtk/dcmrt/seq/drtrrros.h \ + ../include/dcmtk/dcmrt/seq/drtspccs.h \ + ../include/dcmtk/dcmrt/seq/drttrccs.h \ + ../include/dcmtk/dcmrt/seq/drttrtcs.h \ + ../include/dcmtk/dcmrt/seq/drtrppcs.h \ + ../include/dcmtk/dcmrt/seq/drtrvcs.h \ + ../include/dcmtk/dcmrt/seq/drtrdps.h \ + ../include/dcmtk/dcmrt/seq/drtrfors.h \ + ../include/dcmtk/dcmrt/seq/drtrsts.h \ + ../include/dcmtk/dcmrt/seq/drtrses.h \ + ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \ + ../include/dcmtk/dcmrt/seq/drtrpphs.h \ + ../include/dcmtk/dcmrt/seq/drtdimrs.h \ + ../include/dcmtk/dcmrt/seq/drtdirs.h \ + ../include/dcmtk/dcmrt/seq/drtwrsrs.h \ + ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \ + ../include/dcmtk/dcmrt/seq/drtrps.h \ + ../include/dcmtk/dcmrt/seq/drtrppss.h \ + ../include/dcmtk/dcmrt/seq/drtrpprs.h \ + ../include/dcmtk/dcmrt/seq/drtrsers.h \ + ../include/dcmtk/dcmrt/seq/drtrss.h ../include/dcmtk/dcmrt/seq/drtrpis.h \ + ../include/dcmtk/dcmrt/seq/drtras.h \ + ../include/dcmtk/dcmrt/seq/drtrrpcs.h \ + ../include/dcmtk/dcmrt/seq/drtrpcs.h \ + ../include/dcmtk/dcmrt/seq/drtspcs.h \ + ../include/dcmtk/dcmrt/seq/drtrscs.h \ + ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtsis.h \ + ../include/dcmtk/dcmrt/seq/drtsins.h \ + ../include/dcmtk/dcmrt/seq/drtspgis.h \ + ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \ ../include/dcmtk/dcmrt/seq/drtssrcs.h \ + ../include/dcmtk/dcmrt/seq/drtssrs.h \ + ../include/dcmtk/dcmrt/seq/drtcvis.h \ + ../include/dcmtk/dcmrt/seq/drtdcvs.h \ + ../include/dcmtk/dcmrt/seq/drtcvdas.h \ + ../include/dcmtk/dcmrt/seq/drtafcs.h \ + ../include/dcmtk/dcmrt/seq/drtancs.h \ + ../include/dcmtk/dcmrt/seq/drtscvs.h \ + ../include/dcmtk/dcmrt/seq/drtcvcss.h \ + ../include/dcmtk/dcmrt/seq/drtrdsis.h \ + ../include/dcmtk/dcmrt/seq/drtecvs.h \ + ../include/dcmtk/dcmrt/seq/drtecvis.h \ + ../include/dcmtk/dcmrt/seq/drtosirs.h \ + ../include/dcmtk/dcmrt/seq/drtdfss.h \ + ../include/dcmtk/dcmrt/seq/drtrdais.h \ + ../include/dcmtk/dcmrt/seq/drtscris.h +drttms1.o: drttms1.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drttms1.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -26470,6 +32109,10 @@ drtssrcs.o: drtssrcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -26484,7 +32127,6 @@ drtssrcs.o: drtssrcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -26513,10 +32155,7 @@ drtssrcs.o: drtssrcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -26578,9 +32217,9 @@ drtssrcs.o: drtssrcs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h -drtssrs.o: drtssrs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtssrs.h \ + ../include/dcmtk/dcmrt/seq/drtidcs.h ../include/dcmtk/dcmrt/seq/drtecs.h +drttms2.o: drttms2.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drttms2.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -26591,6 +32230,10 @@ drtssrs.o: drtssrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -26605,7 +32248,6 @@ drtssrs.o: drtssrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -26634,10 +32276,7 @@ drtssrs.o: drtssrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -26699,9 +32338,9 @@ drtssrs.o: drtssrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtecs.h -drtsss.o: drtsss.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drtsss.h \ + ../include/dcmtk/dcmrt/seq/drtidcs.h ../include/dcmtk/dcmrt/seq/drtecs.h +drttrccs.o: drttrccs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drttrccs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -26712,6 +32351,10 @@ drtsss.o: drtsss.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -26726,7 +32369,6 @@ drtsss.o: drtsss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -26755,10 +32397,7 @@ drtsss.o: drtsss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -26820,10 +32459,9 @@ drtsss.o: drtsss.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtssrcs.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h -drtstrct.o: drtstrct.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/drtstrct.h ../include/dcmtk/dcmrt/drttypes.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drttreat.o: drttreat.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/drttreat.h ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ ../../ofstd/include/dcmtk/ofstd/ofcast.h \ @@ -26832,6 +32470,10 @@ drtstrct.o: drtstrct.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofstream.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -26846,7 +32488,6 @@ drtstrct.o: drtstrct.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -26876,10 +32517,7 @@ drtstrct.o: drtstrct.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -26944,19 +32582,23 @@ drtstrct.o: drtstrct.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ ../include/dcmtk/dcmrt/seq/drtbrs.h \ ../include/dcmtk/dcmrt/seq/drtbrcss.h \ + ../include/dcmtk/dcmrt/seq/drtcttcs.h \ ../include/dcmtk/dcmrt/seq/drtcsis.h \ ../include/dcmtk/dcmrt/seq/drtcsrs.h \ ../include/dcmtk/dcmrt/seq/drtcctus.h \ ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \ + ../include/dcmtk/dcmrt/seq/drtidcs.h \ ../include/dcmtk/dcmrt/seq/drtpics.h \ ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \ ../include/dcmtk/dcmrt/seq/drtois.h \ ../include/dcmtk/dcmrt/seq/drtporcs.h \ + ../include/dcmtk/dcmrt/seq/drtudis.h \ ../include/dcmtk/dcmrt/seq/drtcsas.h \ ../include/dcmtk/dcmrt/seq/drtdimcs.h \ ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \ ../include/dcmtk/dcmrt/seq/drtdspcs.h \ - ../include/dcmtk/dcmrt/seq/drteas.h ../include/dcmtk/dcmrt/seq/drtgms.h \ + ../include/dcmtk/dcmrt/seq/drteas.h ../include/dcmtk/dcmrt/seq/drtfgss.h \ + ../include/dcmtk/dcmrt/seq/drtfsss.h ../include/dcmtk/dcmrt/seq/drtgms.h \ ../include/dcmtk/dcmrt/seq/drtgmcs.h \ ../include/dcmtk/dcmrt/seq/drtgpis.h \ ../include/dcmtk/dcmrt/seq/drtipiqs.h \ @@ -26968,6 +32610,7 @@ drtstrct.o: drtstrct.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtiseis.h \ ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \ ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \ + ../include/dcmtk/dcmrt/seq/drtnmas.h \ ../include/dcmtk/dcmrt/seq/drtopis.h \ ../include/dcmtk/dcmrt/seq/drtpbcs.h \ ../include/dcmtk/dcmrt/seq/drtpsics.h \ @@ -26980,24 +32623,13 @@ drtstrct.o: drtstrct.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtrsos.h \ ../include/dcmtk/dcmrt/seq/drtporis.h \ ../include/dcmtk/dcmrt/seq/drtprsis.h \ - ../include/dcmtk/dcmrt/seq/drtpsss.h \ ../include/dcmtk/dcmrt/seq/drtpdecs.h \ ../include/dcmtk/dcmrt/seq/drtdias.h \ ../include/dcmtk/dcmrt/seq/drtpdeds.h \ - ../include/dcmtk/dcmrt/seq/drtpcs.h ../include/dcmtk/dcmrt/seq/drtrcs.h \ - ../include/dcmtk/dcmrt/seq/drtcs.h ../include/dcmtk/dcmrt/seq/drtcis.h \ - ../include/dcmtk/dcmrt/seq/drtrros.h \ - ../include/dcmtk/dcmrt/seq/drtrpps.h \ - ../include/dcmtk/dcmrt/seq/drtrecs.h \ - ../include/dcmtk/dcmrt/seq/drtrics.h \ - ../include/dcmtk/dcmrt/seq/drtsptcs.h \ - ../include/dcmtk/dcmrt/seq/drtrrs.h \ - ../include/dcmtk/dcmrt/seq/drtrrros.h \ - ../include/dcmtk/dcmrt/seq/drtspccs.h \ + ../include/dcmtk/dcmrt/seq/drtpcs.h \ ../include/dcmtk/dcmrt/seq/drtrppcs.h \ - ../include/dcmtk/dcmrt/seq/drtrfors.h \ - ../include/dcmtk/dcmrt/seq/drtrsts.h \ - ../include/dcmtk/dcmrt/seq/drtrses.h \ + ../include/dcmtk/dcmrt/seq/drtrvcs.h \ + ../include/dcmtk/dcmrt/seq/drtrdps.h \ ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \ ../include/dcmtk/dcmrt/seq/drtrpphs.h \ ../include/dcmtk/dcmrt/seq/drtdimrs.h \ @@ -27006,9 +32638,12 @@ drtstrct.o: drtstrct.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \ ../include/dcmtk/dcmrt/seq/drtrps.h \ ../include/dcmtk/dcmrt/seq/drtrppss.h \ + ../include/dcmtk/dcmrt/seq/drtrpprs.h \ + ../include/dcmtk/dcmrt/seq/drtrtps3.h \ ../include/dcmtk/dcmrt/seq/drtrsers.h \ - ../include/dcmtk/dcmrt/seq/drtrss.h ../include/dcmtk/dcmrt/seq/drtrpis.h \ - ../include/dcmtk/dcmrt/seq/drtras.h \ + ../include/dcmtk/dcmrt/seq/drtrss.h \ + ../include/dcmtk/dcmrt/seq/drtrtrs2.h \ + ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \ ../include/dcmtk/dcmrt/seq/drtrrpcs.h \ ../include/dcmtk/dcmrt/seq/drtrpcs.h \ ../include/dcmtk/dcmrt/seq/drtspcs.h \ @@ -27018,11 +32653,11 @@ drtstrct.o: drtstrct.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtspgis.h \ ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \ ../include/dcmtk/dcmrt/seq/drtssrcs.h \ - ../include/dcmtk/dcmrt/seq/drtssrs.h \ ../include/dcmtk/dcmrt/seq/drtscris.h \ - ../include/dcmtk/dcmrt/seq/drtudis.h -drttms0.o: drttms0.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drttms0.h \ + ../include/dcmtk/dcmrt/seq/drttscds.h \ + ../include/dcmtk/dcmrt/seq/drttsmds.h +drttrtcs.o: drttrtcs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drttrtcs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -27033,6 +32668,10 @@ drttms0.o: drttms0.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -27047,7 +32686,6 @@ drttms0.o: drttms0.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -27076,10 +32714,7 @@ drttms0.o: drttms0.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -27140,9 +32775,10 @@ drttms0.o: drttms0.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drttms9.o: drttms9.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drttms9.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drttscds.o: drttscds.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drttscds.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -27153,6 +32789,10 @@ drttms9.o: drttms9.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -27167,7 +32807,6 @@ drttms9.o: drttms9.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -27196,10 +32835,7 @@ drttms9.o: drttms9.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -27261,16 +32897,22 @@ drttms9.o: drttms9.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drttreat.o: drttreat.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/drttreat.h ../include/dcmtk/dcmrt/drttypes.h \ +drttscs.o: drttscs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drttscs.h \ + ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ ../../ofstd/include/dcmtk/ofstd/ofcast.h \ ../../ofstd/include/dcmtk/ofstd/ofexport.h \ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \ ../../ofstd/include/dcmtk/ofstd/ofstream.h \ + ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -27285,7 +32927,6 @@ drttreat.o: drttreat.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -27308,17 +32949,13 @@ drttreat.o: drttreat.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ ../../ofstd/include/dcmtk/ofstd/offile.h \ ../../ofstd/include/dcmtk/ofstd/ofstd.h \ - ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oflimits.h \ ../../config/include/dcmtk/config/arith.h \ ../../ofstd/include/dcmtk/ofstd/oferror.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -27380,79 +33017,9 @@ drttreat.o: drttreat.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ - ../include/dcmtk/dcmrt/seq/drtbrs.h \ - ../include/dcmtk/dcmrt/seq/drtbrcss.h \ - ../include/dcmtk/dcmrt/seq/drtcsis.h \ - ../include/dcmtk/dcmrt/seq/drtcsrs.h \ - ../include/dcmtk/dcmrt/seq/drtcctus.h \ - ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \ - ../include/dcmtk/dcmrt/seq/drtpics.h \ - ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \ - ../include/dcmtk/dcmrt/seq/drtois.h \ - ../include/dcmtk/dcmrt/seq/drtporcs.h \ - ../include/dcmtk/dcmrt/seq/drtcsas.h \ - ../include/dcmtk/dcmrt/seq/drtdimcs.h \ - ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \ - ../include/dcmtk/dcmrt/seq/drtdspcs.h \ - ../include/dcmtk/dcmrt/seq/drteas.h ../include/dcmtk/dcmrt/seq/drtfgss.h \ - ../include/dcmtk/dcmrt/seq/drtfsss.h ../include/dcmtk/dcmrt/seq/drtgms.h \ - ../include/dcmtk/dcmrt/seq/drtgmcs.h \ - ../include/dcmtk/dcmrt/seq/drtgpis.h \ - ../include/dcmtk/dcmrt/seq/drtipiqs.h \ - ../include/dcmtk/dcmrt/seq/drtaadcs.h \ - ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \ - ../include/dcmtk/dcmrt/seq/drthsdrs.h \ - ../include/dcmtk/dcmrt/seq/drtians.h \ - ../include/dcmtk/dcmrt/seq/drtiais.h \ - ../include/dcmtk/dcmrt/seq/drtiseis.h \ - ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \ - ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \ - ../include/dcmtk/dcmrt/seq/drtopis.h \ - ../include/dcmtk/dcmrt/seq/drtpbcs.h \ - ../include/dcmtk/dcmrt/seq/drtpsics.h \ - ../include/dcmtk/dcmrt/seq/drtpscs.h \ - ../include/dcmtk/dcmrt/seq/drtppcs.h \ - ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \ - ../include/dcmtk/dcmrt/seq/drtcncs.h \ - ../include/dcmtk/dcmrt/seq/drtcims.h \ - ../include/dcmtk/dcmrt/seq/drtmucs.h \ - ../include/dcmtk/dcmrt/seq/drtrsos.h \ - ../include/dcmtk/dcmrt/seq/drtporis.h \ - ../include/dcmtk/dcmrt/seq/drtprsis.h \ - ../include/dcmtk/dcmrt/seq/drtpdecs.h \ - ../include/dcmtk/dcmrt/seq/drtdias.h \ - ../include/dcmtk/dcmrt/seq/drtpdeds.h \ - ../include/dcmtk/dcmrt/seq/drtpcs.h \ - ../include/dcmtk/dcmrt/seq/drtrppcs.h \ - ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \ - ../include/dcmtk/dcmrt/seq/drtrpphs.h \ - ../include/dcmtk/dcmrt/seq/drtdimrs.h \ - ../include/dcmtk/dcmrt/seq/drtdirs.h \ - ../include/dcmtk/dcmrt/seq/drtwrsrs.h \ - ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \ - ../include/dcmtk/dcmrt/seq/drtrps.h \ - ../include/dcmtk/dcmrt/seq/drtrppss.h \ - ../include/dcmtk/dcmrt/seq/drtrrtps4.h \ - ../include/dcmtk/dcmrt/seq/drtrsers.h \ - ../include/dcmtk/dcmrt/seq/drtrss.h \ - ../include/dcmtk/dcmrt/seq/drtrtrs4.h \ - ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \ - ../include/dcmtk/dcmrt/seq/drtrrpcs.h \ - ../include/dcmtk/dcmrt/seq/drtrpcs.h \ - ../include/dcmtk/dcmrt/seq/drtspcs.h \ - ../include/dcmtk/dcmrt/seq/drtrscs.h \ - ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtsis.h \ - ../include/dcmtk/dcmrt/seq/drtsins.h \ - ../include/dcmtk/dcmrt/seq/drtspgis.h \ - ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \ - ../include/dcmtk/dcmrt/seq/drtssrcs.h \ - ../include/dcmtk/dcmrt/seq/drtscris.h \ - ../include/dcmtk/dcmrt/seq/drttscds.h \ - ../include/dcmtk/dcmrt/seq/drttsmds.h \ - ../include/dcmtk/dcmrt/seq/drtudis.h -drttscds.o: drttscds.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drttscds.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h +drttsibs.o: drttsibs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drttsibs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -27463,6 +33030,10 @@ drttscds.o: drttscds.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -27477,7 +33048,6 @@ drttscds.o: drttscds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -27506,10 +33076,7 @@ drttscds.o: drttscds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -27570,9 +33137,36 @@ drttscds.o: drttscds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h -drttsibs.o: drttsibs.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drttsibs.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtas4.h \ + ../include/dcmtk/dcmrt/seq/drtbldls.h \ + ../include/dcmtk/dcmrt/seq/drtdddps.h \ + ../include/dcmtk/dcmrt/seq/drtgas6.h \ + ../include/dcmtk/dcmrt/seq/drticpds.h \ + ../include/dcmtk/dcmrt/seq/drtbldps.h \ + ../include/dcmtk/dcmrt/seq/drtcpas.h \ + ../include/dcmtk/dcmrt/seq/drtiwps.h \ + ../include/dcmtk/dcmrt/seq/drtlsds2.h ../include/dcmtk/dcmrt/seq/drtos.h \ + ../include/dcmtk/dcmrt/seq/drtois.h ../include/dcmtk/dcmrt/seq/drtics.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtidcs.h \ + ../include/dcmtk/dcmrt/seq/drtpics.h \ + ../include/dcmtk/dcmrt/seq/drtrmss2.h \ + ../include/dcmtk/dcmrt/seq/drtrshs2.h \ + ../include/dcmtk/dcmrt/seq/drtmttcs.h \ + ../include/dcmtk/dcmrt/seq/drtttrcs.h \ + ../include/dcmtk/dcmrt/seq/drtrbls.h \ + ../include/dcmtk/dcmrt/seq/drtrbss.h \ + ../include/dcmtk/dcmrt/seq/drtrcos.h \ + ../include/dcmtk/dcmrt/seq/drtrlsds.h \ + ../include/dcmtk/dcmrt/seq/drtrrms.h \ + ../include/dcmtk/dcmrt/seq/drtrrshs.h \ + ../include/dcmtk/dcmrt/seq/drtrsns.h ../include/dcmtk/dcmrt/seq/drtrws.h \ + ../include/dcmtk/dcmrt/seq/drtrbos3.h \ + ../include/dcmtk/dcmrt/seq/drtrcdrs.h \ + ../include/dcmtk/dcmrt/seq/drtrmdrs.h \ + ../include/dcmtk/dcmrt/seq/drtrvis.h +drttsmds.o: drttsmds.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drttsmds.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -27583,6 +33177,10 @@ drttsibs.o: drttsibs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -27597,7 +33195,6 @@ drttsibs.o: drttsibs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -27626,10 +33223,7 @@ drttsibs.o: drttsibs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -27690,32 +33284,9 @@ drttsibs.o: drttsibs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ - ../include/dcmtk/dcmrt/seq/drtas7.h \ - ../include/dcmtk/dcmrt/seq/drtbldls.h \ - ../include/dcmtk/dcmrt/seq/drtdddps.h \ - ../include/dcmtk/dcmrt/seq/drtgas.h \ - ../include/dcmtk/dcmrt/seq/drticpds.h \ - ../include/dcmtk/dcmrt/seq/drtbldps.h \ - ../include/dcmtk/dcmrt/seq/drtcpas.h \ - ../include/dcmtk/dcmrt/seq/drtiwps.h \ - ../include/dcmtk/dcmrt/seq/drtlsds7.h ../include/dcmtk/dcmrt/seq/drtos.h \ - ../include/dcmtk/dcmrt/seq/drtois.h ../include/dcmtk/dcmrt/seq/drtics.h \ - ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtpics.h \ - ../include/dcmtk/dcmrt/seq/drtrmss7.h \ - ../include/dcmtk/dcmrt/seq/drtrshs7.h \ - ../include/dcmtk/dcmrt/seq/drtrbls.h \ - ../include/dcmtk/dcmrt/seq/drtrcos.h \ - ../include/dcmtk/dcmrt/seq/drtrlsds.h \ - ../include/dcmtk/dcmrt/seq/drtrrms.h \ - ../include/dcmtk/dcmrt/seq/drtrrshs.h \ - ../include/dcmtk/dcmrt/seq/drtrsns.h ../include/dcmtk/dcmrt/seq/drtrws.h \ - ../include/dcmtk/dcmrt/seq/drtrbos7.h \ - ../include/dcmtk/dcmrt/seq/drtrcdrs.h \ - ../include/dcmtk/dcmrt/seq/drtrmdrs.h \ - ../include/dcmtk/dcmrt/seq/drtrvis.h -drttsmds.o: drttsmds.cc ../../config/include/dcmtk/config/osconfig.h \ - ../include/dcmtk/dcmrt/seq/drttsmds.h \ + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h +drtttrcs.o: drtttrcs.cc ../../config/include/dcmtk/config/osconfig.h \ + ../include/dcmtk/dcmrt/seq/drtttrcs.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ ../../ofstd/include/dcmtk/ofstd/oftypes.h \ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \ @@ -27726,6 +33297,10 @@ drttsmds.o: drttsmds.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -27740,7 +33315,6 @@ drttsmds.o: drttsmds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -27769,10 +33343,7 @@ drttsmds.o: drttsmds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -27833,7 +33404,8 @@ drttsmds.o: drttsmds.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ - ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h + ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ + ../include/dcmtk/dcmrt/seq/drtecs.h drttts.o: drttts.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drttts.h \ ../../ofstd/include/dcmtk/ofstd/oflist.h \ @@ -27846,6 +33418,10 @@ drttts.o: drttts.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -27860,7 +33436,6 @@ drttts.o: drttts.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -27889,10 +33464,7 @@ drttts.o: drttts.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -27965,6 +33537,10 @@ drttypes.o: drttypes.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofstream.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -27979,7 +33555,6 @@ drttypes.o: drttypes.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -28009,10 +33584,7 @@ drttypes.o: drttypes.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -28086,6 +33658,10 @@ drtudis.o: drtudis.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -28100,7 +33676,6 @@ drtudis.o: drtudis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -28129,10 +33704,7 @@ drtudis.o: drtudis.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -28206,6 +33778,10 @@ drtvls.o: drtvls.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -28220,7 +33796,6 @@ drtvls.o: drtvls.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -28249,10 +33824,7 @@ drtvls.o: drtvls.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -28326,6 +33898,10 @@ drtwps.o: drtwps.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -28340,7 +33916,6 @@ drtwps.o: drtwps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -28369,10 +33944,7 @@ drtwps.o: drtwps.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -28446,6 +34018,10 @@ drtwrs.o: drtwrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -28460,7 +34036,6 @@ drtwrs.o: drtwrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -28489,10 +34064,7 @@ drtwrs.o: drtwrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -28566,6 +34138,10 @@ drtwrsrs.o: drtwrsrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -28580,7 +34156,6 @@ drtwrsrs.o: drtwrsrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -28609,10 +34184,7 @@ drtwrsrs.o: drtwrsrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -28686,6 +34258,10 @@ drtws.o: drtws.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -28700,7 +34276,6 @@ drtws.o: drtws.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -28729,10 +34304,7 @@ drtws.o: drtws.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -28806,6 +34378,10 @@ drtxrs.o: drtxrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/drttypes.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -28820,7 +34396,6 @@ drtxrs.o: drtxrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -28849,10 +34424,7 @@ drtxrs.o: drtxrs.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ diff --git a/dcmrt/libsrc/Makefile.in b/dcmrt/libsrc/Makefile.in index a8a1f444..419f61a1 100644 --- a/dcmrt/libsrc/Makefile.in +++ b/dcmrt/libsrc/Makefile.in @@ -21,40 +21,48 @@ LOCALINCLUDES = -I$(ofstddir)/include -I$(oflogdir)/include -I$(dcmdatadir)/incl -I$(dcmimgledir)/include LOCALDEFS = -objs = drtdose.o drtimage.o drtplan.o drtstrct.o drttreat.o drtionpl.o drtiontr.o \ - drmdose.o drmimage.o drmplan.o drmstrct.o drttypes.o \ - drtaadcs.o drtadcs.o drtads.o drtafs.o drtags.o drtajcs.o drtas1.o \ - drtas5.o drtas6.o drtas7.o drtass.o drtbads.o drtbas.o drtbcps.o \ - drtbl2.o drtbl5.o drtbldls.o drtbldps.o drtblds1.o drtblds5.o drtblds6.o \ - drtbldts.o drtbrcss.o drtbrdrs.o drtbrs.o drtbs.o drtbss.o drtbvcps.o \ - drtcbars.o drtccs.o drtcctus.o drtcdrs.o drtces.o drtcgis.o drtchs.o \ - drtcims.o drtcis.o drtcncs.o drtcos.o drtcpas.o drtcpis.o drtcps.o \ - drtcsas.o drtcs.o drtcshs.o drtcsis.o drtcsrs.o drtcss.o drtdcs.o \ - drtdddps.o drtddps.o drtdias.o drtdimcs.o drtdimrs.o drtdirs.o drtdrs.o \ - drtds.o drtdspcs.o drtdss.o drtdvhs.o drtdvrrs.o drteas.o drtecs.o \ - drtes.o drtfds.o drtfes.o drtfgs.o drtfgss.o drtfms.o drtfsss.o drtgas.o \ - drtgmcs.o drtgms.o drtgpis.o drthsdrs.o drtiais.o drtians.o drtiblds.o \ - drtibls.o drtibs.o drticpds.o drticps.o drtics.o drtiis.o drtipiqs.o \ - drtircs.o drtiseis.o drtitts.o drtiwps.o drtiws.o drtlsds6.o drtlsds7.o \ - drtlsds.o drtmacds.o drtmas.o drtmdrs.o drtmls.o drtmps.o drtmris.o \ - drtmss.o drtmucs.o drtoas.o drtois.o drtopis.o drtos.o drtpbcs.o drtpcs.o \ - drtpcxs.o drtpdecs.o drtpdeds.o drtpfms.o drtpics.o drtporcs.o drtporis.o \ - drtppcs.o drtprsis.o drtpscs.o drtpsics.o drtpss.o drtpsss.o drtpvis.o \ - drtqds.o drtras.o drtrbas2.o drtrbas8.o drtrbls.o drtrbos1.o drtrbos6.o \ - drtrbos7.o drtrbs2.o drtrbs4.o drtrbs8.o drtrcdrs.o drtrcos.o drtrcps.o \ - drtrcs.o drtrdros.o drtrdrs1.o drtrdrs6.o drtrdrs8.o drtrds.o drtrecs.o \ - drtrfgs.o drtrfors.o drtrics.o drtrims.o drtris.o drtrlsds.o drtrmdrs.o \ - drtrms.o drtrmss6.o drtrmss7.o drtrpcs.o drtrpis.o drtrppcs.o drtrpphs.o \ - drtrpps.o drtrppss.o drtrps.o drtrris1.o drtrris6.o drtrris9.o drtrrms.o \ - drtrros.o drtrrpcs.o drtrrros.o drtrrs.o drtrrshs.o drtrrtps3.o \ - drtrrtps4.o drtrrtps5.o drtrrtps.o drtrscs.o drtrsers.o drtrses.o \ - drtrshs6.o drtrshs7.o drtrshs.o drtrsis.o drtrsns.o drtrsos.o drtrsrs.o \ - drtrss.o drtrsss.o drtrsts.o drtrtrs2.o drtrtrs4.o drtrvis.o drtrws.o \ - drtrwvms.o drtscris.o drtscs.o drtsdcs.o drtsds.o drtshds.o drtsins.o \ - drtsis.o drtsns.o drtspccs.o drtspcs.o drtspgis.o drtsptcs.o drtss.o \ - drtssrcs.o drtssrs.o drtsss.o drttms0.o drttms9.o drttscds.o drttsibs.o \ - drttsmds.o drttts.o drtudis.o drtvls.o drtwps.o drtwrs.o drtwrsrs.o \ - drtws.o drtxrs.o +objs = drtdose.o drtimage.o drtplan.o drtstrct.o drttreat.o drtionpl.o \ + drtiontr.o drmdose.o drmimage.o drmplan.o drmstrct.o drttypes.o \ + drtaadcs.o drtadcs.o drtads.o drtafcs.o drtafs.o drtags.o drtajcs.o \ + drtancs.o drtarms.o drtars.o drtas1.o drtas2.o drtas3.o drtas4.o \ + drtass.o drtbads.o drtbas.o drtbcps.o drtbl1.o drtbl2.o drtbldls.o \ + drtbldps.o drtblds1.o drtblds2.o drtbldts.o drtbrcss.o drtbrdrs.o \ + drtbrs.o drtbs.o drtbss.o drtbvcps.o drtcbars.o drtccs.o drtcctus.o \ + drtcdrs.o drtces.o drtcgis.o drtchs.o drtcims.o drtcis.o drtcncs.o \ + drtcos.o drtcpas.o drtcpis.o drtcps.o drtcsas.o drtcs.o drtcshs.o \ + drtcsis.o drtcsrs.o drtcss.o drtcttcs.o drtcvcss.o drtcvdas.o \ + drtcvis.o drtdccs.o drtdcs.o drtdcvs.o drtdddps.o drtddps.o drtdfss.o \ + drtdias.o drtdimcs.o drtdimrs.o drtdirs.o drtdrs.o drtds.o drtdspcs.o \ + drtdss.o drtdtcs.o drtdvhs.o drtdvrrs.o drteas.o drteblds.o drteblos.o \ + drtecs.o drtecvis.o drtecvs.o drtes.o drtfbdds.o drtfds.o drtfes.o \ + drtfgs.o drtfgss.o drtfms.o drtfsss.o drtgas1.o drtgas2.o drtgas3.o \ + drtgas4.o drtgas5.o drtgas6.o drtgmcs.o drtgms.o drtgpis.o drthsdrs.o \ + drtiais.o drtians.o drtiblds.o drtibls.o drtibs.o drticpds.o drticps.o \ + drtics.o drtidcs.o drtiis.o drtipiqs.o drtircs.o drtiseis.o drtitts.o \ + drtiwps.o drtiws.o drtlsds1.o drtlsds2.o drtlsds.o drtmacds.o drtmas.o \ + drtmdrs.o drtmls.o drtmps.o drtmris.o drtmss.o drtmttcs.o drtmucs.o \ + drtnmas.o drtoas.o drtois.o drtopis.o drtos.o drtosirs.o drtpasms.o \ + drtpass.o drtpbcs.o drtpbdds.o drtpbdos.o drtpcs.o drtpcxs.o \ + drtpdecs.o drtpdeds.o drtpfms.o drtpics.o drtplos.o drtporcs.o \ + drtporis.o drtppcs.o drtpros.o drtprsis.o drtpscs.o drtpsics.o \ + drtpss.o drtpsss.o drtpvis.o drtqds.o drtras.o drtrbas1.o drtrbas2.o \ + drtrbdgs.o drtrbls.o drtrbos1.o drtrbos2.o drtrbos3.o drtrbs1.o \ + drtrbs2.o drtrbs3.o drtrbss.o drtrcdrs.o drtrcos.o drtrcps.o drtrcs.o \ + drtrdais.o drtrdcks.o drtrdps.o drtrdrs1.o drtrdrs2.o drtrdrs3.o \ + drtrds.o drtrdsis.o drtrecs.o drtrfgs.o drtrfors.o drtrics.o drtrims.o \ + drtris.o drtrlsds.o drtrmdrs.o drtrms.o drtrmss1.o drtrmss2.o \ + drtrpcs.o drtrpis.o drtrppcs.o drtrpphs.o drtrpprs.o drtrpps.o \ + drtrppss.o drtrps.o drtrris1.o drtrris2.o drtrris3.o drtrrms.o \ + drtrros.o drtrrpcs.o drtrrros.o drtrrs.o drtrrshs.o drtrscs.o \ + drtrsers.o drtrses.o drtrshs1.o drtrshs2.o drtrshs.o drtrsis.o \ + drtrsns.o drtrsos.o drtrsrs.o drtrss.o drtrsss.o drtrsts.o drtrtps1.o \ + drtrtps2.o drtrtps3.o drtrtps4.o drtrtrs1.o drtrtrs2.o drtrvcs.o \ + drtrvis.o drtrws.o drtrwvms.o drtscris.o drtscs.o drtscvs.o drtsdcs.o \ + drtsds.o drtshds.o drtsins.o drtsis.o drtsns.o drtspccs.o drtspcs.o \ + drtspgis.o drtsppcs.o drtsptcs.o drtss.o drtssrcs.o drtssrs.o drtsss.o \ + drttms1.o drttms2.o drttrccs.o drttrtcs.o drttscds.o drttscs.o \ + drttsibs.o drttsmds.o drtttrcs.o drttts.o drtudis.o drtvls.o drtwps.o \ + drtwrs.o drtwrsrs.o drtws.o drtxrs.o library = libdcmrt.$(LIBEXT) diff --git a/dcmrt/libsrc/drmimage.cc b/dcmrt/libsrc/drmimage.cc index 4a2f733f..2acb8efb 100644 --- a/dcmrt/libsrc/drmimage.cc +++ b/dcmrt/libsrc/drmimage.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2017, OFFIS e.V. + * Copyright (C) 2012-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -63,9 +63,8 @@ OFCondition DRTImage::loadFile(const OFFilename &filename, cond = DRTImageIOD::read(*format_.getDataset()); if (cond.good()) { - image_ = new DicomImage(&format_, - format_.getDataset()->getOriginalXfer(), - CIF_MayDetachPixelData); + image_ = new DicomImage(&format_, format_.getDataset()->getOriginalXfer(), + CIF_MayDetachPixelData); } } if (cond.bad()) @@ -78,12 +77,14 @@ OFCondition DRTImage::read(DcmItem *dataset) /* get rid of the old image before we mess with its dataset */ reset(); - dataset_ = dataset; - OFCondition cond = DRTImageIOD::read(*format_.getDataset()); + if (dataset == NULL) + return EC_IllegalCall; + + OFCondition cond = DRTImageIOD::read(*dataset); if (cond.good()) { - image_ = new DicomImage(&format_, - EXS_Unknown, CIF_MayDetachPixelData); + dataset_ = dataset; + image_ = new DicomImage(dataset_, EXS_Unknown, CIF_MayDetachPixelData); } else clear(); diff --git a/dcmrt/libsrc/drtaadcs.cc b/dcmrt/libsrc/drtaadcs.cc index 32e4644e..ee6350ae 100644 --- a/dcmrt/libsrc/drtaadcs.cc +++ b/dcmrt/libsrc/drtaadcs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTAssigningAgencyOrDepartmentCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -656,10 +656,12 @@ OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::gotoFirstItem() OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtadcs.cc b/dcmrt/libsrc/drtadcs.cc index aa9012ce..9d64d939 100644 --- a/dcmrt/libsrc/drtadcs.cc +++ b/dcmrt/libsrc/drtadcs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTAdmittingDiagnosesCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -656,10 +656,12 @@ OFCondition DRTAdmittingDiagnosesCodeSequence::gotoFirstItem() OFCondition DRTAdmittingDiagnosesCodeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtads.cc b/dcmrt/libsrc/drtads.cc index 99775e6e..2e5c192a 100644 --- a/dcmrt/libsrc/drtads.cc +++ b/dcmrt/libsrc/drtads.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTAdditionalDrugSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -656,10 +656,12 @@ OFCondition DRTAdditionalDrugSequence::gotoFirstItem() OFCondition DRTAdditionalDrugSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtafcs.cc b/dcmrt/libsrc/drtafcs.cc new file mode 100644 index 00000000..662f280b --- /dev/null +++ b/dcmrt/libsrc/drtafcs.cc @@ -0,0 +1,959 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTAlgorithmFamilyCodeSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtafcs.h" + + +// --- item class --- + +DRTAlgorithmFamilyCodeSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + CodeMeaning(DCM_CodeMeaning), + CodeValue(DCM_CodeValue), + CodingSchemeDesignator(DCM_CodingSchemeDesignator), + CodingSchemeVersion(DCM_CodingSchemeVersion), + ContextGroupExtensionCreatorUID(DCM_ContextGroupExtensionCreatorUID), + ContextGroupExtensionFlag(DCM_ContextGroupExtensionFlag), + ContextGroupLocalVersion(DCM_ContextGroupLocalVersion), + ContextGroupVersion(DCM_ContextGroupVersion), + ContextIdentifier(DCM_ContextIdentifier), + ContextUID(DCM_ContextUID), + EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), + LongCodeValue(DCM_LongCodeValue), + MappingResource(DCM_MappingResource), + MappingResourceName(DCM_MappingResourceName), + MappingResourceUID(DCM_MappingResourceUID), + URNCodeValue(DCM_URNCodeValue) +{ +} + + +DRTAlgorithmFamilyCodeSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + CodeMeaning(copy.CodeMeaning), + CodeValue(copy.CodeValue), + CodingSchemeDesignator(copy.CodingSchemeDesignator), + CodingSchemeVersion(copy.CodingSchemeVersion), + ContextGroupExtensionCreatorUID(copy.ContextGroupExtensionCreatorUID), + ContextGroupExtensionFlag(copy.ContextGroupExtensionFlag), + ContextGroupLocalVersion(copy.ContextGroupLocalVersion), + ContextGroupVersion(copy.ContextGroupVersion), + ContextIdentifier(copy.ContextIdentifier), + ContextUID(copy.ContextUID), + EquivalentCodeSequence(copy.EquivalentCodeSequence), + LongCodeValue(copy.LongCodeValue), + MappingResource(copy.MappingResource), + MappingResourceName(copy.MappingResourceName), + MappingResourceUID(copy.MappingResourceUID), + URNCodeValue(copy.URNCodeValue) +{ +} + + +DRTAlgorithmFamilyCodeSequence::Item::~Item() +{ +} + + +DRTAlgorithmFamilyCodeSequence::Item &DRTAlgorithmFamilyCodeSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + CodeMeaning = copy.CodeMeaning; + CodeValue = copy.CodeValue; + CodingSchemeDesignator = copy.CodingSchemeDesignator; + CodingSchemeVersion = copy.CodingSchemeVersion; + ContextGroupExtensionCreatorUID = copy.ContextGroupExtensionCreatorUID; + ContextGroupExtensionFlag = copy.ContextGroupExtensionFlag; + ContextGroupLocalVersion = copy.ContextGroupLocalVersion; + ContextGroupVersion = copy.ContextGroupVersion; + ContextIdentifier = copy.ContextIdentifier; + ContextUID = copy.ContextUID; + EquivalentCodeSequence = copy.EquivalentCodeSequence; + LongCodeValue = copy.LongCodeValue; + MappingResource = copy.MappingResource; + MappingResourceName = copy.MappingResourceName; + MappingResourceUID = copy.MappingResourceUID; + URNCodeValue = copy.URNCodeValue; + } + return *this; +} + + +void DRTAlgorithmFamilyCodeSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + CodeValue.clear(); + CodingSchemeDesignator.clear(); + CodingSchemeVersion.clear(); + CodeMeaning.clear(); + LongCodeValue.clear(); + URNCodeValue.clear(); + EquivalentCodeSequence.clear(); + ContextIdentifier.clear(); + ContextUID.clear(); + MappingResource.clear(); + MappingResourceUID.clear(); + MappingResourceName.clear(); + ContextGroupVersion.clear(); + ContextGroupExtensionFlag.clear(); + ContextGroupLocalVersion.clear(); + ContextGroupExtensionCreatorUID.clear(); + } +} + + +OFBool DRTAlgorithmFamilyCodeSequence::Item::isEmpty() +{ + return CodeValue.isEmpty() && + CodingSchemeDesignator.isEmpty() && + CodingSchemeVersion.isEmpty() && + CodeMeaning.isEmpty() && + LongCodeValue.isEmpty() && + URNCodeValue.isEmpty() && + EquivalentCodeSequence.isEmpty() && + ContextIdentifier.isEmpty() && + ContextUID.isEmpty() && + MappingResource.isEmpty() && + MappingResourceUID.isEmpty() && + MappingResourceName.isEmpty() && + ContextGroupVersion.isEmpty() && + ContextGroupExtensionFlag.isEmpty() && + ContextGroupLocalVersion.isEmpty() && + ContextGroupExtensionCreatorUID.isEmpty(); +} + + +OFBool DRTAlgorithmFamilyCodeSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "AlgorithmFamilyCodeSequence"); + getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "AlgorithmFamilyCodeSequence"); + getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "AlgorithmFamilyCodeSequence"); + getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "AlgorithmFamilyCodeSequence"); + getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "AlgorithmFamilyCodeSequence"); + getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "AlgorithmFamilyCodeSequence"); + EquivalentCodeSequence.read(item, "1-n", "3", "AlgorithmFamilyCodeSequence"); + getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "AlgorithmFamilyCodeSequence"); + getAndCheckElementFromDataset(item, ContextUID, "1", "3", "AlgorithmFamilyCodeSequence"); + getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "AlgorithmFamilyCodeSequence"); + getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "AlgorithmFamilyCodeSequence"); + getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "AlgorithmFamilyCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "AlgorithmFamilyCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "AlgorithmFamilyCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "AlgorithmFamilyCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "AlgorithmFamilyCodeSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "AlgorithmFamilyCodeSequence"); + addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "AlgorithmFamilyCodeSequence"); + addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "AlgorithmFamilyCodeSequence"); + addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "AlgorithmFamilyCodeSequence"); + addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "AlgorithmFamilyCodeSequence"); + addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "AlgorithmFamilyCodeSequence"); + if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "AlgorithmFamilyCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "AlgorithmFamilyCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "AlgorithmFamilyCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "AlgorithmFamilyCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "AlgorithmFamilyCodeSequence"); + addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "AlgorithmFamilyCodeSequence"); + addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "AlgorithmFamilyCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "AlgorithmFamilyCodeSequence"); + addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "AlgorithmFamilyCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "AlgorithmFamilyCodeSequence"); + } + return result; +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodeMeaning, value, pos); +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::Item::getCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodeValue, value, pos); +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodingSchemeDesignator, value, pos); +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodingSchemeVersion, value, pos); +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupExtensionCreatorUID, value, pos); +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupExtensionFlag, value, pos); +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupLocalVersion, value, pos); +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupVersion, value, pos); +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextIdentifier, value, pos); +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::Item::getContextUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextUID, value, pos); +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(LongCodeValue, value, pos); +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResource, value, pos); +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResourceName, value, pos); +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResourceUID, value, pos); +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(URNCodeValue, value, pos); +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodeMeaning.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::Item::setCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodeValue.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodingSchemeDesignator.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodingSchemeVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupExtensionCreatorUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupExtensionFlag.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupLocalVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::Item::setContextIdentifier(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextIdentifier.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::Item::setContextUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = LongCodeValue.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResource.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResourceName.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResourceUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal; + if (result.good()) + result = URNCodeValue.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTAlgorithmFamilyCodeSequence::DRTAlgorithmFamilyCodeSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTAlgorithmFamilyCodeSequence::DRTAlgorithmFamilyCodeSequence(const DRTAlgorithmFamilyCodeSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTAlgorithmFamilyCodeSequence &DRTAlgorithmFamilyCodeSequence::operator=(const DRTAlgorithmFamilyCodeSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTAlgorithmFamilyCodeSequence::~DRTAlgorithmFamilyCodeSequence() +{ + clear(); +} + + +void DRTAlgorithmFamilyCodeSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTAlgorithmFamilyCodeSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTAlgorithmFamilyCodeSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTAlgorithmFamilyCodeSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTAlgorithmFamilyCodeSequence::Item &DRTAlgorithmFamilyCodeSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTAlgorithmFamilyCodeSequence::Item &DRTAlgorithmFamilyCodeSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTAlgorithmFamilyCodeSequence::Item &DRTAlgorithmFamilyCodeSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTAlgorithmFamilyCodeSequence::Item &DRTAlgorithmFamilyCodeSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTAlgorithmFamilyCodeSequence::Item &DRTAlgorithmFamilyCodeSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTAlgorithmFamilyCodeSequence::Item &DRTAlgorithmFamilyCodeSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_AlgorithmFamilyCodeSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_AlgorithmFamilyCodeSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTAlgorithmFamilyCodeSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_AlgorithmFamilyCodeSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtafs.cc b/dcmrt/libsrc/drtafs.cc index 8c6fb5d8..d2fffecf 100644 --- a/dcmrt/libsrc/drtafs.cc +++ b/dcmrt/libsrc/drtafs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTAssigningFacilitySequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -301,10 +301,12 @@ OFCondition DRTAssigningFacilitySequence::gotoFirstItem() OFCondition DRTAssigningFacilitySequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtags.cc b/dcmrt/libsrc/drtags.cc index c6285b2b..342f2001 100644 --- a/dcmrt/libsrc/drtags.cc +++ b/dcmrt/libsrc/drtags.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTApplicatorGeometrySequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -318,10 +318,12 @@ OFCondition DRTApplicatorGeometrySequence::gotoFirstItem() OFCondition DRTApplicatorGeometrySequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtajcs.cc b/dcmrt/libsrc/drtajcs.cc index 03feeffe..e0a9bb93 100644 --- a/dcmrt/libsrc/drtajcs.cc +++ b/dcmrt/libsrc/drtajcs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2021, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTAssigningJurisdictionCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -16,8 +16,6 @@ #include "dcmtk/dcmrt/seq/drtajcs.h" -#include - // --- item class --- @@ -658,10 +656,12 @@ OFCondition DRTAssigningJurisdictionCodeSequence::gotoFirstItem() OFCondition DRTAssigningJurisdictionCodeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtancs.cc b/dcmrt/libsrc/drtancs.cc new file mode 100644 index 00000000..e7e15d72 --- /dev/null +++ b/dcmrt/libsrc/drtancs.cc @@ -0,0 +1,959 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTAlgorithmNameCodeSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtancs.h" + + +// --- item class --- + +DRTAlgorithmNameCodeSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + CodeMeaning(DCM_CodeMeaning), + CodeValue(DCM_CodeValue), + CodingSchemeDesignator(DCM_CodingSchemeDesignator), + CodingSchemeVersion(DCM_CodingSchemeVersion), + ContextGroupExtensionCreatorUID(DCM_ContextGroupExtensionCreatorUID), + ContextGroupExtensionFlag(DCM_ContextGroupExtensionFlag), + ContextGroupLocalVersion(DCM_ContextGroupLocalVersion), + ContextGroupVersion(DCM_ContextGroupVersion), + ContextIdentifier(DCM_ContextIdentifier), + ContextUID(DCM_ContextUID), + EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), + LongCodeValue(DCM_LongCodeValue), + MappingResource(DCM_MappingResource), + MappingResourceName(DCM_MappingResourceName), + MappingResourceUID(DCM_MappingResourceUID), + URNCodeValue(DCM_URNCodeValue) +{ +} + + +DRTAlgorithmNameCodeSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + CodeMeaning(copy.CodeMeaning), + CodeValue(copy.CodeValue), + CodingSchemeDesignator(copy.CodingSchemeDesignator), + CodingSchemeVersion(copy.CodingSchemeVersion), + ContextGroupExtensionCreatorUID(copy.ContextGroupExtensionCreatorUID), + ContextGroupExtensionFlag(copy.ContextGroupExtensionFlag), + ContextGroupLocalVersion(copy.ContextGroupLocalVersion), + ContextGroupVersion(copy.ContextGroupVersion), + ContextIdentifier(copy.ContextIdentifier), + ContextUID(copy.ContextUID), + EquivalentCodeSequence(copy.EquivalentCodeSequence), + LongCodeValue(copy.LongCodeValue), + MappingResource(copy.MappingResource), + MappingResourceName(copy.MappingResourceName), + MappingResourceUID(copy.MappingResourceUID), + URNCodeValue(copy.URNCodeValue) +{ +} + + +DRTAlgorithmNameCodeSequence::Item::~Item() +{ +} + + +DRTAlgorithmNameCodeSequence::Item &DRTAlgorithmNameCodeSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + CodeMeaning = copy.CodeMeaning; + CodeValue = copy.CodeValue; + CodingSchemeDesignator = copy.CodingSchemeDesignator; + CodingSchemeVersion = copy.CodingSchemeVersion; + ContextGroupExtensionCreatorUID = copy.ContextGroupExtensionCreatorUID; + ContextGroupExtensionFlag = copy.ContextGroupExtensionFlag; + ContextGroupLocalVersion = copy.ContextGroupLocalVersion; + ContextGroupVersion = copy.ContextGroupVersion; + ContextIdentifier = copy.ContextIdentifier; + ContextUID = copy.ContextUID; + EquivalentCodeSequence = copy.EquivalentCodeSequence; + LongCodeValue = copy.LongCodeValue; + MappingResource = copy.MappingResource; + MappingResourceName = copy.MappingResourceName; + MappingResourceUID = copy.MappingResourceUID; + URNCodeValue = copy.URNCodeValue; + } + return *this; +} + + +void DRTAlgorithmNameCodeSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + CodeValue.clear(); + CodingSchemeDesignator.clear(); + CodingSchemeVersion.clear(); + CodeMeaning.clear(); + LongCodeValue.clear(); + URNCodeValue.clear(); + EquivalentCodeSequence.clear(); + ContextIdentifier.clear(); + ContextUID.clear(); + MappingResource.clear(); + MappingResourceUID.clear(); + MappingResourceName.clear(); + ContextGroupVersion.clear(); + ContextGroupExtensionFlag.clear(); + ContextGroupLocalVersion.clear(); + ContextGroupExtensionCreatorUID.clear(); + } +} + + +OFBool DRTAlgorithmNameCodeSequence::Item::isEmpty() +{ + return CodeValue.isEmpty() && + CodingSchemeDesignator.isEmpty() && + CodingSchemeVersion.isEmpty() && + CodeMeaning.isEmpty() && + LongCodeValue.isEmpty() && + URNCodeValue.isEmpty() && + EquivalentCodeSequence.isEmpty() && + ContextIdentifier.isEmpty() && + ContextUID.isEmpty() && + MappingResource.isEmpty() && + MappingResourceUID.isEmpty() && + MappingResourceName.isEmpty() && + ContextGroupVersion.isEmpty() && + ContextGroupExtensionFlag.isEmpty() && + ContextGroupLocalVersion.isEmpty() && + ContextGroupExtensionCreatorUID.isEmpty(); +} + + +OFBool DRTAlgorithmNameCodeSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTAlgorithmNameCodeSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "AlgorithmNameCodeSequence"); + getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "AlgorithmNameCodeSequence"); + getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "AlgorithmNameCodeSequence"); + getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "AlgorithmNameCodeSequence"); + getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "AlgorithmNameCodeSequence"); + getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "AlgorithmNameCodeSequence"); + EquivalentCodeSequence.read(item, "1-n", "3", "AlgorithmNameCodeSequence"); + getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "AlgorithmNameCodeSequence"); + getAndCheckElementFromDataset(item, ContextUID, "1", "3", "AlgorithmNameCodeSequence"); + getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "AlgorithmNameCodeSequence"); + getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "AlgorithmNameCodeSequence"); + getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "AlgorithmNameCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "AlgorithmNameCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "AlgorithmNameCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "AlgorithmNameCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "AlgorithmNameCodeSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTAlgorithmNameCodeSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "AlgorithmNameCodeSequence"); + addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "AlgorithmNameCodeSequence"); + addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "AlgorithmNameCodeSequence"); + addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "AlgorithmNameCodeSequence"); + addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "AlgorithmNameCodeSequence"); + addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "AlgorithmNameCodeSequence"); + if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "AlgorithmNameCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "AlgorithmNameCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "AlgorithmNameCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "AlgorithmNameCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "AlgorithmNameCodeSequence"); + addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "AlgorithmNameCodeSequence"); + addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "AlgorithmNameCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "AlgorithmNameCodeSequence"); + addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "AlgorithmNameCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "AlgorithmNameCodeSequence"); + } + return result; +} + + +OFCondition DRTAlgorithmNameCodeSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodeMeaning, value, pos); +} + + +OFCondition DRTAlgorithmNameCodeSequence::Item::getCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodeValue, value, pos); +} + + +OFCondition DRTAlgorithmNameCodeSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodingSchemeDesignator, value, pos); +} + + +OFCondition DRTAlgorithmNameCodeSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodingSchemeVersion, value, pos); +} + + +OFCondition DRTAlgorithmNameCodeSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupExtensionCreatorUID, value, pos); +} + + +OFCondition DRTAlgorithmNameCodeSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupExtensionFlag, value, pos); +} + + +OFCondition DRTAlgorithmNameCodeSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupLocalVersion, value, pos); +} + + +OFCondition DRTAlgorithmNameCodeSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupVersion, value, pos); +} + + +OFCondition DRTAlgorithmNameCodeSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextIdentifier, value, pos); +} + + +OFCondition DRTAlgorithmNameCodeSequence::Item::getContextUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextUID, value, pos); +} + + +OFCondition DRTAlgorithmNameCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(LongCodeValue, value, pos); +} + + +OFCondition DRTAlgorithmNameCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResource, value, pos); +} + + +OFCondition DRTAlgorithmNameCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResourceName, value, pos); +} + + +OFCondition DRTAlgorithmNameCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResourceUID, value, pos); +} + + +OFCondition DRTAlgorithmNameCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(URNCodeValue, value, pos); +} + + +OFCondition DRTAlgorithmNameCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodeMeaning.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAlgorithmNameCodeSequence::Item::setCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodeValue.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAlgorithmNameCodeSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodingSchemeDesignator.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAlgorithmNameCodeSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodingSchemeVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAlgorithmNameCodeSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupExtensionCreatorUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAlgorithmNameCodeSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupExtensionFlag.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAlgorithmNameCodeSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupLocalVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAlgorithmNameCodeSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAlgorithmNameCodeSequence::Item::setContextIdentifier(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextIdentifier.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAlgorithmNameCodeSequence::Item::setContextUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAlgorithmNameCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = LongCodeValue.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAlgorithmNameCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResource.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAlgorithmNameCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResourceName.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAlgorithmNameCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResourceUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAlgorithmNameCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal; + if (result.good()) + result = URNCodeValue.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTAlgorithmNameCodeSequence::DRTAlgorithmNameCodeSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTAlgorithmNameCodeSequence::DRTAlgorithmNameCodeSequence(const DRTAlgorithmNameCodeSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTAlgorithmNameCodeSequence &DRTAlgorithmNameCodeSequence::operator=(const DRTAlgorithmNameCodeSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTAlgorithmNameCodeSequence::~DRTAlgorithmNameCodeSequence() +{ + clear(); +} + + +void DRTAlgorithmNameCodeSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTAlgorithmNameCodeSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTAlgorithmNameCodeSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTAlgorithmNameCodeSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTAlgorithmNameCodeSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTAlgorithmNameCodeSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTAlgorithmNameCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTAlgorithmNameCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTAlgorithmNameCodeSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTAlgorithmNameCodeSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTAlgorithmNameCodeSequence::Item &DRTAlgorithmNameCodeSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTAlgorithmNameCodeSequence::Item &DRTAlgorithmNameCodeSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTAlgorithmNameCodeSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTAlgorithmNameCodeSequence::Item &DRTAlgorithmNameCodeSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTAlgorithmNameCodeSequence::Item &DRTAlgorithmNameCodeSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTAlgorithmNameCodeSequence::Item &DRTAlgorithmNameCodeSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTAlgorithmNameCodeSequence::Item &DRTAlgorithmNameCodeSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTAlgorithmNameCodeSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTAlgorithmNameCodeSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTAlgorithmNameCodeSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTAlgorithmNameCodeSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_AlgorithmNameCodeSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_AlgorithmNameCodeSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTAlgorithmNameCodeSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_AlgorithmNameCodeSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtarms.cc b/dcmrt/libsrc/drtarms.cc new file mode 100644 index 00000000..04381a4b --- /dev/null +++ b/dcmrt/libsrc/drtarms.cc @@ -0,0 +1,959 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTAnatomicRegionModifierSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtarms.h" + + +// --- item class --- + +DRTAnatomicRegionModifierSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + CodeMeaning(DCM_CodeMeaning), + CodeValue(DCM_CodeValue), + CodingSchemeDesignator(DCM_CodingSchemeDesignator), + CodingSchemeVersion(DCM_CodingSchemeVersion), + ContextGroupExtensionCreatorUID(DCM_ContextGroupExtensionCreatorUID), + ContextGroupExtensionFlag(DCM_ContextGroupExtensionFlag), + ContextGroupLocalVersion(DCM_ContextGroupLocalVersion), + ContextGroupVersion(DCM_ContextGroupVersion), + ContextIdentifier(DCM_ContextIdentifier), + ContextUID(DCM_ContextUID), + EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), + LongCodeValue(DCM_LongCodeValue), + MappingResource(DCM_MappingResource), + MappingResourceName(DCM_MappingResourceName), + MappingResourceUID(DCM_MappingResourceUID), + URNCodeValue(DCM_URNCodeValue) +{ +} + + +DRTAnatomicRegionModifierSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + CodeMeaning(copy.CodeMeaning), + CodeValue(copy.CodeValue), + CodingSchemeDesignator(copy.CodingSchemeDesignator), + CodingSchemeVersion(copy.CodingSchemeVersion), + ContextGroupExtensionCreatorUID(copy.ContextGroupExtensionCreatorUID), + ContextGroupExtensionFlag(copy.ContextGroupExtensionFlag), + ContextGroupLocalVersion(copy.ContextGroupLocalVersion), + ContextGroupVersion(copy.ContextGroupVersion), + ContextIdentifier(copy.ContextIdentifier), + ContextUID(copy.ContextUID), + EquivalentCodeSequence(copy.EquivalentCodeSequence), + LongCodeValue(copy.LongCodeValue), + MappingResource(copy.MappingResource), + MappingResourceName(copy.MappingResourceName), + MappingResourceUID(copy.MappingResourceUID), + URNCodeValue(copy.URNCodeValue) +{ +} + + +DRTAnatomicRegionModifierSequence::Item::~Item() +{ +} + + +DRTAnatomicRegionModifierSequence::Item &DRTAnatomicRegionModifierSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + CodeMeaning = copy.CodeMeaning; + CodeValue = copy.CodeValue; + CodingSchemeDesignator = copy.CodingSchemeDesignator; + CodingSchemeVersion = copy.CodingSchemeVersion; + ContextGroupExtensionCreatorUID = copy.ContextGroupExtensionCreatorUID; + ContextGroupExtensionFlag = copy.ContextGroupExtensionFlag; + ContextGroupLocalVersion = copy.ContextGroupLocalVersion; + ContextGroupVersion = copy.ContextGroupVersion; + ContextIdentifier = copy.ContextIdentifier; + ContextUID = copy.ContextUID; + EquivalentCodeSequence = copy.EquivalentCodeSequence; + LongCodeValue = copy.LongCodeValue; + MappingResource = copy.MappingResource; + MappingResourceName = copy.MappingResourceName; + MappingResourceUID = copy.MappingResourceUID; + URNCodeValue = copy.URNCodeValue; + } + return *this; +} + + +void DRTAnatomicRegionModifierSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + CodeValue.clear(); + CodingSchemeDesignator.clear(); + CodingSchemeVersion.clear(); + CodeMeaning.clear(); + LongCodeValue.clear(); + URNCodeValue.clear(); + EquivalentCodeSequence.clear(); + ContextIdentifier.clear(); + ContextUID.clear(); + MappingResource.clear(); + MappingResourceUID.clear(); + MappingResourceName.clear(); + ContextGroupVersion.clear(); + ContextGroupExtensionFlag.clear(); + ContextGroupLocalVersion.clear(); + ContextGroupExtensionCreatorUID.clear(); + } +} + + +OFBool DRTAnatomicRegionModifierSequence::Item::isEmpty() +{ + return CodeValue.isEmpty() && + CodingSchemeDesignator.isEmpty() && + CodingSchemeVersion.isEmpty() && + CodeMeaning.isEmpty() && + LongCodeValue.isEmpty() && + URNCodeValue.isEmpty() && + EquivalentCodeSequence.isEmpty() && + ContextIdentifier.isEmpty() && + ContextUID.isEmpty() && + MappingResource.isEmpty() && + MappingResourceUID.isEmpty() && + MappingResourceName.isEmpty() && + ContextGroupVersion.isEmpty() && + ContextGroupExtensionFlag.isEmpty() && + ContextGroupLocalVersion.isEmpty() && + ContextGroupExtensionCreatorUID.isEmpty(); +} + + +OFBool DRTAnatomicRegionModifierSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTAnatomicRegionModifierSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "AnatomicRegionModifierSequence"); + getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "AnatomicRegionModifierSequence"); + getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "AnatomicRegionModifierSequence"); + getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "AnatomicRegionModifierSequence"); + getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "AnatomicRegionModifierSequence"); + getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "AnatomicRegionModifierSequence"); + EquivalentCodeSequence.read(item, "1-n", "3", "AnatomicRegionModifierSequence"); + getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "AnatomicRegionModifierSequence"); + getAndCheckElementFromDataset(item, ContextUID, "1", "3", "AnatomicRegionModifierSequence"); + getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "AnatomicRegionModifierSequence"); + getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "AnatomicRegionModifierSequence"); + getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "AnatomicRegionModifierSequence"); + getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "AnatomicRegionModifierSequence"); + getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "AnatomicRegionModifierSequence"); + getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "AnatomicRegionModifierSequence"); + getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "AnatomicRegionModifierSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTAnatomicRegionModifierSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "AnatomicRegionModifierSequence"); + addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "AnatomicRegionModifierSequence"); + addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "AnatomicRegionModifierSequence"); + addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "AnatomicRegionModifierSequence"); + addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "AnatomicRegionModifierSequence"); + addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "AnatomicRegionModifierSequence"); + if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "AnatomicRegionModifierSequence"); + addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "AnatomicRegionModifierSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "AnatomicRegionModifierSequence"); + addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "AnatomicRegionModifierSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "AnatomicRegionModifierSequence"); + addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "AnatomicRegionModifierSequence"); + addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "AnatomicRegionModifierSequence"); + addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "AnatomicRegionModifierSequence"); + addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "AnatomicRegionModifierSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "AnatomicRegionModifierSequence"); + } + return result; +} + + +OFCondition DRTAnatomicRegionModifierSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodeMeaning, value, pos); +} + + +OFCondition DRTAnatomicRegionModifierSequence::Item::getCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodeValue, value, pos); +} + + +OFCondition DRTAnatomicRegionModifierSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodingSchemeDesignator, value, pos); +} + + +OFCondition DRTAnatomicRegionModifierSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodingSchemeVersion, value, pos); +} + + +OFCondition DRTAnatomicRegionModifierSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupExtensionCreatorUID, value, pos); +} + + +OFCondition DRTAnatomicRegionModifierSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupExtensionFlag, value, pos); +} + + +OFCondition DRTAnatomicRegionModifierSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupLocalVersion, value, pos); +} + + +OFCondition DRTAnatomicRegionModifierSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupVersion, value, pos); +} + + +OFCondition DRTAnatomicRegionModifierSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextIdentifier, value, pos); +} + + +OFCondition DRTAnatomicRegionModifierSequence::Item::getContextUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextUID, value, pos); +} + + +OFCondition DRTAnatomicRegionModifierSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(LongCodeValue, value, pos); +} + + +OFCondition DRTAnatomicRegionModifierSequence::Item::getMappingResource(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResource, value, pos); +} + + +OFCondition DRTAnatomicRegionModifierSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResourceName, value, pos); +} + + +OFCondition DRTAnatomicRegionModifierSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResourceUID, value, pos); +} + + +OFCondition DRTAnatomicRegionModifierSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(URNCodeValue, value, pos); +} + + +OFCondition DRTAnatomicRegionModifierSequence::Item::setCodeMeaning(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodeMeaning.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAnatomicRegionModifierSequence::Item::setCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodeValue.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAnatomicRegionModifierSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodingSchemeDesignator.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAnatomicRegionModifierSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodingSchemeVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAnatomicRegionModifierSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupExtensionCreatorUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAnatomicRegionModifierSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupExtensionFlag.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAnatomicRegionModifierSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupLocalVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAnatomicRegionModifierSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAnatomicRegionModifierSequence::Item::setContextIdentifier(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextIdentifier.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAnatomicRegionModifierSequence::Item::setContextUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAnatomicRegionModifierSequence::Item::setLongCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = LongCodeValue.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAnatomicRegionModifierSequence::Item::setMappingResource(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResource.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAnatomicRegionModifierSequence::Item::setMappingResourceName(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResourceName.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAnatomicRegionModifierSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResourceUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAnatomicRegionModifierSequence::Item::setURNCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal; + if (result.good()) + result = URNCodeValue.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTAnatomicRegionModifierSequence::DRTAnatomicRegionModifierSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTAnatomicRegionModifierSequence::DRTAnatomicRegionModifierSequence(const DRTAnatomicRegionModifierSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTAnatomicRegionModifierSequence &DRTAnatomicRegionModifierSequence::operator=(const DRTAnatomicRegionModifierSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTAnatomicRegionModifierSequence::~DRTAnatomicRegionModifierSequence() +{ + clear(); +} + + +void DRTAnatomicRegionModifierSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTAnatomicRegionModifierSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTAnatomicRegionModifierSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTAnatomicRegionModifierSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTAnatomicRegionModifierSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTAnatomicRegionModifierSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTAnatomicRegionModifierSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTAnatomicRegionModifierSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTAnatomicRegionModifierSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTAnatomicRegionModifierSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTAnatomicRegionModifierSequence::Item &DRTAnatomicRegionModifierSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTAnatomicRegionModifierSequence::Item &DRTAnatomicRegionModifierSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTAnatomicRegionModifierSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTAnatomicRegionModifierSequence::Item &DRTAnatomicRegionModifierSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTAnatomicRegionModifierSequence::Item &DRTAnatomicRegionModifierSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTAnatomicRegionModifierSequence::Item &DRTAnatomicRegionModifierSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTAnatomicRegionModifierSequence::Item &DRTAnatomicRegionModifierSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTAnatomicRegionModifierSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTAnatomicRegionModifierSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTAnatomicRegionModifierSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTAnatomicRegionModifierSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_AnatomicRegionModifierSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_AnatomicRegionModifierSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTAnatomicRegionModifierSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_AnatomicRegionModifierSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtars.cc b/dcmrt/libsrc/drtars.cc new file mode 100644 index 00000000..62718b21 --- /dev/null +++ b/dcmrt/libsrc/drtars.cc @@ -0,0 +1,966 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTAnatomicRegionSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtars.h" + + +// --- item class --- + +DRTAnatomicRegionSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + AnatomicRegionModifierSequence(emptyDefaultItem /*emptyDefaultSequence*/), + CodeMeaning(DCM_CodeMeaning), + CodeValue(DCM_CodeValue), + CodingSchemeDesignator(DCM_CodingSchemeDesignator), + CodingSchemeVersion(DCM_CodingSchemeVersion), + ContextGroupExtensionCreatorUID(DCM_ContextGroupExtensionCreatorUID), + ContextGroupExtensionFlag(DCM_ContextGroupExtensionFlag), + ContextGroupLocalVersion(DCM_ContextGroupLocalVersion), + ContextGroupVersion(DCM_ContextGroupVersion), + ContextIdentifier(DCM_ContextIdentifier), + ContextUID(DCM_ContextUID), + EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), + LongCodeValue(DCM_LongCodeValue), + MappingResource(DCM_MappingResource), + MappingResourceName(DCM_MappingResourceName), + MappingResourceUID(DCM_MappingResourceUID), + URNCodeValue(DCM_URNCodeValue) +{ +} + + +DRTAnatomicRegionSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + AnatomicRegionModifierSequence(copy.AnatomicRegionModifierSequence), + CodeMeaning(copy.CodeMeaning), + CodeValue(copy.CodeValue), + CodingSchemeDesignator(copy.CodingSchemeDesignator), + CodingSchemeVersion(copy.CodingSchemeVersion), + ContextGroupExtensionCreatorUID(copy.ContextGroupExtensionCreatorUID), + ContextGroupExtensionFlag(copy.ContextGroupExtensionFlag), + ContextGroupLocalVersion(copy.ContextGroupLocalVersion), + ContextGroupVersion(copy.ContextGroupVersion), + ContextIdentifier(copy.ContextIdentifier), + ContextUID(copy.ContextUID), + EquivalentCodeSequence(copy.EquivalentCodeSequence), + LongCodeValue(copy.LongCodeValue), + MappingResource(copy.MappingResource), + MappingResourceName(copy.MappingResourceName), + MappingResourceUID(copy.MappingResourceUID), + URNCodeValue(copy.URNCodeValue) +{ +} + + +DRTAnatomicRegionSequence::Item::~Item() +{ +} + + +DRTAnatomicRegionSequence::Item &DRTAnatomicRegionSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + AnatomicRegionModifierSequence = copy.AnatomicRegionModifierSequence; + CodeMeaning = copy.CodeMeaning; + CodeValue = copy.CodeValue; + CodingSchemeDesignator = copy.CodingSchemeDesignator; + CodingSchemeVersion = copy.CodingSchemeVersion; + ContextGroupExtensionCreatorUID = copy.ContextGroupExtensionCreatorUID; + ContextGroupExtensionFlag = copy.ContextGroupExtensionFlag; + ContextGroupLocalVersion = copy.ContextGroupLocalVersion; + ContextGroupVersion = copy.ContextGroupVersion; + ContextIdentifier = copy.ContextIdentifier; + ContextUID = copy.ContextUID; + EquivalentCodeSequence = copy.EquivalentCodeSequence; + LongCodeValue = copy.LongCodeValue; + MappingResource = copy.MappingResource; + MappingResourceName = copy.MappingResourceName; + MappingResourceUID = copy.MappingResourceUID; + URNCodeValue = copy.URNCodeValue; + } + return *this; +} + + +void DRTAnatomicRegionSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + CodeValue.clear(); + CodingSchemeDesignator.clear(); + CodingSchemeVersion.clear(); + CodeMeaning.clear(); + LongCodeValue.clear(); + URNCodeValue.clear(); + EquivalentCodeSequence.clear(); + ContextIdentifier.clear(); + ContextUID.clear(); + MappingResource.clear(); + MappingResourceUID.clear(); + MappingResourceName.clear(); + ContextGroupVersion.clear(); + ContextGroupExtensionFlag.clear(); + ContextGroupLocalVersion.clear(); + ContextGroupExtensionCreatorUID.clear(); + AnatomicRegionModifierSequence.clear(); + } +} + + +OFBool DRTAnatomicRegionSequence::Item::isEmpty() +{ + return CodeValue.isEmpty() && + CodingSchemeDesignator.isEmpty() && + CodingSchemeVersion.isEmpty() && + CodeMeaning.isEmpty() && + LongCodeValue.isEmpty() && + URNCodeValue.isEmpty() && + EquivalentCodeSequence.isEmpty() && + ContextIdentifier.isEmpty() && + ContextUID.isEmpty() && + MappingResource.isEmpty() && + MappingResourceUID.isEmpty() && + MappingResourceName.isEmpty() && + ContextGroupVersion.isEmpty() && + ContextGroupExtensionFlag.isEmpty() && + ContextGroupLocalVersion.isEmpty() && + ContextGroupExtensionCreatorUID.isEmpty() && + AnatomicRegionModifierSequence.isEmpty(); +} + + +OFBool DRTAnatomicRegionSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTAnatomicRegionSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "AnatomicRegionSequence"); + getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "AnatomicRegionSequence"); + getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "AnatomicRegionSequence"); + getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "AnatomicRegionSequence"); + getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "AnatomicRegionSequence"); + getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "AnatomicRegionSequence"); + EquivalentCodeSequence.read(item, "1-n", "3", "AnatomicRegionSequence"); + getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "AnatomicRegionSequence"); + getAndCheckElementFromDataset(item, ContextUID, "1", "3", "AnatomicRegionSequence"); + getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "AnatomicRegionSequence"); + getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "AnatomicRegionSequence"); + getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "AnatomicRegionSequence"); + getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "AnatomicRegionSequence"); + getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "AnatomicRegionSequence"); + getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "AnatomicRegionSequence"); + getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "AnatomicRegionSequence"); + AnatomicRegionModifierSequence.read(item, "1-n", "3", "AnatomicRegionSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTAnatomicRegionSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "AnatomicRegionSequence"); + addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "AnatomicRegionSequence"); + addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "AnatomicRegionSequence"); + addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "AnatomicRegionSequence"); + addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "AnatomicRegionSequence"); + addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "AnatomicRegionSequence"); + if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "AnatomicRegionSequence"); + addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "AnatomicRegionSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "AnatomicRegionSequence"); + addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "AnatomicRegionSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "AnatomicRegionSequence"); + addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "AnatomicRegionSequence"); + addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "AnatomicRegionSequence"); + addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "AnatomicRegionSequence"); + addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "AnatomicRegionSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "AnatomicRegionSequence"); + if (result.good()) result = AnatomicRegionModifierSequence.write(item, "1-n", "3", "AnatomicRegionSequence"); + } + return result; +} + + +OFCondition DRTAnatomicRegionSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodeMeaning, value, pos); +} + + +OFCondition DRTAnatomicRegionSequence::Item::getCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodeValue, value, pos); +} + + +OFCondition DRTAnatomicRegionSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodingSchemeDesignator, value, pos); +} + + +OFCondition DRTAnatomicRegionSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodingSchemeVersion, value, pos); +} + + +OFCondition DRTAnatomicRegionSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupExtensionCreatorUID, value, pos); +} + + +OFCondition DRTAnatomicRegionSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupExtensionFlag, value, pos); +} + + +OFCondition DRTAnatomicRegionSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupLocalVersion, value, pos); +} + + +OFCondition DRTAnatomicRegionSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupVersion, value, pos); +} + + +OFCondition DRTAnatomicRegionSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextIdentifier, value, pos); +} + + +OFCondition DRTAnatomicRegionSequence::Item::getContextUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextUID, value, pos); +} + + +OFCondition DRTAnatomicRegionSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(LongCodeValue, value, pos); +} + + +OFCondition DRTAnatomicRegionSequence::Item::getMappingResource(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResource, value, pos); +} + + +OFCondition DRTAnatomicRegionSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResourceName, value, pos); +} + + +OFCondition DRTAnatomicRegionSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResourceUID, value, pos); +} + + +OFCondition DRTAnatomicRegionSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(URNCodeValue, value, pos); +} + + +OFCondition DRTAnatomicRegionSequence::Item::setCodeMeaning(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodeMeaning.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAnatomicRegionSequence::Item::setCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodeValue.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAnatomicRegionSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodingSchemeDesignator.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAnatomicRegionSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodingSchemeVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAnatomicRegionSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupExtensionCreatorUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAnatomicRegionSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupExtensionFlag.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAnatomicRegionSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupLocalVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAnatomicRegionSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAnatomicRegionSequence::Item::setContextIdentifier(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextIdentifier.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAnatomicRegionSequence::Item::setContextUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAnatomicRegionSequence::Item::setLongCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = LongCodeValue.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAnatomicRegionSequence::Item::setMappingResource(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResource.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAnatomicRegionSequence::Item::setMappingResourceName(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResourceName.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAnatomicRegionSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResourceUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTAnatomicRegionSequence::Item::setURNCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal; + if (result.good()) + result = URNCodeValue.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTAnatomicRegionSequence::DRTAnatomicRegionSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTAnatomicRegionSequence::DRTAnatomicRegionSequence(const DRTAnatomicRegionSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTAnatomicRegionSequence &DRTAnatomicRegionSequence::operator=(const DRTAnatomicRegionSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTAnatomicRegionSequence::~DRTAnatomicRegionSequence() +{ + clear(); +} + + +void DRTAnatomicRegionSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTAnatomicRegionSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTAnatomicRegionSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTAnatomicRegionSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTAnatomicRegionSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTAnatomicRegionSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTAnatomicRegionSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTAnatomicRegionSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTAnatomicRegionSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTAnatomicRegionSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTAnatomicRegionSequence::Item &DRTAnatomicRegionSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTAnatomicRegionSequence::Item &DRTAnatomicRegionSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTAnatomicRegionSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTAnatomicRegionSequence::Item &DRTAnatomicRegionSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTAnatomicRegionSequence::Item &DRTAnatomicRegionSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTAnatomicRegionSequence::Item &DRTAnatomicRegionSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTAnatomicRegionSequence::Item &DRTAnatomicRegionSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTAnatomicRegionSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTAnatomicRegionSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTAnatomicRegionSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTAnatomicRegionSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_AnatomicRegionSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_AnatomicRegionSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTAnatomicRegionSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_AnatomicRegionSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtas1.cc b/dcmrt/libsrc/drtas1.cc index ff3ac9b9..d15dbfa4 100644 --- a/dcmrt/libsrc/drtas1.cc +++ b/dcmrt/libsrc/drtas1.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTApplicatorSequenceInRTBeamsModule * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -362,10 +362,12 @@ OFCondition DRTApplicatorSequenceInRTBeamsModule::gotoFirstItem() OFCondition DRTApplicatorSequenceInRTBeamsModule::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtas2.cc b/dcmrt/libsrc/drtas2.cc new file mode 100644 index 00000000..c5d436af --- /dev/null +++ b/dcmrt/libsrc/drtas2.cc @@ -0,0 +1,665 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTApplicatorSequenceInRTImageModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtas2.h" + + +// --- item class --- + +DRTApplicatorSequenceInRTImageModule::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + AccessoryCode(DCM_AccessoryCode), + ApplicatorDescription(DCM_ApplicatorDescription), + ApplicatorGeometrySequence(emptyDefaultItem /*emptyDefaultSequence*/), + ApplicatorID(DCM_ApplicatorID), + ApplicatorType(DCM_ApplicatorType), + SourceToApplicatorMountingPositionDistance(DCM_SourceToApplicatorMountingPositionDistance) +{ +} + + +DRTApplicatorSequenceInRTImageModule::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + AccessoryCode(copy.AccessoryCode), + ApplicatorDescription(copy.ApplicatorDescription), + ApplicatorGeometrySequence(copy.ApplicatorGeometrySequence), + ApplicatorID(copy.ApplicatorID), + ApplicatorType(copy.ApplicatorType), + SourceToApplicatorMountingPositionDistance(copy.SourceToApplicatorMountingPositionDistance) +{ +} + + +DRTApplicatorSequenceInRTImageModule::Item::~Item() +{ +} + + +DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + AccessoryCode = copy.AccessoryCode; + ApplicatorDescription = copy.ApplicatorDescription; + ApplicatorGeometrySequence = copy.ApplicatorGeometrySequence; + ApplicatorID = copy.ApplicatorID; + ApplicatorType = copy.ApplicatorType; + SourceToApplicatorMountingPositionDistance = copy.SourceToApplicatorMountingPositionDistance; + } + return *this; +} + + +void DRTApplicatorSequenceInRTImageModule::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + ApplicatorID.clear(); + AccessoryCode.clear(); + ApplicatorType.clear(); + ApplicatorGeometrySequence.clear(); + SourceToApplicatorMountingPositionDistance.clear(); + ApplicatorDescription.clear(); + } +} + + +OFBool DRTApplicatorSequenceInRTImageModule::Item::isEmpty() +{ + return ApplicatorID.isEmpty() && + AccessoryCode.isEmpty() && + ApplicatorType.isEmpty() && + ApplicatorGeometrySequence.isEmpty() && + SourceToApplicatorMountingPositionDistance.isEmpty() && + ApplicatorDescription.isEmpty(); +} + + +OFBool DRTApplicatorSequenceInRTImageModule::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTApplicatorSequenceInRTImageModule::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, ApplicatorID, "1", "1", "ApplicatorSequence"); + getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "ApplicatorSequence"); + getAndCheckElementFromDataset(item, ApplicatorType, "1", "1", "ApplicatorSequence"); + ApplicatorGeometrySequence.read(item, "1-n", "3", "ApplicatorSequence"); + getAndCheckElementFromDataset(item, SourceToApplicatorMountingPositionDistance, "1", "3", "ApplicatorSequence"); + getAndCheckElementFromDataset(item, ApplicatorDescription, "1", "3", "ApplicatorSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTImageModule::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmShortString(ApplicatorID), "1", "1", "ApplicatorSequence"); + addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "ApplicatorSequence"); + addElementToDataset(result, item, new DcmCodeString(ApplicatorType), "1", "1", "ApplicatorSequence"); + if (result.good()) result = ApplicatorGeometrySequence.write(item, "1-n", "3", "ApplicatorSequence"); + addElementToDataset(result, item, new DcmFloatingPointSingle(SourceToApplicatorMountingPositionDistance), "1", "3", "ApplicatorSequence"); + addElementToDataset(result, item, new DcmLongString(ApplicatorDescription), "1", "3", "ApplicatorSequence"); + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTImageModule::Item::getAccessoryCode(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(AccessoryCode, value, pos); +} + + +OFCondition DRTApplicatorSequenceInRTImageModule::Item::getApplicatorDescription(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ApplicatorDescription, value, pos); +} + + +OFCondition DRTApplicatorSequenceInRTImageModule::Item::getApplicatorID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ApplicatorID, value, pos); +} + + +OFCondition DRTApplicatorSequenceInRTImageModule::Item::getApplicatorType(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ApplicatorType, value, pos); +} + + +OFCondition DRTApplicatorSequenceInRTImageModule::Item::getSourceToApplicatorMountingPositionDistance(Float32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointSingle &, SourceToApplicatorMountingPositionDistance).getFloat32(value, pos); +} + + +OFCondition DRTApplicatorSequenceInRTImageModule::Item::setAccessoryCode(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = AccessoryCode.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTImageModule::Item::setApplicatorDescription(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ApplicatorDescription.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTImageModule::Item::setApplicatorID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ApplicatorID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTImageModule::Item::setApplicatorType(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ApplicatorType.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTImageModule::Item::setSourceToApplicatorMountingPositionDistance(const Float32 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return SourceToApplicatorMountingPositionDistance.putFloat32(value, pos); +} + + +// --- sequence class --- + +DRTApplicatorSequenceInRTImageModule::DRTApplicatorSequenceInRTImageModule(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTApplicatorSequenceInRTImageModule::DRTApplicatorSequenceInRTImageModule(const DRTApplicatorSequenceInRTImageModule ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTApplicatorSequenceInRTImageModule &DRTApplicatorSequenceInRTImageModule::operator=(const DRTApplicatorSequenceInRTImageModule ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTApplicatorSequenceInRTImageModule::~DRTApplicatorSequenceInRTImageModule() +{ + clear(); +} + + +void DRTApplicatorSequenceInRTImageModule::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTApplicatorSequenceInRTImageModule::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTApplicatorSequenceInRTImageModule::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTApplicatorSequenceInRTImageModule::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTApplicatorSequenceInRTImageModule::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTImageModule::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTImageModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTImageModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTImageModule::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTApplicatorSequenceInRTImageModule::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTApplicatorSequenceInRTImageModule::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTApplicatorSequenceInRTImageModule::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTImageModule::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTImageModule::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTImageModule::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_ApplicatorSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_ApplicatorSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTImageModule::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ApplicatorSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtas3.cc b/dcmrt/libsrc/drtas3.cc new file mode 100644 index 00000000..bc1f09db --- /dev/null +++ b/dcmrt/libsrc/drtas3.cc @@ -0,0 +1,633 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTApplicatorSequenceInRTIonBeamsModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtas3.h" + + +// --- item class --- + +DRTApplicatorSequenceInRTIonBeamsModule::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + AccessoryCode(DCM_AccessoryCode), + ApplicatorDescription(DCM_ApplicatorDescription), + ApplicatorID(DCM_ApplicatorID), + ApplicatorType(DCM_ApplicatorType) +{ +} + + +DRTApplicatorSequenceInRTIonBeamsModule::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + AccessoryCode(copy.AccessoryCode), + ApplicatorDescription(copy.ApplicatorDescription), + ApplicatorID(copy.ApplicatorID), + ApplicatorType(copy.ApplicatorType) +{ +} + + +DRTApplicatorSequenceInRTIonBeamsModule::Item::~Item() +{ +} + + +DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + AccessoryCode = copy.AccessoryCode; + ApplicatorDescription = copy.ApplicatorDescription; + ApplicatorID = copy.ApplicatorID; + ApplicatorType = copy.ApplicatorType; + } + return *this; +} + + +void DRTApplicatorSequenceInRTIonBeamsModule::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + ApplicatorID.clear(); + AccessoryCode.clear(); + ApplicatorType.clear(); + ApplicatorDescription.clear(); + } +} + + +OFBool DRTApplicatorSequenceInRTIonBeamsModule::Item::isEmpty() +{ + return ApplicatorID.isEmpty() && + AccessoryCode.isEmpty() && + ApplicatorType.isEmpty() && + ApplicatorDescription.isEmpty(); +} + + +OFBool DRTApplicatorSequenceInRTIonBeamsModule::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, ApplicatorID, "1", "1", "ApplicatorSequence"); + getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "ApplicatorSequence"); + getAndCheckElementFromDataset(item, ApplicatorType, "1", "1", "ApplicatorSequence"); + getAndCheckElementFromDataset(item, ApplicatorDescription, "1", "3", "ApplicatorSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmShortString(ApplicatorID), "1", "1", "ApplicatorSequence"); + addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "ApplicatorSequence"); + addElementToDataset(result, item, new DcmCodeString(ApplicatorType), "1", "1", "ApplicatorSequence"); + addElementToDataset(result, item, new DcmLongString(ApplicatorDescription), "1", "3", "ApplicatorSequence"); + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::getAccessoryCode(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(AccessoryCode, value, pos); +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::getApplicatorDescription(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ApplicatorDescription, value, pos); +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::getApplicatorID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ApplicatorID, value, pos); +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::getApplicatorType(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ApplicatorType, value, pos); +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::setAccessoryCode(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = AccessoryCode.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::setApplicatorDescription(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ApplicatorDescription.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::setApplicatorID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ApplicatorID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::setApplicatorType(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ApplicatorType.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTApplicatorSequenceInRTIonBeamsModule::DRTApplicatorSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTApplicatorSequenceInRTIonBeamsModule::DRTApplicatorSequenceInRTIonBeamsModule(const DRTApplicatorSequenceInRTIonBeamsModule ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTApplicatorSequenceInRTIonBeamsModule &DRTApplicatorSequenceInRTIonBeamsModule::operator=(const DRTApplicatorSequenceInRTIonBeamsModule ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTApplicatorSequenceInRTIonBeamsModule::~DRTApplicatorSequenceInRTIonBeamsModule() +{ + clear(); +} + + +void DRTApplicatorSequenceInRTIonBeamsModule::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTApplicatorSequenceInRTIonBeamsModule::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTApplicatorSequenceInRTIonBeamsModule::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTApplicatorSequenceInRTIonBeamsModule::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsModule::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsModule::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsModule::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsModule::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_ApplicatorSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_ApplicatorSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsModule::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ApplicatorSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtas4.cc b/dcmrt/libsrc/drtas4.cc new file mode 100644 index 00000000..d564f237 --- /dev/null +++ b/dcmrt/libsrc/drtas4.cc @@ -0,0 +1,633 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTApplicatorSequenceInRTIonBeamsSessionRecordModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtas4.h" + + +// --- item class --- + +DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + AccessoryCode(DCM_AccessoryCode), + ApplicatorDescription(DCM_ApplicatorDescription), + ApplicatorID(DCM_ApplicatorID), + ApplicatorType(DCM_ApplicatorType) +{ +} + + +DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + AccessoryCode(copy.AccessoryCode), + ApplicatorDescription(copy.ApplicatorDescription), + ApplicatorID(copy.ApplicatorID), + ApplicatorType(copy.ApplicatorType) +{ +} + + +DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::~Item() +{ +} + + +DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + AccessoryCode = copy.AccessoryCode; + ApplicatorDescription = copy.ApplicatorDescription; + ApplicatorID = copy.ApplicatorID; + ApplicatorType = copy.ApplicatorType; + } + return *this; +} + + +void DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + ApplicatorID.clear(); + AccessoryCode.clear(); + ApplicatorType.clear(); + ApplicatorDescription.clear(); + } +} + + +OFBool DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::isEmpty() +{ + return ApplicatorID.isEmpty() && + AccessoryCode.isEmpty() && + ApplicatorType.isEmpty() && + ApplicatorDescription.isEmpty(); +} + + +OFBool DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, ApplicatorID, "1", "1", "ApplicatorSequence"); + getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "ApplicatorSequence"); + getAndCheckElementFromDataset(item, ApplicatorType, "1", "1", "ApplicatorSequence"); + getAndCheckElementFromDataset(item, ApplicatorDescription, "1", "3", "ApplicatorSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmShortString(ApplicatorID), "1", "1", "ApplicatorSequence"); + addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "ApplicatorSequence"); + addElementToDataset(result, item, new DcmCodeString(ApplicatorType), "1", "1", "ApplicatorSequence"); + addElementToDataset(result, item, new DcmLongString(ApplicatorDescription), "1", "3", "ApplicatorSequence"); + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::getAccessoryCode(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(AccessoryCode, value, pos); +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::getApplicatorDescription(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ApplicatorDescription, value, pos); +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::getApplicatorID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ApplicatorID, value, pos); +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::getApplicatorType(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ApplicatorType, value, pos); +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::setAccessoryCode(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = AccessoryCode.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::setApplicatorDescription(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ApplicatorDescription.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::setApplicatorID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ApplicatorID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::setApplicatorType(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ApplicatorType.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::DRTApplicatorSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::DRTApplicatorSequenceInRTIonBeamsSessionRecordModule(const DRTApplicatorSequenceInRTIonBeamsSessionRecordModule ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTApplicatorSequenceInRTIonBeamsSessionRecordModule &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::operator=(const DRTApplicatorSequenceInRTIonBeamsSessionRecordModule ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::~DRTApplicatorSequenceInRTIonBeamsSessionRecordModule() +{ + clear(); +} + + +void DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_ApplicatorSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_ApplicatorSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ApplicatorSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtas5.cc b/dcmrt/libsrc/drtas5.cc deleted file mode 100644 index d5f33fe9..00000000 --- a/dcmrt/libsrc/drtas5.cc +++ /dev/null @@ -1,663 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Source file for class DRTApplicatorSequenceInRTImageModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/dcmrt/seq/drtas5.h" - - -// --- item class --- - -DRTApplicatorSequenceInRTImageModule::Item::Item(const OFBool emptyDefaultItem) - : EmptyDefaultItem(emptyDefaultItem), - AccessoryCode(DCM_AccessoryCode), - ApplicatorDescription(DCM_ApplicatorDescription), - ApplicatorGeometrySequence(emptyDefaultItem /*emptyDefaultSequence*/), - ApplicatorID(DCM_ApplicatorID), - ApplicatorType(DCM_ApplicatorType), - SourceToApplicatorMountingPositionDistance(DCM_SourceToApplicatorMountingPositionDistance) -{ -} - - -DRTApplicatorSequenceInRTImageModule::Item::Item(const Item ©) - : EmptyDefaultItem(copy.EmptyDefaultItem), - AccessoryCode(copy.AccessoryCode), - ApplicatorDescription(copy.ApplicatorDescription), - ApplicatorGeometrySequence(copy.ApplicatorGeometrySequence), - ApplicatorID(copy.ApplicatorID), - ApplicatorType(copy.ApplicatorType), - SourceToApplicatorMountingPositionDistance(copy.SourceToApplicatorMountingPositionDistance) -{ -} - - -DRTApplicatorSequenceInRTImageModule::Item::~Item() -{ -} - - -DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::Item::operator=(const Item ©) -{ - if (this != ©) - { - EmptyDefaultItem = copy.EmptyDefaultItem; - AccessoryCode = copy.AccessoryCode; - ApplicatorDescription = copy.ApplicatorDescription; - ApplicatorGeometrySequence = copy.ApplicatorGeometrySequence; - ApplicatorID = copy.ApplicatorID; - ApplicatorType = copy.ApplicatorType; - SourceToApplicatorMountingPositionDistance = copy.SourceToApplicatorMountingPositionDistance; - } - return *this; -} - - -void DRTApplicatorSequenceInRTImageModule::Item::clear() -{ - if (!EmptyDefaultItem) - { - /* clear all DICOM attributes */ - ApplicatorID.clear(); - AccessoryCode.clear(); - ApplicatorType.clear(); - ApplicatorGeometrySequence.clear(); - SourceToApplicatorMountingPositionDistance.clear(); - ApplicatorDescription.clear(); - } -} - - -OFBool DRTApplicatorSequenceInRTImageModule::Item::isEmpty() -{ - return ApplicatorID.isEmpty() && - AccessoryCode.isEmpty() && - ApplicatorType.isEmpty() && - ApplicatorGeometrySequence.isEmpty() && - SourceToApplicatorMountingPositionDistance.isEmpty() && - ApplicatorDescription.isEmpty(); -} - - -OFBool DRTApplicatorSequenceInRTImageModule::Item::isValid() const -{ - return !EmptyDefaultItem; -} - - -OFCondition DRTApplicatorSequenceInRTImageModule::Item::read(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - /* re-initialize object */ - clear(); - getAndCheckElementFromDataset(item, ApplicatorID, "1", "1", "ApplicatorSequence"); - getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "ApplicatorSequence"); - getAndCheckElementFromDataset(item, ApplicatorType, "1", "1", "ApplicatorSequence"); - ApplicatorGeometrySequence.read(item, "1-n", "3", "ApplicatorSequence"); - getAndCheckElementFromDataset(item, SourceToApplicatorMountingPositionDistance, "1", "3", "ApplicatorSequence"); - getAndCheckElementFromDataset(item, ApplicatorDescription, "1", "3", "ApplicatorSequence"); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTImageModule::Item::write(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = EC_Normal; - addElementToDataset(result, item, new DcmShortString(ApplicatorID), "1", "1", "ApplicatorSequence"); - addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "ApplicatorSequence"); - addElementToDataset(result, item, new DcmCodeString(ApplicatorType), "1", "1", "ApplicatorSequence"); - if (result.good()) result = ApplicatorGeometrySequence.write(item, "1-n", "3", "ApplicatorSequence"); - addElementToDataset(result, item, new DcmFloatingPointSingle(SourceToApplicatorMountingPositionDistance), "1", "3", "ApplicatorSequence"); - addElementToDataset(result, item, new DcmLongString(ApplicatorDescription), "1", "3", "ApplicatorSequence"); - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTImageModule::Item::getAccessoryCode(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(AccessoryCode, value, pos); -} - - -OFCondition DRTApplicatorSequenceInRTImageModule::Item::getApplicatorDescription(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ApplicatorDescription, value, pos); -} - - -OFCondition DRTApplicatorSequenceInRTImageModule::Item::getApplicatorID(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ApplicatorID, value, pos); -} - - -OFCondition DRTApplicatorSequenceInRTImageModule::Item::getApplicatorType(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ApplicatorType, value, pos); -} - - -OFCondition DRTApplicatorSequenceInRTImageModule::Item::getSourceToApplicatorMountingPositionDistance(Float32 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmFloatingPointSingle &, SourceToApplicatorMountingPositionDistance).getFloat32(value, pos); -} - - -OFCondition DRTApplicatorSequenceInRTImageModule::Item::setAccessoryCode(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = AccessoryCode.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTImageModule::Item::setApplicatorDescription(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ApplicatorDescription.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTImageModule::Item::setApplicatorID(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ApplicatorID.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTImageModule::Item::setApplicatorType(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ApplicatorType.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTImageModule::Item::setSourceToApplicatorMountingPositionDistance(const Float32 value, const unsigned long pos) -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return SourceToApplicatorMountingPositionDistance.putFloat32(value, pos); -} - - -// --- sequence class --- - -DRTApplicatorSequenceInRTImageModule::DRTApplicatorSequenceInRTImageModule(const OFBool emptyDefaultSequence) - : EmptyDefaultSequence(emptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - CurrentItem = SequenceOfItems.end(); -} - - -DRTApplicatorSequenceInRTImageModule::DRTApplicatorSequenceInRTImageModule(const DRTApplicatorSequenceInRTImageModule ©) - : EmptyDefaultSequence(copy.EmptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); -} - - -DRTApplicatorSequenceInRTImageModule &DRTApplicatorSequenceInRTImageModule::operator=(const DRTApplicatorSequenceInRTImageModule ©) -{ - if (this != ©) - { - clear(); - EmptyDefaultSequence = copy.EmptyDefaultSequence; - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); - } - return *this; -} - - -DRTApplicatorSequenceInRTImageModule::~DRTApplicatorSequenceInRTImageModule() -{ - clear(); -} - - -void DRTApplicatorSequenceInRTImageModule::clear() -{ - if (!EmptyDefaultSequence) - { - CurrentItem = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* delete all items and free memory */ - while (CurrentItem != last) - { - delete (*CurrentItem); - CurrentItem = SequenceOfItems.erase(CurrentItem); - } - /* make sure that the list is empty */ - SequenceOfItems.clear(); - CurrentItem = SequenceOfItems.end(); - } -} - - -OFBool DRTApplicatorSequenceInRTImageModule::isEmpty() -{ - return SequenceOfItems.empty(); -} - - -OFBool DRTApplicatorSequenceInRTImageModule::isValid() const -{ - return !EmptyDefaultSequence; -} - - -size_t DRTApplicatorSequenceInRTImageModule::getNumberOfItems() const -{ - return SequenceOfItems.size(); -} - - -OFCondition DRTApplicatorSequenceInRTImageModule::gotoFirstItem() -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - CurrentItem = SequenceOfItems.begin(); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTImageModule::gotoNextItem() -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - ++CurrentItem; - result = EC_Normal; - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTImageModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTImageModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTImageModule::gotoItem(const size_t num) -{ - return gotoItem(num, CurrentItem); -} - - -OFCondition DRTApplicatorSequenceInRTImageModule::getCurrentItem(Item *&item) const -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - item = *CurrentItem; - result = EC_Normal; - } - return result; -} - - -DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::getCurrentItem() -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -const DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::getCurrentItem() const -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -OFCondition DRTApplicatorSequenceInRTImageModule::getItem(const size_t num, Item *&item) -{ - OFListIterator(Item *) iterator; - OFCondition result = gotoItem(num, iterator); - if (result.good()) - item = *iterator; - return result; -} - - -DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::getItem(const size_t num) -{ - OFListIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -const DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::getItem(const size_t num) const -{ - OFListConstIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::operator[](const size_t num) -{ - return getItem(num); -} - - -const DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::operator[](const size_t num) const -{ - return getItem(num); -} - - -OFCondition DRTApplicatorSequenceInRTImageModule::addItem(Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.push_back(item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTImageModule::insertItem(const size_t pos, Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - result = gotoItem(pos, iterator); - if (result.good()) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.insert(iterator, 1, item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } else - result = addItem(item); - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTImageModule::removeItem(const size_t pos) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - if (gotoItem(pos, iterator).good()) - { - delete *iterator; - iterator = SequenceOfItems.erase(iterator); - result = EC_Normal; - } else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTImageModule::read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - /* re-initialize object */ - clear(); - /* retrieve sequence element from dataset */ - DcmSequenceOfItems *sequence; - result = dataset.findAndGetSequence(DCM_ApplicatorSequence, sequence); - if (sequence != NULL) - { - if (checkElementValue(*sequence, card, type, result, moduleName)) - { - DcmStack stack; - OFBool first = OFTrue; - /* iterate over all sequence items */ - while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) - { - DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); - if (ditem != NULL) - { - Item *item = new Item(); - if (item != NULL) - { - result = item->read(*ditem); - if (result.good()) - { - /* append new item to the end of the list */ - SequenceOfItems.push_back(item); - first = OFFalse; - } - } else - result = EC_MemoryExhausted; - } else - result = EC_CorruptedData; - } - } - } else { - DcmSequenceOfItems element(DCM_ApplicatorSequence); - checkElementValue(element, card, type, result, moduleName); - } - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTImageModule::write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - result = EC_MemoryExhausted; - DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ApplicatorSequence); - if (sequence != NULL) - { - result = EC_Normal; - /* an empty optional sequence is not written */ - if ((type == "2") || !SequenceOfItems.empty()) - { - OFListIterator(Item *) iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* iterate over all sequence items */ - while (result.good() && (iterator != last)) - { - DcmItem *item = new DcmItem(); - if (item != NULL) - { - /* append new item to the end of the sequence */ - result = sequence->append(item); - if (result.good()) - { - result = (*iterator)->write(*item); - ++iterator; - } else - delete item; - } else - result = EC_MemoryExhausted; - } - if (result.good()) - { - /* insert sequence element into the dataset */ - result = dataset.insert(sequence, OFTrue /*replaceOld*/); - } - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - if (result.good()) - { - /* forget reference to sequence object (avoid deletion below) */ - sequence = NULL; - } - } - else if (type == "1") - { - /* empty type 1 sequence not allowed */ - result = RT_EC_InvalidValue; - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - } - /* delete sequence (if not inserted into the dataset) */ - delete sequence; - } - } - return result; -} - - -// end of source file diff --git a/dcmrt/libsrc/drtas6.cc b/dcmrt/libsrc/drtas6.cc deleted file mode 100644 index b33f4893..00000000 --- a/dcmrt/libsrc/drtas6.cc +++ /dev/null @@ -1,631 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Source file for class DRTApplicatorSequenceInRTIonBeamsModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/dcmrt/seq/drtas6.h" - - -// --- item class --- - -DRTApplicatorSequenceInRTIonBeamsModule::Item::Item(const OFBool emptyDefaultItem) - : EmptyDefaultItem(emptyDefaultItem), - AccessoryCode(DCM_AccessoryCode), - ApplicatorDescription(DCM_ApplicatorDescription), - ApplicatorID(DCM_ApplicatorID), - ApplicatorType(DCM_ApplicatorType) -{ -} - - -DRTApplicatorSequenceInRTIonBeamsModule::Item::Item(const Item ©) - : EmptyDefaultItem(copy.EmptyDefaultItem), - AccessoryCode(copy.AccessoryCode), - ApplicatorDescription(copy.ApplicatorDescription), - ApplicatorID(copy.ApplicatorID), - ApplicatorType(copy.ApplicatorType) -{ -} - - -DRTApplicatorSequenceInRTIonBeamsModule::Item::~Item() -{ -} - - -DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::Item::operator=(const Item ©) -{ - if (this != ©) - { - EmptyDefaultItem = copy.EmptyDefaultItem; - AccessoryCode = copy.AccessoryCode; - ApplicatorDescription = copy.ApplicatorDescription; - ApplicatorID = copy.ApplicatorID; - ApplicatorType = copy.ApplicatorType; - } - return *this; -} - - -void DRTApplicatorSequenceInRTIonBeamsModule::Item::clear() -{ - if (!EmptyDefaultItem) - { - /* clear all DICOM attributes */ - ApplicatorID.clear(); - AccessoryCode.clear(); - ApplicatorType.clear(); - ApplicatorDescription.clear(); - } -} - - -OFBool DRTApplicatorSequenceInRTIonBeamsModule::Item::isEmpty() -{ - return ApplicatorID.isEmpty() && - AccessoryCode.isEmpty() && - ApplicatorType.isEmpty() && - ApplicatorDescription.isEmpty(); -} - - -OFBool DRTApplicatorSequenceInRTIonBeamsModule::Item::isValid() const -{ - return !EmptyDefaultItem; -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::read(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - /* re-initialize object */ - clear(); - getAndCheckElementFromDataset(item, ApplicatorID, "1", "1", "ApplicatorSequence"); - getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "ApplicatorSequence"); - getAndCheckElementFromDataset(item, ApplicatorType, "1", "1", "ApplicatorSequence"); - getAndCheckElementFromDataset(item, ApplicatorDescription, "1", "3", "ApplicatorSequence"); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::write(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = EC_Normal; - addElementToDataset(result, item, new DcmShortString(ApplicatorID), "1", "1", "ApplicatorSequence"); - addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "ApplicatorSequence"); - addElementToDataset(result, item, new DcmCodeString(ApplicatorType), "1", "1", "ApplicatorSequence"); - addElementToDataset(result, item, new DcmLongString(ApplicatorDescription), "1", "3", "ApplicatorSequence"); - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::getAccessoryCode(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(AccessoryCode, value, pos); -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::getApplicatorDescription(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ApplicatorDescription, value, pos); -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::getApplicatorID(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ApplicatorID, value, pos); -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::getApplicatorType(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ApplicatorType, value, pos); -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::setAccessoryCode(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = AccessoryCode.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::setApplicatorDescription(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ApplicatorDescription.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::setApplicatorID(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ApplicatorID.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::setApplicatorType(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ApplicatorType.putOFStringArray(value); - } - return result; -} - - -// --- sequence class --- - -DRTApplicatorSequenceInRTIonBeamsModule::DRTApplicatorSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence) - : EmptyDefaultSequence(emptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - CurrentItem = SequenceOfItems.end(); -} - - -DRTApplicatorSequenceInRTIonBeamsModule::DRTApplicatorSequenceInRTIonBeamsModule(const DRTApplicatorSequenceInRTIonBeamsModule ©) - : EmptyDefaultSequence(copy.EmptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); -} - - -DRTApplicatorSequenceInRTIonBeamsModule &DRTApplicatorSequenceInRTIonBeamsModule::operator=(const DRTApplicatorSequenceInRTIonBeamsModule ©) -{ - if (this != ©) - { - clear(); - EmptyDefaultSequence = copy.EmptyDefaultSequence; - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); - } - return *this; -} - - -DRTApplicatorSequenceInRTIonBeamsModule::~DRTApplicatorSequenceInRTIonBeamsModule() -{ - clear(); -} - - -void DRTApplicatorSequenceInRTIonBeamsModule::clear() -{ - if (!EmptyDefaultSequence) - { - CurrentItem = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* delete all items and free memory */ - while (CurrentItem != last) - { - delete (*CurrentItem); - CurrentItem = SequenceOfItems.erase(CurrentItem); - } - /* make sure that the list is empty */ - SequenceOfItems.clear(); - CurrentItem = SequenceOfItems.end(); - } -} - - -OFBool DRTApplicatorSequenceInRTIonBeamsModule::isEmpty() -{ - return SequenceOfItems.empty(); -} - - -OFBool DRTApplicatorSequenceInRTIonBeamsModule::isValid() const -{ - return !EmptyDefaultSequence; -} - - -size_t DRTApplicatorSequenceInRTIonBeamsModule::getNumberOfItems() const -{ - return SequenceOfItems.size(); -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoFirstItem() -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - CurrentItem = SequenceOfItems.begin(); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoNextItem() -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - ++CurrentItem; - result = EC_Normal; - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoItem(const size_t num) -{ - return gotoItem(num, CurrentItem); -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsModule::getCurrentItem(Item *&item) const -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - item = *CurrentItem; - result = EC_Normal; - } - return result; -} - - -DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::getCurrentItem() -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -const DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::getCurrentItem() const -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item) -{ - OFListIterator(Item *) iterator; - OFCondition result = gotoItem(num, iterator); - if (result.good()) - item = *iterator; - return result; -} - - -DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::getItem(const size_t num) -{ - OFListIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -const DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::getItem(const size_t num) const -{ - OFListConstIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::operator[](const size_t num) -{ - return getItem(num); -} - - -const DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::operator[](const size_t num) const -{ - return getItem(num); -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsModule::addItem(Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.push_back(item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - result = gotoItem(pos, iterator); - if (result.good()) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.insert(iterator, 1, item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } else - result = addItem(item); - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsModule::removeItem(const size_t pos) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - if (gotoItem(pos, iterator).good()) - { - delete *iterator; - iterator = SequenceOfItems.erase(iterator); - result = EC_Normal; - } else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsModule::read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - /* re-initialize object */ - clear(); - /* retrieve sequence element from dataset */ - DcmSequenceOfItems *sequence; - result = dataset.findAndGetSequence(DCM_ApplicatorSequence, sequence); - if (sequence != NULL) - { - if (checkElementValue(*sequence, card, type, result, moduleName)) - { - DcmStack stack; - OFBool first = OFTrue; - /* iterate over all sequence items */ - while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) - { - DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); - if (ditem != NULL) - { - Item *item = new Item(); - if (item != NULL) - { - result = item->read(*ditem); - if (result.good()) - { - /* append new item to the end of the list */ - SequenceOfItems.push_back(item); - first = OFFalse; - } - } else - result = EC_MemoryExhausted; - } else - result = EC_CorruptedData; - } - } - } else { - DcmSequenceOfItems element(DCM_ApplicatorSequence); - checkElementValue(element, card, type, result, moduleName); - } - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsModule::write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - result = EC_MemoryExhausted; - DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ApplicatorSequence); - if (sequence != NULL) - { - result = EC_Normal; - /* an empty optional sequence is not written */ - if ((type == "2") || !SequenceOfItems.empty()) - { - OFListIterator(Item *) iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* iterate over all sequence items */ - while (result.good() && (iterator != last)) - { - DcmItem *item = new DcmItem(); - if (item != NULL) - { - /* append new item to the end of the sequence */ - result = sequence->append(item); - if (result.good()) - { - result = (*iterator)->write(*item); - ++iterator; - } else - delete item; - } else - result = EC_MemoryExhausted; - } - if (result.good()) - { - /* insert sequence element into the dataset */ - result = dataset.insert(sequence, OFTrue /*replaceOld*/); - } - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - if (result.good()) - { - /* forget reference to sequence object (avoid deletion below) */ - sequence = NULL; - } - } - else if (type == "1") - { - /* empty type 1 sequence not allowed */ - result = RT_EC_InvalidValue; - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - } - /* delete sequence (if not inserted into the dataset) */ - delete sequence; - } - } - return result; -} - - -// end of source file diff --git a/dcmrt/libsrc/drtas7.cc b/dcmrt/libsrc/drtas7.cc deleted file mode 100644 index 2922045a..00000000 --- a/dcmrt/libsrc/drtas7.cc +++ /dev/null @@ -1,631 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Source file for class DRTApplicatorSequenceInRTIonBeamsSessionRecordModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/dcmrt/seq/drtas7.h" - - -// --- item class --- - -DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::Item(const OFBool emptyDefaultItem) - : EmptyDefaultItem(emptyDefaultItem), - AccessoryCode(DCM_AccessoryCode), - ApplicatorDescription(DCM_ApplicatorDescription), - ApplicatorID(DCM_ApplicatorID), - ApplicatorType(DCM_ApplicatorType) -{ -} - - -DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::Item(const Item ©) - : EmptyDefaultItem(copy.EmptyDefaultItem), - AccessoryCode(copy.AccessoryCode), - ApplicatorDescription(copy.ApplicatorDescription), - ApplicatorID(copy.ApplicatorID), - ApplicatorType(copy.ApplicatorType) -{ -} - - -DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::~Item() -{ -} - - -DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::operator=(const Item ©) -{ - if (this != ©) - { - EmptyDefaultItem = copy.EmptyDefaultItem; - AccessoryCode = copy.AccessoryCode; - ApplicatorDescription = copy.ApplicatorDescription; - ApplicatorID = copy.ApplicatorID; - ApplicatorType = copy.ApplicatorType; - } - return *this; -} - - -void DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::clear() -{ - if (!EmptyDefaultItem) - { - /* clear all DICOM attributes */ - ApplicatorID.clear(); - AccessoryCode.clear(); - ApplicatorType.clear(); - ApplicatorDescription.clear(); - } -} - - -OFBool DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::isEmpty() -{ - return ApplicatorID.isEmpty() && - AccessoryCode.isEmpty() && - ApplicatorType.isEmpty() && - ApplicatorDescription.isEmpty(); -} - - -OFBool DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::isValid() const -{ - return !EmptyDefaultItem; -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::read(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - /* re-initialize object */ - clear(); - getAndCheckElementFromDataset(item, ApplicatorID, "1", "1", "ApplicatorSequence"); - getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "ApplicatorSequence"); - getAndCheckElementFromDataset(item, ApplicatorType, "1", "1", "ApplicatorSequence"); - getAndCheckElementFromDataset(item, ApplicatorDescription, "1", "3", "ApplicatorSequence"); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::write(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = EC_Normal; - addElementToDataset(result, item, new DcmShortString(ApplicatorID), "1", "1", "ApplicatorSequence"); - addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "ApplicatorSequence"); - addElementToDataset(result, item, new DcmCodeString(ApplicatorType), "1", "1", "ApplicatorSequence"); - addElementToDataset(result, item, new DcmLongString(ApplicatorDescription), "1", "3", "ApplicatorSequence"); - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::getAccessoryCode(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(AccessoryCode, value, pos); -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::getApplicatorDescription(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ApplicatorDescription, value, pos); -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::getApplicatorID(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ApplicatorID, value, pos); -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::getApplicatorType(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ApplicatorType, value, pos); -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::setAccessoryCode(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = AccessoryCode.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::setApplicatorDescription(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ApplicatorDescription.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::setApplicatorID(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ApplicatorID.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::setApplicatorType(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ApplicatorType.putOFStringArray(value); - } - return result; -} - - -// --- sequence class --- - -DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::DRTApplicatorSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence) - : EmptyDefaultSequence(emptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - CurrentItem = SequenceOfItems.end(); -} - - -DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::DRTApplicatorSequenceInRTIonBeamsSessionRecordModule(const DRTApplicatorSequenceInRTIonBeamsSessionRecordModule ©) - : EmptyDefaultSequence(copy.EmptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); -} - - -DRTApplicatorSequenceInRTIonBeamsSessionRecordModule &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::operator=(const DRTApplicatorSequenceInRTIonBeamsSessionRecordModule ©) -{ - if (this != ©) - { - clear(); - EmptyDefaultSequence = copy.EmptyDefaultSequence; - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); - } - return *this; -} - - -DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::~DRTApplicatorSequenceInRTIonBeamsSessionRecordModule() -{ - clear(); -} - - -void DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::clear() -{ - if (!EmptyDefaultSequence) - { - CurrentItem = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* delete all items and free memory */ - while (CurrentItem != last) - { - delete (*CurrentItem); - CurrentItem = SequenceOfItems.erase(CurrentItem); - } - /* make sure that the list is empty */ - SequenceOfItems.clear(); - CurrentItem = SequenceOfItems.end(); - } -} - - -OFBool DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::isEmpty() -{ - return SequenceOfItems.empty(); -} - - -OFBool DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::isValid() const -{ - return !EmptyDefaultSequence; -} - - -size_t DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getNumberOfItems() const -{ - return SequenceOfItems.size(); -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::gotoFirstItem() -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - CurrentItem = SequenceOfItems.begin(); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::gotoNextItem() -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - ++CurrentItem; - result = EC_Normal; - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num) -{ - return gotoItem(num, CurrentItem); -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getCurrentItem(Item *&item) const -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - item = *CurrentItem; - result = EC_Normal; - } - return result; -} - - -DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getCurrentItem() -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -const DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getCurrentItem() const -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num, Item *&item) -{ - OFListIterator(Item *) iterator; - OFCondition result = gotoItem(num, iterator); - if (result.good()) - item = *iterator; - return result; -} - - -DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) -{ - OFListIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -const DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) const -{ - OFListConstIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) -{ - return getItem(num); -} - - -const DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) const -{ - return getItem(num); -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::addItem(Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.push_back(item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::insertItem(const size_t pos, Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - result = gotoItem(pos, iterator); - if (result.good()) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.insert(iterator, 1, item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } else - result = addItem(item); - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::removeItem(const size_t pos) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - if (gotoItem(pos, iterator).good()) - { - delete *iterator; - iterator = SequenceOfItems.erase(iterator); - result = EC_Normal; - } else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - /* re-initialize object */ - clear(); - /* retrieve sequence element from dataset */ - DcmSequenceOfItems *sequence; - result = dataset.findAndGetSequence(DCM_ApplicatorSequence, sequence); - if (sequence != NULL) - { - if (checkElementValue(*sequence, card, type, result, moduleName)) - { - DcmStack stack; - OFBool first = OFTrue; - /* iterate over all sequence items */ - while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) - { - DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); - if (ditem != NULL) - { - Item *item = new Item(); - if (item != NULL) - { - result = item->read(*ditem); - if (result.good()) - { - /* append new item to the end of the list */ - SequenceOfItems.push_back(item); - first = OFFalse; - } - } else - result = EC_MemoryExhausted; - } else - result = EC_CorruptedData; - } - } - } else { - DcmSequenceOfItems element(DCM_ApplicatorSequence); - checkElementValue(element, card, type, result, moduleName); - } - } - return result; -} - - -OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - result = EC_MemoryExhausted; - DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ApplicatorSequence); - if (sequence != NULL) - { - result = EC_Normal; - /* an empty optional sequence is not written */ - if ((type == "2") || !SequenceOfItems.empty()) - { - OFListIterator(Item *) iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* iterate over all sequence items */ - while (result.good() && (iterator != last)) - { - DcmItem *item = new DcmItem(); - if (item != NULL) - { - /* append new item to the end of the sequence */ - result = sequence->append(item); - if (result.good()) - { - result = (*iterator)->write(*item); - ++iterator; - } else - delete item; - } else - result = EC_MemoryExhausted; - } - if (result.good()) - { - /* insert sequence element into the dataset */ - result = dataset.insert(sequence, OFTrue /*replaceOld*/); - } - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - if (result.good()) - { - /* forget reference to sequence object (avoid deletion below) */ - sequence = NULL; - } - } - else if (type == "1") - { - /* empty type 1 sequence not allowed */ - result = RT_EC_InvalidValue; - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - } - /* delete sequence (if not inserted into the dataset) */ - delete sequence; - } - } - return result; -} - - -// end of source file diff --git a/dcmrt/libsrc/drtass.cc b/dcmrt/libsrc/drtass.cc index d0e96329..087c5e20 100644 --- a/dcmrt/libsrc/drtass.cc +++ b/dcmrt/libsrc/drtass.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTApplicationSetupSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -494,10 +494,12 @@ OFCondition DRTApplicationSetupSequence::gotoFirstItem() OFCondition DRTApplicationSetupSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtbads.cc b/dcmrt/libsrc/drtbads.cc index 60470eaa..b85df3a5 100644 --- a/dcmrt/libsrc/drtbads.cc +++ b/dcmrt/libsrc/drtbads.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTBrachyAccessoryDeviceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -482,10 +482,12 @@ OFCondition DRTBrachyAccessoryDeviceSequence::gotoFirstItem() OFCondition DRTBrachyAccessoryDeviceSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtbas.cc b/dcmrt/libsrc/drtbas.cc index 22863ad7..a30c9281 100644 --- a/dcmrt/libsrc/drtbas.cc +++ b/dcmrt/libsrc/drtbas.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTContrastBolusAgentSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -656,10 +656,12 @@ OFCondition DRTContrastBolusAgentSequence::gotoFirstItem() OFCondition DRTContrastBolusAgentSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtbcps.cc b/dcmrt/libsrc/drtbcps.cc index a3540204..6f830b29 100644 --- a/dcmrt/libsrc/drtbcps.cc +++ b/dcmrt/libsrc/drtbcps.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTBrachyControlPointSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -407,10 +407,12 @@ OFCondition DRTBrachyControlPointSequence::gotoFirstItem() OFCondition DRTBrachyControlPointSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtbl1.cc b/dcmrt/libsrc/drtbl1.cc new file mode 100644 index 00000000..3e3ce21b --- /dev/null +++ b/dcmrt/libsrc/drtbl1.cc @@ -0,0 +1,986 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTBlockSequenceInRTBeamsModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtbl1.h" + + +// --- item class --- + +DRTBlockSequenceInRTBeamsModule::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + AccessoryCode(DCM_AccessoryCode), + BlockData(DCM_BlockData), + BlockDivergence(DCM_BlockDivergence), + BlockMountingPosition(DCM_BlockMountingPosition), + BlockName(DCM_BlockName), + BlockNumber(DCM_BlockNumber), + BlockNumberOfPoints(DCM_BlockNumberOfPoints), + BlockThickness(DCM_BlockThickness), + BlockTransmission(DCM_BlockTransmission), + BlockTrayID(DCM_BlockTrayID), + BlockType(DCM_BlockType), + MaterialID(DCM_MaterialID), + SourceToBlockTrayDistance(DCM_SourceToBlockTrayDistance), + TrayAccessoryCode(DCM_TrayAccessoryCode) +{ +} + + +DRTBlockSequenceInRTBeamsModule::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + AccessoryCode(copy.AccessoryCode), + BlockData(copy.BlockData), + BlockDivergence(copy.BlockDivergence), + BlockMountingPosition(copy.BlockMountingPosition), + BlockName(copy.BlockName), + BlockNumber(copy.BlockNumber), + BlockNumberOfPoints(copy.BlockNumberOfPoints), + BlockThickness(copy.BlockThickness), + BlockTransmission(copy.BlockTransmission), + BlockTrayID(copy.BlockTrayID), + BlockType(copy.BlockType), + MaterialID(copy.MaterialID), + SourceToBlockTrayDistance(copy.SourceToBlockTrayDistance), + TrayAccessoryCode(copy.TrayAccessoryCode) +{ +} + + +DRTBlockSequenceInRTBeamsModule::Item::~Item() +{ +} + + +DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + AccessoryCode = copy.AccessoryCode; + BlockData = copy.BlockData; + BlockDivergence = copy.BlockDivergence; + BlockMountingPosition = copy.BlockMountingPosition; + BlockName = copy.BlockName; + BlockNumber = copy.BlockNumber; + BlockNumberOfPoints = copy.BlockNumberOfPoints; + BlockThickness = copy.BlockThickness; + BlockTransmission = copy.BlockTransmission; + BlockTrayID = copy.BlockTrayID; + BlockType = copy.BlockType; + MaterialID = copy.MaterialID; + SourceToBlockTrayDistance = copy.SourceToBlockTrayDistance; + TrayAccessoryCode = copy.TrayAccessoryCode; + } + return *this; +} + + +void DRTBlockSequenceInRTBeamsModule::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + BlockTrayID.clear(); + TrayAccessoryCode.clear(); + AccessoryCode.clear(); + SourceToBlockTrayDistance.clear(); + BlockType.clear(); + BlockDivergence.clear(); + BlockMountingPosition.clear(); + BlockNumber.clear(); + BlockName.clear(); + MaterialID.clear(); + BlockThickness.clear(); + BlockTransmission.clear(); + BlockNumberOfPoints.clear(); + BlockData.clear(); + } +} + + +OFBool DRTBlockSequenceInRTBeamsModule::Item::isEmpty() +{ + return BlockTrayID.isEmpty() && + TrayAccessoryCode.isEmpty() && + AccessoryCode.isEmpty() && + SourceToBlockTrayDistance.isEmpty() && + BlockType.isEmpty() && + BlockDivergence.isEmpty() && + BlockMountingPosition.isEmpty() && + BlockNumber.isEmpty() && + BlockName.isEmpty() && + MaterialID.isEmpty() && + BlockThickness.isEmpty() && + BlockTransmission.isEmpty() && + BlockNumberOfPoints.isEmpty() && + BlockData.isEmpty(); +} + + +OFBool DRTBlockSequenceInRTBeamsModule::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, BlockTrayID, "1", "3", "BlockSequence"); + getAndCheckElementFromDataset(item, TrayAccessoryCode, "1", "3", "BlockSequence"); + getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "BlockSequence"); + getAndCheckElementFromDataset(item, SourceToBlockTrayDistance, "1", "2", "BlockSequence"); + getAndCheckElementFromDataset(item, BlockType, "1", "1", "BlockSequence"); + getAndCheckElementFromDataset(item, BlockDivergence, "1", "2", "BlockSequence"); + getAndCheckElementFromDataset(item, BlockMountingPosition, "1", "3", "BlockSequence"); + getAndCheckElementFromDataset(item, BlockNumber, "1", "1", "BlockSequence"); + getAndCheckElementFromDataset(item, BlockName, "1", "3", "BlockSequence"); + getAndCheckElementFromDataset(item, MaterialID, "1", "2", "BlockSequence"); + getAndCheckElementFromDataset(item, BlockThickness, "1", "2C", "BlockSequence"); + getAndCheckElementFromDataset(item, BlockTransmission, "1", "2C", "BlockSequence"); + getAndCheckElementFromDataset(item, BlockNumberOfPoints, "1", "2", "BlockSequence"); + getAndCheckElementFromDataset(item, BlockData, "2-2n", "2", "BlockSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmShortString(BlockTrayID), "1", "3", "BlockSequence"); + addElementToDataset(result, item, new DcmLongString(TrayAccessoryCode), "1", "3", "BlockSequence"); + addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "BlockSequence"); + addElementToDataset(result, item, new DcmDecimalString(SourceToBlockTrayDistance), "1", "2", "BlockSequence"); + addElementToDataset(result, item, new DcmCodeString(BlockType), "1", "1", "BlockSequence"); + addElementToDataset(result, item, new DcmCodeString(BlockDivergence), "1", "2", "BlockSequence"); + addElementToDataset(result, item, new DcmCodeString(BlockMountingPosition), "1", "3", "BlockSequence"); + addElementToDataset(result, item, new DcmIntegerString(BlockNumber), "1", "1", "BlockSequence"); + addElementToDataset(result, item, new DcmLongString(BlockName), "1", "3", "BlockSequence"); + addElementToDataset(result, item, new DcmShortString(MaterialID), "1", "2", "BlockSequence"); + addElementToDataset(result, item, new DcmDecimalString(BlockThickness), "1", "2C", "BlockSequence"); + addElementToDataset(result, item, new DcmDecimalString(BlockTransmission), "1", "2C", "BlockSequence"); + addElementToDataset(result, item, new DcmIntegerString(BlockNumberOfPoints), "1", "2", "BlockSequence"); + addElementToDataset(result, item, new DcmDecimalString(BlockData), "2-2n", "2", "BlockSequence"); + } + return result; +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::getAccessoryCode(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(AccessoryCode, value, pos); +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockData(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(BlockData, value, pos); +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockData(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, BlockData).getFloat64(value, pos); +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockData(OFVector &value) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, BlockData).getFloat64Vector(value); +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockDivergence(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(BlockDivergence, value, pos); +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockMountingPosition(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(BlockMountingPosition, value, pos); +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockName(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(BlockName, value, pos); +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockNumber(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(BlockNumber, value, pos); +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockNumber(Sint32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmIntegerString &, BlockNumber).getSint32(value, pos); +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockNumberOfPoints(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(BlockNumberOfPoints, value, pos); +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockNumberOfPoints(Sint32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmIntegerString &, BlockNumberOfPoints).getSint32(value, pos); +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockThickness(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(BlockThickness, value, pos); +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockThickness(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, BlockThickness).getFloat64(value, pos); +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockTransmission(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(BlockTransmission, value, pos); +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockTransmission(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, BlockTransmission).getFloat64(value, pos); +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockTrayID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(BlockTrayID, value, pos); +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockType(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(BlockType, value, pos); +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::getMaterialID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MaterialID, value, pos); +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::getSourceToBlockTrayDistance(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(SourceToBlockTrayDistance, value, pos); +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::getSourceToBlockTrayDistance(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, SourceToBlockTrayDistance).getFloat64(value, pos); +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::getTrayAccessoryCode(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(TrayAccessoryCode, value, pos); +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::setAccessoryCode(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = AccessoryCode.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockData(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDecimalString::checkStringValue(value, "2-2n") : EC_Normal; + if (result.good()) + result = BlockData.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockDivergence(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = BlockDivergence.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockMountingPosition(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = BlockMountingPosition.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockName(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = BlockName.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockNumber(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = BlockNumber.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockNumberOfPoints(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = BlockNumberOfPoints.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockThickness(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = BlockThickness.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockTransmission(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = BlockTransmission.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockTrayID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = BlockTrayID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockType(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = BlockType.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::setMaterialID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MaterialID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::setSourceToBlockTrayDistance(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = SourceToBlockTrayDistance.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::Item::setTrayAccessoryCode(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = TrayAccessoryCode.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTBlockSequenceInRTBeamsModule::DRTBlockSequenceInRTBeamsModule(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTBlockSequenceInRTBeamsModule::DRTBlockSequenceInRTBeamsModule(const DRTBlockSequenceInRTBeamsModule ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTBlockSequenceInRTBeamsModule &DRTBlockSequenceInRTBeamsModule::operator=(const DRTBlockSequenceInRTBeamsModule ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTBlockSequenceInRTBeamsModule::~DRTBlockSequenceInRTBeamsModule() +{ + clear(); +} + + +void DRTBlockSequenceInRTBeamsModule::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTBlockSequenceInRTBeamsModule::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTBlockSequenceInRTBeamsModule::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTBlockSequenceInRTBeamsModule::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_BlockSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_BlockSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTBlockSequenceInRTBeamsModule::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_BlockSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtbl2.cc b/dcmrt/libsrc/drtbl2.cc index 37548f82..7035df45 100644 --- a/dcmrt/libsrc/drtbl2.cc +++ b/dcmrt/libsrc/drtbl2.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * - * Source file for class DRTBlockSequenceInRTBeamsModule + * Source file for class DRTBlockSequenceInRTImageModule * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -19,7 +19,7 @@ // --- item class --- -DRTBlockSequenceInRTBeamsModule::Item::Item(const OFBool emptyDefaultItem) +DRTBlockSequenceInRTImageModule::Item::Item(const OFBool emptyDefaultItem) : EmptyDefaultItem(emptyDefaultItem), AccessoryCode(DCM_AccessoryCode), BlockData(DCM_BlockData), @@ -29,7 +29,6 @@ DRTBlockSequenceInRTBeamsModule::Item::Item(const OFBool emptyDefaultItem) BlockNumber(DCM_BlockNumber), BlockNumberOfPoints(DCM_BlockNumberOfPoints), BlockThickness(DCM_BlockThickness), - BlockTransmission(DCM_BlockTransmission), BlockTrayID(DCM_BlockTrayID), BlockType(DCM_BlockType), MaterialID(DCM_MaterialID), @@ -39,7 +38,7 @@ DRTBlockSequenceInRTBeamsModule::Item::Item(const OFBool emptyDefaultItem) } -DRTBlockSequenceInRTBeamsModule::Item::Item(const Item ©) +DRTBlockSequenceInRTImageModule::Item::Item(const Item ©) : EmptyDefaultItem(copy.EmptyDefaultItem), AccessoryCode(copy.AccessoryCode), BlockData(copy.BlockData), @@ -49,7 +48,6 @@ DRTBlockSequenceInRTBeamsModule::Item::Item(const Item ©) BlockNumber(copy.BlockNumber), BlockNumberOfPoints(copy.BlockNumberOfPoints), BlockThickness(copy.BlockThickness), - BlockTransmission(copy.BlockTransmission), BlockTrayID(copy.BlockTrayID), BlockType(copy.BlockType), MaterialID(copy.MaterialID), @@ -59,12 +57,12 @@ DRTBlockSequenceInRTBeamsModule::Item::Item(const Item ©) } -DRTBlockSequenceInRTBeamsModule::Item::~Item() +DRTBlockSequenceInRTImageModule::Item::~Item() { } -DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::Item::operator=(const Item ©) +DRTBlockSequenceInRTImageModule::Item &DRTBlockSequenceInRTImageModule::Item::operator=(const Item ©) { if (this != ©) { @@ -77,7 +75,6 @@ DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::Item::op BlockNumber = copy.BlockNumber; BlockNumberOfPoints = copy.BlockNumberOfPoints; BlockThickness = copy.BlockThickness; - BlockTransmission = copy.BlockTransmission; BlockTrayID = copy.BlockTrayID; BlockType = copy.BlockType; MaterialID = copy.MaterialID; @@ -88,7 +85,7 @@ DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::Item::op } -void DRTBlockSequenceInRTBeamsModule::Item::clear() +void DRTBlockSequenceInRTImageModule::Item::clear() { if (!EmptyDefaultItem) { @@ -104,14 +101,13 @@ void DRTBlockSequenceInRTBeamsModule::Item::clear() BlockName.clear(); MaterialID.clear(); BlockThickness.clear(); - BlockTransmission.clear(); BlockNumberOfPoints.clear(); BlockData.clear(); } } -OFBool DRTBlockSequenceInRTBeamsModule::Item::isEmpty() +OFBool DRTBlockSequenceInRTImageModule::Item::isEmpty() { return BlockTrayID.isEmpty() && TrayAccessoryCode.isEmpty() && @@ -124,19 +120,18 @@ OFBool DRTBlockSequenceInRTBeamsModule::Item::isEmpty() BlockName.isEmpty() && MaterialID.isEmpty() && BlockThickness.isEmpty() && - BlockTransmission.isEmpty() && BlockNumberOfPoints.isEmpty() && BlockData.isEmpty(); } -OFBool DRTBlockSequenceInRTBeamsModule::Item::isValid() const +OFBool DRTBlockSequenceInRTImageModule::Item::isValid() const { return !EmptyDefaultItem; } -OFCondition DRTBlockSequenceInRTBeamsModule::Item::read(DcmItem &item) +OFCondition DRTBlockSequenceInRTImageModule::Item::read(DcmItem &item) { OFCondition result = EC_IllegalCall; if (!EmptyDefaultItem) @@ -153,8 +148,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::read(DcmItem &item) getAndCheckElementFromDataset(item, BlockNumber, "1", "1", "BlockSequence"); getAndCheckElementFromDataset(item, BlockName, "1", "3", "BlockSequence"); getAndCheckElementFromDataset(item, MaterialID, "1", "2", "BlockSequence"); - getAndCheckElementFromDataset(item, BlockThickness, "1", "2C", "BlockSequence"); - getAndCheckElementFromDataset(item, BlockTransmission, "1", "2C", "BlockSequence"); + getAndCheckElementFromDataset(item, BlockThickness, "1", "3", "BlockSequence"); getAndCheckElementFromDataset(item, BlockNumberOfPoints, "1", "2", "BlockSequence"); getAndCheckElementFromDataset(item, BlockData, "2-2n", "2", "BlockSequence"); result = EC_Normal; @@ -163,7 +157,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::read(DcmItem &item) } -OFCondition DRTBlockSequenceInRTBeamsModule::Item::write(DcmItem &item) +OFCondition DRTBlockSequenceInRTImageModule::Item::write(DcmItem &item) { OFCondition result = EC_IllegalCall; if (!EmptyDefaultItem) @@ -179,8 +173,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::write(DcmItem &item) addElementToDataset(result, item, new DcmIntegerString(BlockNumber), "1", "1", "BlockSequence"); addElementToDataset(result, item, new DcmLongString(BlockName), "1", "3", "BlockSequence"); addElementToDataset(result, item, new DcmShortString(MaterialID), "1", "2", "BlockSequence"); - addElementToDataset(result, item, new DcmDecimalString(BlockThickness), "1", "2C", "BlockSequence"); - addElementToDataset(result, item, new DcmDecimalString(BlockTransmission), "1", "2C", "BlockSequence"); + addElementToDataset(result, item, new DcmDecimalString(BlockThickness), "1", "3", "BlockSequence"); addElementToDataset(result, item, new DcmIntegerString(BlockNumberOfPoints), "1", "2", "BlockSequence"); addElementToDataset(result, item, new DcmDecimalString(BlockData), "2-2n", "2", "BlockSequence"); } @@ -188,7 +181,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::write(DcmItem &item) } -OFCondition DRTBlockSequenceInRTBeamsModule::Item::getAccessoryCode(OFString &value, const signed long pos) const +OFCondition DRTBlockSequenceInRTImageModule::Item::getAccessoryCode(OFString &value, const signed long pos) const { if (EmptyDefaultItem) return EC_IllegalCall; @@ -197,7 +190,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::getAccessoryCode(OFString &va } -OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockData(OFString &value, const signed long pos) const +OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockData(OFString &value, const signed long pos) const { if (EmptyDefaultItem) return EC_IllegalCall; @@ -206,7 +199,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockData(OFString &value, } -OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockData(Float64 &value, const unsigned long pos) const +OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockData(Float64 &value, const unsigned long pos) const { if (EmptyDefaultItem) return EC_IllegalCall; @@ -215,7 +208,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockData(Float64 &value, } -OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockData(OFVector &value) const +OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockData(OFVector &value) const { if (EmptyDefaultItem) return EC_IllegalCall; @@ -224,7 +217,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockData(OFVector &value) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, BlockData).getFloat64Vector(value); -} - - -OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockDivergence(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(BlockDivergence, value, pos); -} - - -OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockMountingPosition(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(BlockMountingPosition, value, pos); -} - - -OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockName(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(BlockName, value, pos); -} - - -OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockNumber(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(BlockNumber, value, pos); -} - - -OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockNumber(Sint32 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmIntegerString &, BlockNumber).getSint32(value, pos); -} - - -OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockNumberOfPoints(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(BlockNumberOfPoints, value, pos); -} - - -OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockNumberOfPoints(Sint32 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmIntegerString &, BlockNumberOfPoints).getSint32(value, pos); -} - - -OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockThickness(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(BlockThickness, value, pos); -} - - -OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockThickness(Float64 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, BlockThickness).getFloat64(value, pos); -} - - -OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockTrayID(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(BlockTrayID, value, pos); -} - - -OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockType(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(BlockType, value, pos); -} - - -OFCondition DRTBlockSequenceInRTImageModule::Item::getMaterialID(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(MaterialID, value, pos); -} - - -OFCondition DRTBlockSequenceInRTImageModule::Item::getSourceToBlockTrayDistance(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(SourceToBlockTrayDistance, value, pos); -} - - -OFCondition DRTBlockSequenceInRTImageModule::Item::getSourceToBlockTrayDistance(Float64 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, SourceToBlockTrayDistance).getFloat64(value, pos); -} - - -OFCondition DRTBlockSequenceInRTImageModule::Item::getTrayAccessoryCode(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(TrayAccessoryCode, value, pos); -} - - -OFCondition DRTBlockSequenceInRTImageModule::Item::setAccessoryCode(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = AccessoryCode.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTBlockSequenceInRTImageModule::Item::setBlockData(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmDecimalString::checkStringValue(value, "2-2n") : EC_Normal; - if (result.good()) - result = BlockData.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTBlockSequenceInRTImageModule::Item::setBlockDivergence(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = BlockDivergence.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTBlockSequenceInRTImageModule::Item::setBlockMountingPosition(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = BlockMountingPosition.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTBlockSequenceInRTImageModule::Item::setBlockName(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = BlockName.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTBlockSequenceInRTImageModule::Item::setBlockNumber(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = BlockNumber.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTBlockSequenceInRTImageModule::Item::setBlockNumberOfPoints(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = BlockNumberOfPoints.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTBlockSequenceInRTImageModule::Item::setBlockThickness(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = BlockThickness.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTBlockSequenceInRTImageModule::Item::setBlockTrayID(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = BlockTrayID.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTBlockSequenceInRTImageModule::Item::setBlockType(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = BlockType.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTBlockSequenceInRTImageModule::Item::setMaterialID(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = MaterialID.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTBlockSequenceInRTImageModule::Item::setSourceToBlockTrayDistance(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = SourceToBlockTrayDistance.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTBlockSequenceInRTImageModule::Item::setTrayAccessoryCode(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = TrayAccessoryCode.putOFStringArray(value); - } - return result; -} - - -// --- sequence class --- - -DRTBlockSequenceInRTImageModule::DRTBlockSequenceInRTImageModule(const OFBool emptyDefaultSequence) - : EmptyDefaultSequence(emptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - CurrentItem = SequenceOfItems.end(); -} - - -DRTBlockSequenceInRTImageModule::DRTBlockSequenceInRTImageModule(const DRTBlockSequenceInRTImageModule ©) - : EmptyDefaultSequence(copy.EmptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); -} - - -DRTBlockSequenceInRTImageModule &DRTBlockSequenceInRTImageModule::operator=(const DRTBlockSequenceInRTImageModule ©) -{ - if (this != ©) - { - clear(); - EmptyDefaultSequence = copy.EmptyDefaultSequence; - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); - } - return *this; -} - - -DRTBlockSequenceInRTImageModule::~DRTBlockSequenceInRTImageModule() -{ - clear(); -} - - -void DRTBlockSequenceInRTImageModule::clear() -{ - if (!EmptyDefaultSequence) - { - CurrentItem = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* delete all items and free memory */ - while (CurrentItem != last) - { - delete (*CurrentItem); - CurrentItem = SequenceOfItems.erase(CurrentItem); - } - /* make sure that the list is empty */ - SequenceOfItems.clear(); - CurrentItem = SequenceOfItems.end(); - } -} - - -OFBool DRTBlockSequenceInRTImageModule::isEmpty() -{ - return SequenceOfItems.empty(); -} - - -OFBool DRTBlockSequenceInRTImageModule::isValid() const -{ - return !EmptyDefaultSequence; -} - - -size_t DRTBlockSequenceInRTImageModule::getNumberOfItems() const -{ - return SequenceOfItems.size(); -} - - -OFCondition DRTBlockSequenceInRTImageModule::gotoFirstItem() -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - CurrentItem = SequenceOfItems.begin(); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTBlockSequenceInRTImageModule::gotoNextItem() -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - ++CurrentItem; - result = EC_Normal; - } - return result; -} - - -OFCondition DRTBlockSequenceInRTImageModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTBlockSequenceInRTImageModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTBlockSequenceInRTImageModule::gotoItem(const size_t num) -{ - return gotoItem(num, CurrentItem); -} - - -OFCondition DRTBlockSequenceInRTImageModule::getCurrentItem(Item *&item) const -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - item = *CurrentItem; - result = EC_Normal; - } - return result; -} - - -DRTBlockSequenceInRTImageModule::Item &DRTBlockSequenceInRTImageModule::getCurrentItem() -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -const DRTBlockSequenceInRTImageModule::Item &DRTBlockSequenceInRTImageModule::getCurrentItem() const -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -OFCondition DRTBlockSequenceInRTImageModule::getItem(const size_t num, Item *&item) -{ - OFListIterator(Item *) iterator; - OFCondition result = gotoItem(num, iterator); - if (result.good()) - item = *iterator; - return result; -} - - -DRTBlockSequenceInRTImageModule::Item &DRTBlockSequenceInRTImageModule::getItem(const size_t num) -{ - OFListIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -const DRTBlockSequenceInRTImageModule::Item &DRTBlockSequenceInRTImageModule::getItem(const size_t num) const -{ - OFListConstIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -DRTBlockSequenceInRTImageModule::Item &DRTBlockSequenceInRTImageModule::operator[](const size_t num) -{ - return getItem(num); -} - - -const DRTBlockSequenceInRTImageModule::Item &DRTBlockSequenceInRTImageModule::operator[](const size_t num) const -{ - return getItem(num); -} - - -OFCondition DRTBlockSequenceInRTImageModule::addItem(Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.push_back(item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } - return result; -} - - -OFCondition DRTBlockSequenceInRTImageModule::insertItem(const size_t pos, Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - result = gotoItem(pos, iterator); - if (result.good()) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.insert(iterator, 1, item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } else - result = addItem(item); - } - return result; -} - - -OFCondition DRTBlockSequenceInRTImageModule::removeItem(const size_t pos) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - if (gotoItem(pos, iterator).good()) - { - delete *iterator; - iterator = SequenceOfItems.erase(iterator); - result = EC_Normal; - } else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTBlockSequenceInRTImageModule::read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - /* re-initialize object */ - clear(); - /* retrieve sequence element from dataset */ - DcmSequenceOfItems *sequence; - result = dataset.findAndGetSequence(DCM_BlockSequence, sequence); - if (sequence != NULL) - { - if (checkElementValue(*sequence, card, type, result, moduleName)) - { - DcmStack stack; - OFBool first = OFTrue; - /* iterate over all sequence items */ - while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) - { - DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); - if (ditem != NULL) - { - Item *item = new Item(); - if (item != NULL) - { - result = item->read(*ditem); - if (result.good()) - { - /* append new item to the end of the list */ - SequenceOfItems.push_back(item); - first = OFFalse; - } - } else - result = EC_MemoryExhausted; - } else - result = EC_CorruptedData; - } - } - } else { - DcmSequenceOfItems element(DCM_BlockSequence); - checkElementValue(element, card, type, result, moduleName); - } - } - return result; -} - - -OFCondition DRTBlockSequenceInRTImageModule::write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - result = EC_MemoryExhausted; - DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_BlockSequence); - if (sequence != NULL) - { - result = EC_Normal; - /* an empty optional sequence is not written */ - if ((type == "2") || !SequenceOfItems.empty()) - { - OFListIterator(Item *) iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* iterate over all sequence items */ - while (result.good() && (iterator != last)) - { - DcmItem *item = new DcmItem(); - if (item != NULL) - { - /* append new item to the end of the sequence */ - result = sequence->append(item); - if (result.good()) - { - result = (*iterator)->write(*item); - ++iterator; - } else - delete item; - } else - result = EC_MemoryExhausted; - } - if (result.good()) - { - /* insert sequence element into the dataset */ - result = dataset.insert(sequence, OFTrue /*replaceOld*/); - } - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - if (result.good()) - { - /* forget reference to sequence object (avoid deletion below) */ - sequence = NULL; - } - } - else if (type == "1") - { - /* empty type 1 sequence not allowed */ - result = RT_EC_InvalidValue; - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - } - /* delete sequence (if not inserted into the dataset) */ - delete sequence; - } - } - return result; -} - - -// end of source file diff --git a/dcmrt/libsrc/drtbldls.cc b/dcmrt/libsrc/drtbldls.cc index dae74eaa..62293068 100644 --- a/dcmrt/libsrc/drtbldls.cc +++ b/dcmrt/libsrc/drtbldls.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTBeamLimitingDeviceLeafPairsSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -281,10 +281,12 @@ OFCondition DRTBeamLimitingDeviceLeafPairsSequence::gotoFirstItem() OFCondition DRTBeamLimitingDeviceLeafPairsSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtbldps.cc b/dcmrt/libsrc/drtbldps.cc index 5f6f8d53..6c8ef01a 100644 --- a/dcmrt/libsrc/drtbldps.cc +++ b/dcmrt/libsrc/drtbldps.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTBeamLimitingDevicePositionSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -290,10 +290,12 @@ OFCondition DRTBeamLimitingDevicePositionSequence::gotoFirstItem() OFCondition DRTBeamLimitingDevicePositionSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtblds1.cc b/dcmrt/libsrc/drtblds1.cc index 7b94c34a..ada067ca 100644 --- a/dcmrt/libsrc/drtblds1.cc +++ b/dcmrt/libsrc/drtblds1.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTBeamLimitingDeviceSequenceInRTBeamsModule * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -366,10 +366,12 @@ OFCondition DRTBeamLimitingDeviceSequenceInRTBeamsModule::gotoFirstItem() OFCondition DRTBeamLimitingDeviceSequenceInRTBeamsModule::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtblds2.cc b/dcmrt/libsrc/drtblds2.cc new file mode 100644 index 00000000..26d1da73 --- /dev/null +++ b/dcmrt/libsrc/drtblds2.cc @@ -0,0 +1,716 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTBeamLimitingDeviceSequenceInRTImageModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtblds2.h" + + +// --- item class --- + +DRTBeamLimitingDeviceSequenceInRTImageModule::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + LeafJawPositions(DCM_LeafJawPositions), + LeafPositionBoundaries(DCM_LeafPositionBoundaries), + NumberOfLeafJawPairs(DCM_NumberOfLeafJawPairs), + RTBeamLimitingDeviceType(DCM_RTBeamLimitingDeviceType), + SourceToBeamLimitingDeviceDistance(DCM_SourceToBeamLimitingDeviceDistance) +{ +} + + +DRTBeamLimitingDeviceSequenceInRTImageModule::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + LeafJawPositions(copy.LeafJawPositions), + LeafPositionBoundaries(copy.LeafPositionBoundaries), + NumberOfLeafJawPairs(copy.NumberOfLeafJawPairs), + RTBeamLimitingDeviceType(copy.RTBeamLimitingDeviceType), + SourceToBeamLimitingDeviceDistance(copy.SourceToBeamLimitingDeviceDistance) +{ +} + + +DRTBeamLimitingDeviceSequenceInRTImageModule::Item::~Item() +{ +} + + +DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + LeafJawPositions = copy.LeafJawPositions; + LeafPositionBoundaries = copy.LeafPositionBoundaries; + NumberOfLeafJawPairs = copy.NumberOfLeafJawPairs; + RTBeamLimitingDeviceType = copy.RTBeamLimitingDeviceType; + SourceToBeamLimitingDeviceDistance = copy.SourceToBeamLimitingDeviceDistance; + } + return *this; +} + + +void DRTBeamLimitingDeviceSequenceInRTImageModule::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + RTBeamLimitingDeviceType.clear(); + SourceToBeamLimitingDeviceDistance.clear(); + NumberOfLeafJawPairs.clear(); + LeafPositionBoundaries.clear(); + LeafJawPositions.clear(); + } +} + + +OFBool DRTBeamLimitingDeviceSequenceInRTImageModule::Item::isEmpty() +{ + return RTBeamLimitingDeviceType.isEmpty() && + SourceToBeamLimitingDeviceDistance.isEmpty() && + NumberOfLeafJawPairs.isEmpty() && + LeafPositionBoundaries.isEmpty() && + LeafJawPositions.isEmpty(); +} + + +OFBool DRTBeamLimitingDeviceSequenceInRTImageModule::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, RTBeamLimitingDeviceType, "1", "1", "BeamLimitingDeviceSequence"); + getAndCheckElementFromDataset(item, SourceToBeamLimitingDeviceDistance, "1", "3", "BeamLimitingDeviceSequence"); + getAndCheckElementFromDataset(item, NumberOfLeafJawPairs, "1", "1", "BeamLimitingDeviceSequence"); + getAndCheckElementFromDataset(item, LeafPositionBoundaries, "3-n", "2C", "BeamLimitingDeviceSequence"); + getAndCheckElementFromDataset(item, LeafJawPositions, "2-2n", "1", "BeamLimitingDeviceSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmCodeString(RTBeamLimitingDeviceType), "1", "1", "BeamLimitingDeviceSequence"); + addElementToDataset(result, item, new DcmDecimalString(SourceToBeamLimitingDeviceDistance), "1", "3", "BeamLimitingDeviceSequence"); + addElementToDataset(result, item, new DcmIntegerString(NumberOfLeafJawPairs), "1", "1", "BeamLimitingDeviceSequence"); + addElementToDataset(result, item, new DcmDecimalString(LeafPositionBoundaries), "3-n", "2C", "BeamLimitingDeviceSequence"); + addElementToDataset(result, item, new DcmDecimalString(LeafJawPositions), "2-2n", "1", "BeamLimitingDeviceSequence"); + } + return result; +} + + +OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getLeafJawPositions(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(LeafJawPositions, value, pos); +} + + +OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getLeafJawPositions(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, LeafJawPositions).getFloat64(value, pos); +} + + +OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getLeafJawPositions(OFVector &value) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, LeafJawPositions).getFloat64Vector(value); +} + + +OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getLeafPositionBoundaries(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(LeafPositionBoundaries, value, pos); +} + + +OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getLeafPositionBoundaries(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, LeafPositionBoundaries).getFloat64(value, pos); +} + + +OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getLeafPositionBoundaries(OFVector &value) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, LeafPositionBoundaries).getFloat64Vector(value); +} + + +OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getNumberOfLeafJawPairs(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(NumberOfLeafJawPairs, value, pos); +} + + +OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getNumberOfLeafJawPairs(Sint32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmIntegerString &, NumberOfLeafJawPairs).getSint32(value, pos); +} + + +OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getRTBeamLimitingDeviceType(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(RTBeamLimitingDeviceType, value, pos); +} + + +OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getSourceToBeamLimitingDeviceDistance(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(SourceToBeamLimitingDeviceDistance, value, pos); +} + + +OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getSourceToBeamLimitingDeviceDistance(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, SourceToBeamLimitingDeviceDistance).getFloat64(value, pos); +} + + +OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::setLeafJawPositions(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDecimalString::checkStringValue(value, "2-2n") : EC_Normal; + if (result.good()) + result = LeafJawPositions.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::setLeafPositionBoundaries(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDecimalString::checkStringValue(value, "3-n") : EC_Normal; + if (result.good()) + result = LeafPositionBoundaries.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::setNumberOfLeafJawPairs(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = NumberOfLeafJawPairs.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::setRTBeamLimitingDeviceType(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = RTBeamLimitingDeviceType.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::setSourceToBeamLimitingDeviceDistance(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = SourceToBeamLimitingDeviceDistance.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTBeamLimitingDeviceSequenceInRTImageModule::DRTBeamLimitingDeviceSequenceInRTImageModule(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTBeamLimitingDeviceSequenceInRTImageModule::DRTBeamLimitingDeviceSequenceInRTImageModule(const DRTBeamLimitingDeviceSequenceInRTImageModule ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTBeamLimitingDeviceSequenceInRTImageModule &DRTBeamLimitingDeviceSequenceInRTImageModule::operator=(const DRTBeamLimitingDeviceSequenceInRTImageModule ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTBeamLimitingDeviceSequenceInRTImageModule::~DRTBeamLimitingDeviceSequenceInRTImageModule() +{ + clear(); +} + + +void DRTBeamLimitingDeviceSequenceInRTImageModule::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTBeamLimitingDeviceSequenceInRTImageModule::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTBeamLimitingDeviceSequenceInRTImageModule::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTBeamLimitingDeviceSequenceInRTImageModule::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_BeamLimitingDeviceSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_BeamLimitingDeviceSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_BeamLimitingDeviceSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtblds5.cc b/dcmrt/libsrc/drtblds5.cc deleted file mode 100644 index 73f4ed00..00000000 --- a/dcmrt/libsrc/drtblds5.cc +++ /dev/null @@ -1,714 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Source file for class DRTBeamLimitingDeviceSequenceInRTImageModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/dcmrt/seq/drtblds5.h" - - -// --- item class --- - -DRTBeamLimitingDeviceSequenceInRTImageModule::Item::Item(const OFBool emptyDefaultItem) - : EmptyDefaultItem(emptyDefaultItem), - LeafJawPositions(DCM_LeafJawPositions), - LeafPositionBoundaries(DCM_LeafPositionBoundaries), - NumberOfLeafJawPairs(DCM_NumberOfLeafJawPairs), - RTBeamLimitingDeviceType(DCM_RTBeamLimitingDeviceType), - SourceToBeamLimitingDeviceDistance(DCM_SourceToBeamLimitingDeviceDistance) -{ -} - - -DRTBeamLimitingDeviceSequenceInRTImageModule::Item::Item(const Item ©) - : EmptyDefaultItem(copy.EmptyDefaultItem), - LeafJawPositions(copy.LeafJawPositions), - LeafPositionBoundaries(copy.LeafPositionBoundaries), - NumberOfLeafJawPairs(copy.NumberOfLeafJawPairs), - RTBeamLimitingDeviceType(copy.RTBeamLimitingDeviceType), - SourceToBeamLimitingDeviceDistance(copy.SourceToBeamLimitingDeviceDistance) -{ -} - - -DRTBeamLimitingDeviceSequenceInRTImageModule::Item::~Item() -{ -} - - -DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::Item::operator=(const Item ©) -{ - if (this != ©) - { - EmptyDefaultItem = copy.EmptyDefaultItem; - LeafJawPositions = copy.LeafJawPositions; - LeafPositionBoundaries = copy.LeafPositionBoundaries; - NumberOfLeafJawPairs = copy.NumberOfLeafJawPairs; - RTBeamLimitingDeviceType = copy.RTBeamLimitingDeviceType; - SourceToBeamLimitingDeviceDistance = copy.SourceToBeamLimitingDeviceDistance; - } - return *this; -} - - -void DRTBeamLimitingDeviceSequenceInRTImageModule::Item::clear() -{ - if (!EmptyDefaultItem) - { - /* clear all DICOM attributes */ - RTBeamLimitingDeviceType.clear(); - SourceToBeamLimitingDeviceDistance.clear(); - NumberOfLeafJawPairs.clear(); - LeafPositionBoundaries.clear(); - LeafJawPositions.clear(); - } -} - - -OFBool DRTBeamLimitingDeviceSequenceInRTImageModule::Item::isEmpty() -{ - return RTBeamLimitingDeviceType.isEmpty() && - SourceToBeamLimitingDeviceDistance.isEmpty() && - NumberOfLeafJawPairs.isEmpty() && - LeafPositionBoundaries.isEmpty() && - LeafJawPositions.isEmpty(); -} - - -OFBool DRTBeamLimitingDeviceSequenceInRTImageModule::Item::isValid() const -{ - return !EmptyDefaultItem; -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::read(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - /* re-initialize object */ - clear(); - getAndCheckElementFromDataset(item, RTBeamLimitingDeviceType, "1", "1", "BeamLimitingDeviceSequence"); - getAndCheckElementFromDataset(item, SourceToBeamLimitingDeviceDistance, "1", "3", "BeamLimitingDeviceSequence"); - getAndCheckElementFromDataset(item, NumberOfLeafJawPairs, "1", "1", "BeamLimitingDeviceSequence"); - getAndCheckElementFromDataset(item, LeafPositionBoundaries, "3-n", "2C", "BeamLimitingDeviceSequence"); - getAndCheckElementFromDataset(item, LeafJawPositions, "2-2n", "1", "BeamLimitingDeviceSequence"); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::write(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = EC_Normal; - addElementToDataset(result, item, new DcmCodeString(RTBeamLimitingDeviceType), "1", "1", "BeamLimitingDeviceSequence"); - addElementToDataset(result, item, new DcmDecimalString(SourceToBeamLimitingDeviceDistance), "1", "3", "BeamLimitingDeviceSequence"); - addElementToDataset(result, item, new DcmIntegerString(NumberOfLeafJawPairs), "1", "1", "BeamLimitingDeviceSequence"); - addElementToDataset(result, item, new DcmDecimalString(LeafPositionBoundaries), "3-n", "2C", "BeamLimitingDeviceSequence"); - addElementToDataset(result, item, new DcmDecimalString(LeafJawPositions), "2-2n", "1", "BeamLimitingDeviceSequence"); - } - return result; -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getLeafJawPositions(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(LeafJawPositions, value, pos); -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getLeafJawPositions(Float64 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, LeafJawPositions).getFloat64(value, pos); -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getLeafJawPositions(OFVector &value) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, LeafJawPositions).getFloat64Vector(value); -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getLeafPositionBoundaries(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(LeafPositionBoundaries, value, pos); -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getLeafPositionBoundaries(Float64 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, LeafPositionBoundaries).getFloat64(value, pos); -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getLeafPositionBoundaries(OFVector &value) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, LeafPositionBoundaries).getFloat64Vector(value); -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getNumberOfLeafJawPairs(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(NumberOfLeafJawPairs, value, pos); -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getNumberOfLeafJawPairs(Sint32 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmIntegerString &, NumberOfLeafJawPairs).getSint32(value, pos); -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getRTBeamLimitingDeviceType(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(RTBeamLimitingDeviceType, value, pos); -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getSourceToBeamLimitingDeviceDistance(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(SourceToBeamLimitingDeviceDistance, value, pos); -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getSourceToBeamLimitingDeviceDistance(Float64 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, SourceToBeamLimitingDeviceDistance).getFloat64(value, pos); -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::setLeafJawPositions(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmDecimalString::checkStringValue(value, "2-2n") : EC_Normal; - if (result.good()) - result = LeafJawPositions.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::setLeafPositionBoundaries(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmDecimalString::checkStringValue(value, "3-n") : EC_Normal; - if (result.good()) - result = LeafPositionBoundaries.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::setNumberOfLeafJawPairs(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = NumberOfLeafJawPairs.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::setRTBeamLimitingDeviceType(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = RTBeamLimitingDeviceType.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::setSourceToBeamLimitingDeviceDistance(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = SourceToBeamLimitingDeviceDistance.putOFStringArray(value); - } - return result; -} - - -// --- sequence class --- - -DRTBeamLimitingDeviceSequenceInRTImageModule::DRTBeamLimitingDeviceSequenceInRTImageModule(const OFBool emptyDefaultSequence) - : EmptyDefaultSequence(emptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - CurrentItem = SequenceOfItems.end(); -} - - -DRTBeamLimitingDeviceSequenceInRTImageModule::DRTBeamLimitingDeviceSequenceInRTImageModule(const DRTBeamLimitingDeviceSequenceInRTImageModule ©) - : EmptyDefaultSequence(copy.EmptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); -} - - -DRTBeamLimitingDeviceSequenceInRTImageModule &DRTBeamLimitingDeviceSequenceInRTImageModule::operator=(const DRTBeamLimitingDeviceSequenceInRTImageModule ©) -{ - if (this != ©) - { - clear(); - EmptyDefaultSequence = copy.EmptyDefaultSequence; - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); - } - return *this; -} - - -DRTBeamLimitingDeviceSequenceInRTImageModule::~DRTBeamLimitingDeviceSequenceInRTImageModule() -{ - clear(); -} - - -void DRTBeamLimitingDeviceSequenceInRTImageModule::clear() -{ - if (!EmptyDefaultSequence) - { - CurrentItem = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* delete all items and free memory */ - while (CurrentItem != last) - { - delete (*CurrentItem); - CurrentItem = SequenceOfItems.erase(CurrentItem); - } - /* make sure that the list is empty */ - SequenceOfItems.clear(); - CurrentItem = SequenceOfItems.end(); - } -} - - -OFBool DRTBeamLimitingDeviceSequenceInRTImageModule::isEmpty() -{ - return SequenceOfItems.empty(); -} - - -OFBool DRTBeamLimitingDeviceSequenceInRTImageModule::isValid() const -{ - return !EmptyDefaultSequence; -} - - -size_t DRTBeamLimitingDeviceSequenceInRTImageModule::getNumberOfItems() const -{ - return SequenceOfItems.size(); -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::gotoFirstItem() -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - CurrentItem = SequenceOfItems.begin(); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::gotoNextItem() -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - ++CurrentItem; - result = EC_Normal; - } - return result; -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::gotoItem(const size_t num) -{ - return gotoItem(num, CurrentItem); -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::getCurrentItem(Item *&item) const -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - item = *CurrentItem; - result = EC_Normal; - } - return result; -} - - -DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::getCurrentItem() -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -const DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::getCurrentItem() const -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::getItem(const size_t num, Item *&item) -{ - OFListIterator(Item *) iterator; - OFCondition result = gotoItem(num, iterator); - if (result.good()) - item = *iterator; - return result; -} - - -DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::getItem(const size_t num) -{ - OFListIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -const DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::getItem(const size_t num) const -{ - OFListConstIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::operator[](const size_t num) -{ - return getItem(num); -} - - -const DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::operator[](const size_t num) const -{ - return getItem(num); -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::addItem(Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.push_back(item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } - return result; -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::insertItem(const size_t pos, Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - result = gotoItem(pos, iterator); - if (result.good()) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.insert(iterator, 1, item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } else - result = addItem(item); - } - return result; -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::removeItem(const size_t pos) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - if (gotoItem(pos, iterator).good()) - { - delete *iterator; - iterator = SequenceOfItems.erase(iterator); - result = EC_Normal; - } else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - /* re-initialize object */ - clear(); - /* retrieve sequence element from dataset */ - DcmSequenceOfItems *sequence; - result = dataset.findAndGetSequence(DCM_BeamLimitingDeviceSequence, sequence); - if (sequence != NULL) - { - if (checkElementValue(*sequence, card, type, result, moduleName)) - { - DcmStack stack; - OFBool first = OFTrue; - /* iterate over all sequence items */ - while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) - { - DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); - if (ditem != NULL) - { - Item *item = new Item(); - if (item != NULL) - { - result = item->read(*ditem); - if (result.good()) - { - /* append new item to the end of the list */ - SequenceOfItems.push_back(item); - first = OFFalse; - } - } else - result = EC_MemoryExhausted; - } else - result = EC_CorruptedData; - } - } - } else { - DcmSequenceOfItems element(DCM_BeamLimitingDeviceSequence); - checkElementValue(element, card, type, result, moduleName); - } - } - return result; -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - result = EC_MemoryExhausted; - DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_BeamLimitingDeviceSequence); - if (sequence != NULL) - { - result = EC_Normal; - /* an empty optional sequence is not written */ - if ((type == "2") || !SequenceOfItems.empty()) - { - OFListIterator(Item *) iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* iterate over all sequence items */ - while (result.good() && (iterator != last)) - { - DcmItem *item = new DcmItem(); - if (item != NULL) - { - /* append new item to the end of the sequence */ - result = sequence->append(item); - if (result.good()) - { - result = (*iterator)->write(*item); - ++iterator; - } else - delete item; - } else - result = EC_MemoryExhausted; - } - if (result.good()) - { - /* insert sequence element into the dataset */ - result = dataset.insert(sequence, OFTrue /*replaceOld*/); - } - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - if (result.good()) - { - /* forget reference to sequence object (avoid deletion below) */ - sequence = NULL; - } - } - else if (type == "1") - { - /* empty type 1 sequence not allowed */ - result = RT_EC_InvalidValue; - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - } - /* delete sequence (if not inserted into the dataset) */ - delete sequence; - } - } - return result; -} - - -// end of source file diff --git a/dcmrt/libsrc/drtblds6.cc b/dcmrt/libsrc/drtblds6.cc deleted file mode 100644 index 6eab998f..00000000 --- a/dcmrt/libsrc/drtblds6.cc +++ /dev/null @@ -1,714 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Source file for class DRTBeamLimitingDeviceSequenceInRTIonBeamsModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/dcmrt/seq/drtblds6.h" - - -// --- item class --- - -DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::Item(const OFBool emptyDefaultItem) - : EmptyDefaultItem(emptyDefaultItem), - LeafJawPositions(DCM_LeafJawPositions), - LeafPositionBoundaries(DCM_LeafPositionBoundaries), - NumberOfLeafJawPairs(DCM_NumberOfLeafJawPairs), - RTBeamLimitingDeviceType(DCM_RTBeamLimitingDeviceType), - SourceToBeamLimitingDeviceDistance(DCM_SourceToBeamLimitingDeviceDistance) -{ -} - - -DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::Item(const Item ©) - : EmptyDefaultItem(copy.EmptyDefaultItem), - LeafJawPositions(copy.LeafJawPositions), - LeafPositionBoundaries(copy.LeafPositionBoundaries), - NumberOfLeafJawPairs(copy.NumberOfLeafJawPairs), - RTBeamLimitingDeviceType(copy.RTBeamLimitingDeviceType), - SourceToBeamLimitingDeviceDistance(copy.SourceToBeamLimitingDeviceDistance) -{ -} - - -DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::~Item() -{ -} - - -DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item &DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::operator=(const Item ©) -{ - if (this != ©) - { - EmptyDefaultItem = copy.EmptyDefaultItem; - LeafJawPositions = copy.LeafJawPositions; - LeafPositionBoundaries = copy.LeafPositionBoundaries; - NumberOfLeafJawPairs = copy.NumberOfLeafJawPairs; - RTBeamLimitingDeviceType = copy.RTBeamLimitingDeviceType; - SourceToBeamLimitingDeviceDistance = copy.SourceToBeamLimitingDeviceDistance; - } - return *this; -} - - -void DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::clear() -{ - if (!EmptyDefaultItem) - { - /* clear all DICOM attributes */ - RTBeamLimitingDeviceType.clear(); - SourceToBeamLimitingDeviceDistance.clear(); - NumberOfLeafJawPairs.clear(); - LeafPositionBoundaries.clear(); - LeafJawPositions.clear(); - } -} - - -OFBool DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::isEmpty() -{ - return RTBeamLimitingDeviceType.isEmpty() && - SourceToBeamLimitingDeviceDistance.isEmpty() && - NumberOfLeafJawPairs.isEmpty() && - LeafPositionBoundaries.isEmpty() && - LeafJawPositions.isEmpty(); -} - - -OFBool DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::isValid() const -{ - return !EmptyDefaultItem; -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::read(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - /* re-initialize object */ - clear(); - getAndCheckElementFromDataset(item, RTBeamLimitingDeviceType, "1", "1", "BeamLimitingDeviceSequence"); - getAndCheckElementFromDataset(item, SourceToBeamLimitingDeviceDistance, "1", "3", "BeamLimitingDeviceSequence"); - getAndCheckElementFromDataset(item, NumberOfLeafJawPairs, "1", "1", "BeamLimitingDeviceSequence"); - getAndCheckElementFromDataset(item, LeafPositionBoundaries, "3-n", "2C", "BeamLimitingDeviceSequence"); - getAndCheckElementFromDataset(item, LeafJawPositions, "2-2n", "1", "BeamLimitingDeviceSequence"); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::write(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = EC_Normal; - addElementToDataset(result, item, new DcmCodeString(RTBeamLimitingDeviceType), "1", "1", "BeamLimitingDeviceSequence"); - addElementToDataset(result, item, new DcmDecimalString(SourceToBeamLimitingDeviceDistance), "1", "3", "BeamLimitingDeviceSequence"); - addElementToDataset(result, item, new DcmIntegerString(NumberOfLeafJawPairs), "1", "1", "BeamLimitingDeviceSequence"); - addElementToDataset(result, item, new DcmDecimalString(LeafPositionBoundaries), "3-n", "2C", "BeamLimitingDeviceSequence"); - addElementToDataset(result, item, new DcmDecimalString(LeafJawPositions), "2-2n", "1", "BeamLimitingDeviceSequence"); - } - return result; -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::getLeafJawPositions(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(LeafJawPositions, value, pos); -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::getLeafJawPositions(Float64 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, LeafJawPositions).getFloat64(value, pos); -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::getLeafJawPositions(OFVector &value) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, LeafJawPositions).getFloat64Vector(value); -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::getLeafPositionBoundaries(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(LeafPositionBoundaries, value, pos); -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::getLeafPositionBoundaries(Float64 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, LeafPositionBoundaries).getFloat64(value, pos); -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::getLeafPositionBoundaries(OFVector &value) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, LeafPositionBoundaries).getFloat64Vector(value); -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::getNumberOfLeafJawPairs(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(NumberOfLeafJawPairs, value, pos); -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::getNumberOfLeafJawPairs(Sint32 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmIntegerString &, NumberOfLeafJawPairs).getSint32(value, pos); -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::getRTBeamLimitingDeviceType(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(RTBeamLimitingDeviceType, value, pos); -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::getSourceToBeamLimitingDeviceDistance(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(SourceToBeamLimitingDeviceDistance, value, pos); -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::getSourceToBeamLimitingDeviceDistance(Float64 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, SourceToBeamLimitingDeviceDistance).getFloat64(value, pos); -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::setLeafJawPositions(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmDecimalString::checkStringValue(value, "2-2n") : EC_Normal; - if (result.good()) - result = LeafJawPositions.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::setLeafPositionBoundaries(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmDecimalString::checkStringValue(value, "3-n") : EC_Normal; - if (result.good()) - result = LeafPositionBoundaries.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::setNumberOfLeafJawPairs(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = NumberOfLeafJawPairs.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::setRTBeamLimitingDeviceType(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = RTBeamLimitingDeviceType.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::setSourceToBeamLimitingDeviceDistance(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = SourceToBeamLimitingDeviceDistance.putOFStringArray(value); - } - return result; -} - - -// --- sequence class --- - -DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::DRTBeamLimitingDeviceSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence) - : EmptyDefaultSequence(emptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - CurrentItem = SequenceOfItems.end(); -} - - -DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::DRTBeamLimitingDeviceSequenceInRTIonBeamsModule(const DRTBeamLimitingDeviceSequenceInRTIonBeamsModule ©) - : EmptyDefaultSequence(copy.EmptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); -} - - -DRTBeamLimitingDeviceSequenceInRTIonBeamsModule &DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::operator=(const DRTBeamLimitingDeviceSequenceInRTIonBeamsModule ©) -{ - if (this != ©) - { - clear(); - EmptyDefaultSequence = copy.EmptyDefaultSequence; - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); - } - return *this; -} - - -DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::~DRTBeamLimitingDeviceSequenceInRTIonBeamsModule() -{ - clear(); -} - - -void DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::clear() -{ - if (!EmptyDefaultSequence) - { - CurrentItem = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* delete all items and free memory */ - while (CurrentItem != last) - { - delete (*CurrentItem); - CurrentItem = SequenceOfItems.erase(CurrentItem); - } - /* make sure that the list is empty */ - SequenceOfItems.clear(); - CurrentItem = SequenceOfItems.end(); - } -} - - -OFBool DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::isEmpty() -{ - return SequenceOfItems.empty(); -} - - -OFBool DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::isValid() const -{ - return !EmptyDefaultSequence; -} - - -size_t DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::getNumberOfItems() const -{ - return SequenceOfItems.size(); -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::gotoFirstItem() -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - CurrentItem = SequenceOfItems.begin(); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::gotoNextItem() -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - ++CurrentItem; - result = EC_Normal; - } - return result; -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::gotoItem(const size_t num) -{ - return gotoItem(num, CurrentItem); -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::getCurrentItem(Item *&item) const -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - item = *CurrentItem; - result = EC_Normal; - } - return result; -} - - -DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item &DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::getCurrentItem() -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -const DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item &DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::getCurrentItem() const -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item) -{ - OFListIterator(Item *) iterator; - OFCondition result = gotoItem(num, iterator); - if (result.good()) - item = *iterator; - return result; -} - - -DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item &DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::getItem(const size_t num) -{ - OFListIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -const DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item &DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::getItem(const size_t num) const -{ - OFListConstIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item &DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::operator[](const size_t num) -{ - return getItem(num); -} - - -const DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item &DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::operator[](const size_t num) const -{ - return getItem(num); -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::addItem(Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.push_back(item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } - return result; -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - result = gotoItem(pos, iterator); - if (result.good()) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.insert(iterator, 1, item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } else - result = addItem(item); - } - return result; -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::removeItem(const size_t pos) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - if (gotoItem(pos, iterator).good()) - { - delete *iterator; - iterator = SequenceOfItems.erase(iterator); - result = EC_Normal; - } else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - /* re-initialize object */ - clear(); - /* retrieve sequence element from dataset */ - DcmSequenceOfItems *sequence; - result = dataset.findAndGetSequence(DCM_BeamLimitingDeviceSequence, sequence); - if (sequence != NULL) - { - if (checkElementValue(*sequence, card, type, result, moduleName)) - { - DcmStack stack; - OFBool first = OFTrue; - /* iterate over all sequence items */ - while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) - { - DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); - if (ditem != NULL) - { - Item *item = new Item(); - if (item != NULL) - { - result = item->read(*ditem); - if (result.good()) - { - /* append new item to the end of the list */ - SequenceOfItems.push_back(item); - first = OFFalse; - } - } else - result = EC_MemoryExhausted; - } else - result = EC_CorruptedData; - } - } - } else { - DcmSequenceOfItems element(DCM_BeamLimitingDeviceSequence); - checkElementValue(element, card, type, result, moduleName); - } - } - return result; -} - - -OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - result = EC_MemoryExhausted; - DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_BeamLimitingDeviceSequence); - if (sequence != NULL) - { - result = EC_Normal; - /* an empty optional sequence is not written */ - if ((type == "2") || !SequenceOfItems.empty()) - { - OFListIterator(Item *) iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* iterate over all sequence items */ - while (result.good() && (iterator != last)) - { - DcmItem *item = new DcmItem(); - if (item != NULL) - { - /* append new item to the end of the sequence */ - result = sequence->append(item); - if (result.good()) - { - result = (*iterator)->write(*item); - ++iterator; - } else - delete item; - } else - result = EC_MemoryExhausted; - } - if (result.good()) - { - /* insert sequence element into the dataset */ - result = dataset.insert(sequence, OFTrue /*replaceOld*/); - } - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - if (result.good()) - { - /* forget reference to sequence object (avoid deletion below) */ - sequence = NULL; - } - } - else if (type == "1") - { - /* empty type 1 sequence not allowed */ - result = RT_EC_InvalidValue; - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - } - /* delete sequence (if not inserted into the dataset) */ - delete sequence; - } - } - return result; -} - - -// end of source file diff --git a/dcmrt/libsrc/drtbldts.cc b/dcmrt/libsrc/drtbldts.cc index 766b92bd..a310e18a 100644 --- a/dcmrt/libsrc/drtbldts.cc +++ b/dcmrt/libsrc/drtbldts.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTBeamLimitingDeviceToleranceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -281,10 +281,12 @@ OFCondition DRTBeamLimitingDeviceToleranceSequence::gotoFirstItem() OFCondition DRTBeamLimitingDeviceToleranceSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtbrcss.cc b/dcmrt/libsrc/drtbrcss.cc index 88856f97..f37e4707 100644 --- a/dcmrt/libsrc/drtbrcss.cc +++ b/dcmrt/libsrc/drtbrcss.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTBreedRegistryCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -656,10 +656,12 @@ OFCondition DRTBreedRegistryCodeSequence::gotoFirstItem() OFCondition DRTBreedRegistryCodeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtbrdrs.cc b/dcmrt/libsrc/drtbrdrs.cc index 3c4882c6..fcf66cd8 100644 --- a/dcmrt/libsrc/drtbrdrs.cc +++ b/dcmrt/libsrc/drtbrdrs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTBrachyReferencedDoseReferenceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -290,10 +290,12 @@ OFCondition DRTBrachyReferencedDoseReferenceSequence::gotoFirstItem() OFCondition DRTBrachyReferencedDoseReferenceSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtbrs.cc b/dcmrt/libsrc/drtbrs.cc index c4e0e0a6..b1e79a9f 100644 --- a/dcmrt/libsrc/drtbrs.cc +++ b/dcmrt/libsrc/drtbrs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTBreedRegistrationSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -250,10 +250,12 @@ OFCondition DRTBreedRegistrationSequence::gotoFirstItem() OFCondition DRTBreedRegistrationSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtbs.cc b/dcmrt/libsrc/drtbs.cc index fbbdeb7f..1d7069ac 100644 --- a/dcmrt/libsrc/drtbs.cc +++ b/dcmrt/libsrc/drtbs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTBeamSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -30,13 +30,18 @@ DRTBeamSequence::Item::Item(const OFBool emptyDefaultItem) BlockSequence(emptyDefaultItem /*emptyDefaultSequence*/), CompensatorSequence(emptyDefaultItem /*emptyDefaultSequence*/), ControlPointSequence(emptyDefaultItem /*emptyDefaultSequence*/), + DefinitionSourceSequence(emptyDefaultItem /*emptyDefaultSequence*/), DeviceSerialNumber(DCM_DeviceSerialNumber), + EnhancedRTBeamLimitingDeviceDefinitionFlag(DCM_EnhancedRTBeamLimitingDeviceDefinitionFlag), + EnhancedRTBeamLimitingDeviceSequence(emptyDefaultItem /*emptyDefaultSequence*/), + EntityLongLabel(DCM_EntityLongLabel), FinalCumulativeMetersetWeight(DCM_FinalCumulativeMetersetWeight), GeneralAccessorySequence(emptyDefaultItem /*emptyDefaultSequence*/), HighDoseTechniqueType(DCM_HighDoseTechniqueType), InstitutionAddress(DCM_InstitutionAddress), InstitutionName(DCM_InstitutionName), InstitutionalDepartmentName(DCM_InstitutionalDepartmentName), + InstitutionalDepartmentTypeCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), Manufacturer(DCM_Manufacturer), ManufacturerModelName(DCM_ManufacturerModelName), NumberOfBlocks(DCM_NumberOfBlocks), @@ -75,13 +80,18 @@ DRTBeamSequence::Item::Item(const Item ©) BlockSequence(copy.BlockSequence), CompensatorSequence(copy.CompensatorSequence), ControlPointSequence(copy.ControlPointSequence), + DefinitionSourceSequence(copy.DefinitionSourceSequence), DeviceSerialNumber(copy.DeviceSerialNumber), + EnhancedRTBeamLimitingDeviceDefinitionFlag(copy.EnhancedRTBeamLimitingDeviceDefinitionFlag), + EnhancedRTBeamLimitingDeviceSequence(copy.EnhancedRTBeamLimitingDeviceSequence), + EntityLongLabel(copy.EntityLongLabel), FinalCumulativeMetersetWeight(copy.FinalCumulativeMetersetWeight), GeneralAccessorySequence(copy.GeneralAccessorySequence), HighDoseTechniqueType(copy.HighDoseTechniqueType), InstitutionAddress(copy.InstitutionAddress), InstitutionName(copy.InstitutionName), InstitutionalDepartmentName(copy.InstitutionalDepartmentName), + InstitutionalDepartmentTypeCodeSequence(copy.InstitutionalDepartmentTypeCodeSequence), Manufacturer(copy.Manufacturer), ManufacturerModelName(copy.ManufacturerModelName), NumberOfBlocks(copy.NumberOfBlocks), @@ -128,13 +138,18 @@ DRTBeamSequence::Item &DRTBeamSequence::Item::operator=(const Item ©) BlockSequence = copy.BlockSequence; CompensatorSequence = copy.CompensatorSequence; ControlPointSequence = copy.ControlPointSequence; + DefinitionSourceSequence = copy.DefinitionSourceSequence; DeviceSerialNumber = copy.DeviceSerialNumber; + EnhancedRTBeamLimitingDeviceDefinitionFlag = copy.EnhancedRTBeamLimitingDeviceDefinitionFlag; + EnhancedRTBeamLimitingDeviceSequence = copy.EnhancedRTBeamLimitingDeviceSequence; + EntityLongLabel = copy.EntityLongLabel; FinalCumulativeMetersetWeight = copy.FinalCumulativeMetersetWeight; GeneralAccessorySequence = copy.GeneralAccessorySequence; HighDoseTechniqueType = copy.HighDoseTechniqueType; InstitutionAddress = copy.InstitutionAddress; InstitutionName = copy.InstitutionName; InstitutionalDepartmentName = copy.InstitutionalDepartmentName; + InstitutionalDepartmentTypeCodeSequence = copy.InstitutionalDepartmentTypeCodeSequence; Manufacturer = copy.Manufacturer; ManufacturerModelName = copy.ManufacturerModelName; NumberOfBlocks = copy.NumberOfBlocks; @@ -170,7 +185,9 @@ void DRTBeamSequence::Item::clear() /* clear all DICOM attributes */ BeamNumber.clear(); BeamName.clear(); + EntityLongLabel.clear(); BeamDescription.clear(); + DefinitionSourceSequence.clear(); BeamType.clear(); RadiationType.clear(); PrimaryFluenceModeSequence.clear(); @@ -180,12 +197,15 @@ void DRTBeamSequence::Item::clear() InstitutionName.clear(); InstitutionAddress.clear(); InstitutionalDepartmentName.clear(); + InstitutionalDepartmentTypeCodeSequence.clear(); ManufacturerModelName.clear(); DeviceSerialNumber.clear(); PrimaryDosimeterUnit.clear(); ReferencedToleranceTableNumber.clear(); SourceAxisDistance.clear(); + EnhancedRTBeamLimitingDeviceDefinitionFlag.clear(); BeamLimitingDeviceSequence.clear(); + EnhancedRTBeamLimitingDeviceSequence.clear(); ReferencedPatientSetupNumber.clear(); ReferencedReferenceImageSequence.clear(); PlannedVerificationImageSequence.clear(); @@ -215,7 +235,9 @@ OFBool DRTBeamSequence::Item::isEmpty() { return BeamNumber.isEmpty() && BeamName.isEmpty() && + EntityLongLabel.isEmpty() && BeamDescription.isEmpty() && + DefinitionSourceSequence.isEmpty() && BeamType.isEmpty() && RadiationType.isEmpty() && PrimaryFluenceModeSequence.isEmpty() && @@ -225,12 +247,15 @@ OFBool DRTBeamSequence::Item::isEmpty() InstitutionName.isEmpty() && InstitutionAddress.isEmpty() && InstitutionalDepartmentName.isEmpty() && + InstitutionalDepartmentTypeCodeSequence.isEmpty() && ManufacturerModelName.isEmpty() && DeviceSerialNumber.isEmpty() && PrimaryDosimeterUnit.isEmpty() && ReferencedToleranceTableNumber.isEmpty() && SourceAxisDistance.isEmpty() && + EnhancedRTBeamLimitingDeviceDefinitionFlag.isEmpty() && BeamLimitingDeviceSequence.isEmpty() && + EnhancedRTBeamLimitingDeviceSequence.isEmpty() && ReferencedPatientSetupNumber.isEmpty() && ReferencedReferenceImageSequence.isEmpty() && PlannedVerificationImageSequence.isEmpty() && @@ -270,7 +295,9 @@ OFCondition DRTBeamSequence::Item::read(DcmItem &item) clear(); getAndCheckElementFromDataset(item, BeamNumber, "1", "1", "BeamSequence"); getAndCheckElementFromDataset(item, BeamName, "1", "3", "BeamSequence"); + getAndCheckElementFromDataset(item, EntityLongLabel, "1", "3", "BeamSequence"); getAndCheckElementFromDataset(item, BeamDescription, "1", "3", "BeamSequence"); + DefinitionSourceSequence.read(item, "1-n", "3", "BeamSequence"); getAndCheckElementFromDataset(item, BeamType, "1", "1", "BeamSequence"); getAndCheckElementFromDataset(item, RadiationType, "1", "2", "BeamSequence"); PrimaryFluenceModeSequence.read(item, "1-n", "3", "BeamSequence"); @@ -280,12 +307,15 @@ OFCondition DRTBeamSequence::Item::read(DcmItem &item) getAndCheckElementFromDataset(item, InstitutionName, "1", "3", "BeamSequence"); getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "BeamSequence"); getAndCheckElementFromDataset(item, InstitutionalDepartmentName, "1", "3", "BeamSequence"); + InstitutionalDepartmentTypeCodeSequence.read(item, "1-n", "3", "BeamSequence"); getAndCheckElementFromDataset(item, ManufacturerModelName, "1", "3", "BeamSequence"); getAndCheckElementFromDataset(item, DeviceSerialNumber, "1", "3", "BeamSequence"); getAndCheckElementFromDataset(item, PrimaryDosimeterUnit, "1", "3", "BeamSequence"); getAndCheckElementFromDataset(item, ReferencedToleranceTableNumber, "1", "3", "BeamSequence"); getAndCheckElementFromDataset(item, SourceAxisDistance, "1", "3", "BeamSequence"); - BeamLimitingDeviceSequence.read(item, "1-n", "1", "BeamSequence"); + getAndCheckElementFromDataset(item, EnhancedRTBeamLimitingDeviceDefinitionFlag, "1", "3", "BeamSequence"); + BeamLimitingDeviceSequence.read(item, "1-n", "1C", "BeamSequence"); + EnhancedRTBeamLimitingDeviceSequence.read(item, "1-n", "1C", "BeamSequence"); getAndCheckElementFromDataset(item, ReferencedPatientSetupNumber, "1", "3", "BeamSequence"); ReferencedReferenceImageSequence.read(item, "1-n", "3", "BeamSequence"); PlannedVerificationImageSequence.read(item, "1-n", "3", "BeamSequence"); @@ -321,7 +351,9 @@ OFCondition DRTBeamSequence::Item::write(DcmItem &item) result = EC_Normal; addElementToDataset(result, item, new DcmIntegerString(BeamNumber), "1", "1", "BeamSequence"); addElementToDataset(result, item, new DcmLongString(BeamName), "1", "3", "BeamSequence"); + addElementToDataset(result, item, new DcmLongString(EntityLongLabel), "1", "3", "BeamSequence"); addElementToDataset(result, item, new DcmShortText(BeamDescription), "1", "3", "BeamSequence"); + if (result.good()) result = DefinitionSourceSequence.write(item, "1-n", "3", "BeamSequence"); addElementToDataset(result, item, new DcmCodeString(BeamType), "1", "1", "BeamSequence"); addElementToDataset(result, item, new DcmCodeString(RadiationType), "1", "2", "BeamSequence"); if (result.good()) result = PrimaryFluenceModeSequence.write(item, "1-n", "3", "BeamSequence"); @@ -331,12 +363,15 @@ OFCondition DRTBeamSequence::Item::write(DcmItem &item) addElementToDataset(result, item, new DcmLongString(InstitutionName), "1", "3", "BeamSequence"); addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "BeamSequence"); addElementToDataset(result, item, new DcmLongString(InstitutionalDepartmentName), "1", "3", "BeamSequence"); + if (result.good()) result = InstitutionalDepartmentTypeCodeSequence.write(item, "1-n", "3", "BeamSequence"); addElementToDataset(result, item, new DcmLongString(ManufacturerModelName), "1", "3", "BeamSequence"); addElementToDataset(result, item, new DcmLongString(DeviceSerialNumber), "1", "3", "BeamSequence"); addElementToDataset(result, item, new DcmCodeString(PrimaryDosimeterUnit), "1", "3", "BeamSequence"); addElementToDataset(result, item, new DcmIntegerString(ReferencedToleranceTableNumber), "1", "3", "BeamSequence"); addElementToDataset(result, item, new DcmDecimalString(SourceAxisDistance), "1", "3", "BeamSequence"); - if (result.good()) result = BeamLimitingDeviceSequence.write(item, "1-n", "1", "BeamSequence"); + addElementToDataset(result, item, new DcmCodeString(EnhancedRTBeamLimitingDeviceDefinitionFlag), "1", "3", "BeamSequence"); + if (result.good()) result = BeamLimitingDeviceSequence.write(item, "1-n", "1C", "BeamSequence"); + if (result.good()) result = EnhancedRTBeamLimitingDeviceSequence.write(item, "1-n", "1C", "BeamSequence"); addElementToDataset(result, item, new DcmIntegerString(ReferencedPatientSetupNumber), "1", "3", "BeamSequence"); if (result.good()) result = ReferencedReferenceImageSequence.write(item, "1-n", "3", "BeamSequence"); if (result.good()) result = PlannedVerificationImageSequence.write(item, "1-n", "3", "BeamSequence"); @@ -417,6 +452,24 @@ OFCondition DRTBeamSequence::Item::getDeviceSerialNumber(OFString &value, const } +OFCondition DRTBeamSequence::Item::getEnhancedRTBeamLimitingDeviceDefinitionFlag(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(EnhancedRTBeamLimitingDeviceDefinitionFlag, value, pos); +} + + +OFCondition DRTBeamSequence::Item::getEntityLongLabel(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(EntityLongLabel, value, pos); +} + + OFCondition DRTBeamSequence::Item::getFinalCumulativeMetersetWeight(OFString &value, const signed long pos) const { if (EmptyDefaultItem) @@ -770,6 +823,32 @@ OFCondition DRTBeamSequence::Item::setDeviceSerialNumber(const OFString &value, } +OFCondition DRTBeamSequence::Item::setEnhancedRTBeamLimitingDeviceDefinitionFlag(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = EnhancedRTBeamLimitingDeviceDefinitionFlag.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTBeamSequence::Item::setEntityLongLabel(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = EntityLongLabel.putOFStringArray(value); + } + return result; +} + + OFCondition DRTBeamSequence::Item::setFinalCumulativeMetersetWeight(const OFString &value, const OFBool check) { OFCondition result = EC_IllegalCall; @@ -1167,10 +1246,12 @@ OFCondition DRTBeamSequence::gotoFirstItem() OFCondition DRTBeamSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtbss.cc b/dcmrt/libsrc/drtbss.cc index 935c88b5..ac124b1a 100644 --- a/dcmrt/libsrc/drtbss.cc +++ b/dcmrt/libsrc/drtbss.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTBlockSlabSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -306,10 +306,12 @@ OFCondition DRTBlockSlabSequence::gotoFirstItem() OFCondition DRTBlockSlabSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtbvcps.cc b/dcmrt/libsrc/drtbvcps.cc index 1a5281f2..a1e3d137 100644 --- a/dcmrt/libsrc/drtbvcps.cc +++ b/dcmrt/libsrc/drtbvcps.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTBeamDoseVerificationControlPointSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -24,6 +24,7 @@ DRTBeamDoseVerificationControlPointSequence::Item::Item(const OFBool emptyDefaul BeamDosePointDepth(DCM_BeamDosePointDepth), BeamDosePointEquivalentDepth(DCM_BeamDosePointEquivalentDepth), BeamDosePointSSD(DCM_BeamDosePointSSD), + BeamDosePointSourceToExternalContourDistance(DCM_BeamDosePointSourceToExternalContourDistance), CumulativeMetersetWeight(DCM_CumulativeMetersetWeight), ReferencedControlPointIndex(DCM_ReferencedControlPointIndex) { @@ -35,6 +36,7 @@ DRTBeamDoseVerificationControlPointSequence::Item::Item(const Item ©) BeamDosePointDepth(copy.BeamDosePointDepth), BeamDosePointEquivalentDepth(copy.BeamDosePointEquivalentDepth), BeamDosePointSSD(copy.BeamDosePointSSD), + BeamDosePointSourceToExternalContourDistance(copy.BeamDosePointSourceToExternalContourDistance), CumulativeMetersetWeight(copy.CumulativeMetersetWeight), ReferencedControlPointIndex(copy.ReferencedControlPointIndex) { @@ -54,6 +56,7 @@ DRTBeamDoseVerificationControlPointSequence::Item &DRTBeamDoseVerificationContro BeamDosePointDepth = copy.BeamDosePointDepth; BeamDosePointEquivalentDepth = copy.BeamDosePointEquivalentDepth; BeamDosePointSSD = copy.BeamDosePointSSD; + BeamDosePointSourceToExternalContourDistance = copy.BeamDosePointSourceToExternalContourDistance; CumulativeMetersetWeight = copy.CumulativeMetersetWeight; ReferencedControlPointIndex = copy.ReferencedControlPointIndex; } @@ -71,6 +74,7 @@ void DRTBeamDoseVerificationControlPointSequence::Item::clear() BeamDosePointDepth.clear(); BeamDosePointEquivalentDepth.clear(); BeamDosePointSSD.clear(); + BeamDosePointSourceToExternalContourDistance.clear(); } } @@ -81,7 +85,8 @@ OFBool DRTBeamDoseVerificationControlPointSequence::Item::isEmpty() ReferencedControlPointIndex.isEmpty() && BeamDosePointDepth.isEmpty() && BeamDosePointEquivalentDepth.isEmpty() && - BeamDosePointSSD.isEmpty(); + BeamDosePointSSD.isEmpty() && + BeamDosePointSourceToExternalContourDistance.isEmpty(); } @@ -103,6 +108,7 @@ OFCondition DRTBeamDoseVerificationControlPointSequence::Item::read(DcmItem &ite getAndCheckElementFromDataset(item, BeamDosePointDepth, "1", "1C", "BeamDoseVerificationControlPointSequence"); getAndCheckElementFromDataset(item, BeamDosePointEquivalentDepth, "1", "1C", "BeamDoseVerificationControlPointSequence"); getAndCheckElementFromDataset(item, BeamDosePointSSD, "1", "1C", "BeamDoseVerificationControlPointSequence"); + getAndCheckElementFromDataset(item, BeamDosePointSourceToExternalContourDistance, "1", "3", "BeamDoseVerificationControlPointSequence"); result = EC_Normal; } return result; @@ -120,6 +126,7 @@ OFCondition DRTBeamDoseVerificationControlPointSequence::Item::write(DcmItem &it addElementToDataset(result, item, new DcmFloatingPointSingle(BeamDosePointDepth), "1", "1C", "BeamDoseVerificationControlPointSequence"); addElementToDataset(result, item, new DcmFloatingPointSingle(BeamDosePointEquivalentDepth), "1", "1C", "BeamDoseVerificationControlPointSequence"); addElementToDataset(result, item, new DcmFloatingPointSingle(BeamDosePointSSD), "1", "1C", "BeamDoseVerificationControlPointSequence"); + addElementToDataset(result, item, new DcmDecimalString(BeamDosePointSourceToExternalContourDistance), "1", "3", "BeamDoseVerificationControlPointSequence"); } return result; } @@ -152,6 +159,24 @@ OFCondition DRTBeamDoseVerificationControlPointSequence::Item::getBeamDosePointS } +OFCondition DRTBeamDoseVerificationControlPointSequence::Item::getBeamDosePointSourceToExternalContourDistance(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(BeamDosePointSourceToExternalContourDistance, value, pos); +} + + +OFCondition DRTBeamDoseVerificationControlPointSequence::Item::getBeamDosePointSourceToExternalContourDistance(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, BeamDosePointSourceToExternalContourDistance).getFloat64(value, pos); +} + + OFCondition DRTBeamDoseVerificationControlPointSequence::Item::getCumulativeMetersetWeight(OFString &value, const signed long pos) const { if (EmptyDefaultItem) @@ -215,6 +240,19 @@ OFCondition DRTBeamDoseVerificationControlPointSequence::Item::setBeamDosePointS } +OFCondition DRTBeamDoseVerificationControlPointSequence::Item::setBeamDosePointSourceToExternalContourDistance(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = BeamDosePointSourceToExternalContourDistance.putOFStringArray(value); + } + return result; +} + + OFCondition DRTBeamDoseVerificationControlPointSequence::Item::setCumulativeMetersetWeight(const OFString &value, const OFBool check) { OFCondition result = EC_IllegalCall; @@ -365,10 +403,12 @@ OFCondition DRTBeamDoseVerificationControlPointSequence::gotoFirstItem() OFCondition DRTBeamDoseVerificationControlPointSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtcbars.cc b/dcmrt/libsrc/drtcbars.cc index bf3f4b9c..e7e25d77 100644 --- a/dcmrt/libsrc/drtcbars.cc +++ b/dcmrt/libsrc/drtcbars.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTContrastBolusAdministrationRouteSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -663,10 +663,12 @@ OFCondition DRTContrastBolusAdministrationRouteSequence::gotoFirstItem() OFCondition DRTContrastBolusAdministrationRouteSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtccs.cc b/dcmrt/libsrc/drtccs.cc index a5bd570f..6f0afb7b 100644 --- a/dcmrt/libsrc/drtccs.cc +++ b/dcmrt/libsrc/drtccs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTConceptCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -656,10 +656,12 @@ OFCondition DRTConceptCodeSequence::gotoFirstItem() OFCondition DRTConceptCodeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtcctus.cc b/dcmrt/libsrc/drtcctus.cc index 5d631bd1..efef2901 100644 --- a/dcmrt/libsrc/drtcctus.cc +++ b/dcmrt/libsrc/drtcctus.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTConsentForClinicalTrialUseSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -301,10 +301,12 @@ OFCondition DRTConsentForClinicalTrialUseSequence::gotoFirstItem() OFCondition DRTConsentForClinicalTrialUseSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtcdrs.cc b/dcmrt/libsrc/drtcdrs.cc index 16a47a53..63ee4d8b 100644 --- a/dcmrt/libsrc/drtcdrs.cc +++ b/dcmrt/libsrc/drtcdrs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTCalculatedDoseReferenceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -357,10 +357,12 @@ OFCondition DRTCalculatedDoseReferenceSequence::gotoFirstItem() OFCondition DRTCalculatedDoseReferenceSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtces.cc b/dcmrt/libsrc/drtces.cc index 35b976d0..87a62e74 100644 --- a/dcmrt/libsrc/drtces.cc +++ b/dcmrt/libsrc/drtces.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTContributingEquipmentSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -25,9 +25,11 @@ DRTContributingEquipmentSequence::Item::Item(const OFBool emptyDefaultItem) ContributionDescription(DCM_ContributionDescription), DateOfLastCalibration(DCM_DateOfLastCalibration), DeviceSerialNumber(DCM_DeviceSerialNumber), + DeviceUID(DCM_DeviceUID), InstitutionAddress(DCM_InstitutionAddress), InstitutionName(DCM_InstitutionName), InstitutionalDepartmentName(DCM_InstitutionalDepartmentName), + InstitutionalDepartmentTypeCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), Manufacturer(DCM_Manufacturer), ManufacturerModelName(DCM_ManufacturerModelName), OperatorIdentificationSequence(emptyDefaultItem /*emptyDefaultSequence*/), @@ -36,7 +38,8 @@ DRTContributingEquipmentSequence::Item::Item(const OFBool emptyDefaultItem) SoftwareVersions(DCM_SoftwareVersions), SpatialResolution(DCM_SpatialResolution), StationName(DCM_StationName), - TimeOfLastCalibration(DCM_TimeOfLastCalibration) + TimeOfLastCalibration(DCM_TimeOfLastCalibration), + UDISequence(emptyDefaultItem /*emptyDefaultSequence*/) { } @@ -47,9 +50,11 @@ DRTContributingEquipmentSequence::Item::Item(const Item ©) ContributionDescription(copy.ContributionDescription), DateOfLastCalibration(copy.DateOfLastCalibration), DeviceSerialNumber(copy.DeviceSerialNumber), + DeviceUID(copy.DeviceUID), InstitutionAddress(copy.InstitutionAddress), InstitutionName(copy.InstitutionName), InstitutionalDepartmentName(copy.InstitutionalDepartmentName), + InstitutionalDepartmentTypeCodeSequence(copy.InstitutionalDepartmentTypeCodeSequence), Manufacturer(copy.Manufacturer), ManufacturerModelName(copy.ManufacturerModelName), OperatorIdentificationSequence(copy.OperatorIdentificationSequence), @@ -58,7 +63,8 @@ DRTContributingEquipmentSequence::Item::Item(const Item ©) SoftwareVersions(copy.SoftwareVersions), SpatialResolution(copy.SpatialResolution), StationName(copy.StationName), - TimeOfLastCalibration(copy.TimeOfLastCalibration) + TimeOfLastCalibration(copy.TimeOfLastCalibration), + UDISequence(copy.UDISequence) { } @@ -77,9 +83,11 @@ DRTContributingEquipmentSequence::Item &DRTContributingEquipmentSequence::Item:: ContributionDescription = copy.ContributionDescription; DateOfLastCalibration = copy.DateOfLastCalibration; DeviceSerialNumber = copy.DeviceSerialNumber; + DeviceUID = copy.DeviceUID; InstitutionAddress = copy.InstitutionAddress; InstitutionName = copy.InstitutionName; InstitutionalDepartmentName = copy.InstitutionalDepartmentName; + InstitutionalDepartmentTypeCodeSequence = copy.InstitutionalDepartmentTypeCodeSequence; Manufacturer = copy.Manufacturer; ManufacturerModelName = copy.ManufacturerModelName; OperatorIdentificationSequence = copy.OperatorIdentificationSequence; @@ -89,6 +97,7 @@ DRTContributingEquipmentSequence::Item &DRTContributingEquipmentSequence::Item:: SpatialResolution = copy.SpatialResolution; StationName = copy.StationName; TimeOfLastCalibration = copy.TimeOfLastCalibration; + UDISequence = copy.UDISequence; } return *this; } @@ -105,11 +114,14 @@ void DRTContributingEquipmentSequence::Item::clear() InstitutionAddress.clear(); StationName.clear(); InstitutionalDepartmentName.clear(); + InstitutionalDepartmentTypeCodeSequence.clear(); OperatorsName.clear(); OperatorIdentificationSequence.clear(); ManufacturerModelName.clear(); DeviceSerialNumber.clear(); SoftwareVersions.clear(); + DeviceUID.clear(); + UDISequence.clear(); SpatialResolution.clear(); DateOfLastCalibration.clear(); TimeOfLastCalibration.clear(); @@ -127,11 +139,14 @@ OFBool DRTContributingEquipmentSequence::Item::isEmpty() InstitutionAddress.isEmpty() && StationName.isEmpty() && InstitutionalDepartmentName.isEmpty() && + InstitutionalDepartmentTypeCodeSequence.isEmpty() && OperatorsName.isEmpty() && OperatorIdentificationSequence.isEmpty() && ManufacturerModelName.isEmpty() && DeviceSerialNumber.isEmpty() && SoftwareVersions.isEmpty() && + DeviceUID.isEmpty() && + UDISequence.isEmpty() && SpatialResolution.isEmpty() && DateOfLastCalibration.isEmpty() && TimeOfLastCalibration.isEmpty() && @@ -159,11 +174,14 @@ OFCondition DRTContributingEquipmentSequence::Item::read(DcmItem &item) getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "ContributingEquipmentSequence"); getAndCheckElementFromDataset(item, StationName, "1", "3", "ContributingEquipmentSequence"); getAndCheckElementFromDataset(item, InstitutionalDepartmentName, "1", "3", "ContributingEquipmentSequence"); + InstitutionalDepartmentTypeCodeSequence.read(item, "1-n", "3", "ContributingEquipmentSequence"); getAndCheckElementFromDataset(item, OperatorsName, "1-n", "3", "ContributingEquipmentSequence"); OperatorIdentificationSequence.read(item, "1-n", "3", "ContributingEquipmentSequence"); getAndCheckElementFromDataset(item, ManufacturerModelName, "1", "3", "ContributingEquipmentSequence"); getAndCheckElementFromDataset(item, DeviceSerialNumber, "1", "3", "ContributingEquipmentSequence"); getAndCheckElementFromDataset(item, SoftwareVersions, "1-n", "3", "ContributingEquipmentSequence"); + getAndCheckElementFromDataset(item, DeviceUID, "1", "3", "ContributingEquipmentSequence"); + UDISequence.read(item, "1-n", "3", "ContributingEquipmentSequence"); getAndCheckElementFromDataset(item, SpatialResolution, "1", "3", "ContributingEquipmentSequence"); getAndCheckElementFromDataset(item, DateOfLastCalibration, "1-n", "3", "ContributingEquipmentSequence"); getAndCheckElementFromDataset(item, TimeOfLastCalibration, "1-n", "3", "ContributingEquipmentSequence"); @@ -187,11 +205,14 @@ OFCondition DRTContributingEquipmentSequence::Item::write(DcmItem &item) addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "ContributingEquipmentSequence"); addElementToDataset(result, item, new DcmShortString(StationName), "1", "3", "ContributingEquipmentSequence"); addElementToDataset(result, item, new DcmLongString(InstitutionalDepartmentName), "1", "3", "ContributingEquipmentSequence"); + if (result.good()) result = InstitutionalDepartmentTypeCodeSequence.write(item, "1-n", "3", "ContributingEquipmentSequence"); addElementToDataset(result, item, new DcmPersonName(OperatorsName), "1-n", "3", "ContributingEquipmentSequence"); if (result.good()) result = OperatorIdentificationSequence.write(item, "1-n", "3", "ContributingEquipmentSequence"); addElementToDataset(result, item, new DcmLongString(ManufacturerModelName), "1", "3", "ContributingEquipmentSequence"); addElementToDataset(result, item, new DcmLongString(DeviceSerialNumber), "1", "3", "ContributingEquipmentSequence"); addElementToDataset(result, item, new DcmLongString(SoftwareVersions), "1-n", "3", "ContributingEquipmentSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(DeviceUID), "1", "3", "ContributingEquipmentSequence"); + if (result.good()) result = UDISequence.write(item, "1-n", "3", "ContributingEquipmentSequence"); addElementToDataset(result, item, new DcmDecimalString(SpatialResolution), "1", "3", "ContributingEquipmentSequence"); addElementToDataset(result, item, new DcmDate(DateOfLastCalibration), "1-n", "3", "ContributingEquipmentSequence"); addElementToDataset(result, item, new DcmTime(TimeOfLastCalibration), "1-n", "3", "ContributingEquipmentSequence"); @@ -238,6 +259,15 @@ OFCondition DRTContributingEquipmentSequence::Item::getDeviceSerialNumber(OFStri } +OFCondition DRTContributingEquipmentSequence::Item::getDeviceUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(DeviceUID, value, pos); +} + + OFCondition DRTContributingEquipmentSequence::Item::getInstitutionAddress(OFString &value, const signed long pos) const { if (EmptyDefaultItem) @@ -389,6 +419,19 @@ OFCondition DRTContributingEquipmentSequence::Item::setDeviceSerialNumber(const } +OFCondition DRTContributingEquipmentSequence::Item::setDeviceUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = DeviceUID.putOFStringArray(value); + } + return result; +} + + OFCondition DRTContributingEquipmentSequence::Item::setInstitutionAddress(const OFString &value, const OFBool check) { OFCondition result = EC_IllegalCall; @@ -643,10 +686,12 @@ OFCondition DRTContributingEquipmentSequence::gotoFirstItem() OFCondition DRTContributingEquipmentSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtcgis.cc b/dcmrt/libsrc/drtcgis.cc index 74c6749e..4ed204cd 100644 --- a/dcmrt/libsrc/drtcgis.cc +++ b/dcmrt/libsrc/drtcgis.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTContextGroupIdentificationSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -330,10 +330,12 @@ OFCondition DRTContextGroupIdentificationSequence::gotoFirstItem() OFCondition DRTContextGroupIdentificationSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtchs.cc b/dcmrt/libsrc/drtchs.cc index 004ae081..4ac9aadb 100644 --- a/dcmrt/libsrc/drtchs.cc +++ b/dcmrt/libsrc/drtchs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTChannelSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -22,6 +22,7 @@ DRTChannelSequence::Item::Item(const OFBool emptyDefaultItem) : EmptyDefaultItem(emptyDefaultItem), AfterloaderChannelID(DCM_AfterloaderChannelID), + ApplicatorShapeReferencedROINumber(DCM_ApplicatorShapeReferencedROINumber), BrachyControlPointSequence(emptyDefaultItem /*emptyDefaultSequence*/), ChannelEffectiveLength(DCM_ChannelEffectiveLength), ChannelInnerLength(DCM_ChannelInnerLength), @@ -56,6 +57,7 @@ DRTChannelSequence::Item::Item(const OFBool emptyDefaultItem) DRTChannelSequence::Item::Item(const Item ©) : EmptyDefaultItem(copy.EmptyDefaultItem), AfterloaderChannelID(copy.AfterloaderChannelID), + ApplicatorShapeReferencedROINumber(copy.ApplicatorShapeReferencedROINumber), BrachyControlPointSequence(copy.BrachyControlPointSequence), ChannelEffectiveLength(copy.ChannelEffectiveLength), ChannelInnerLength(copy.ChannelInnerLength), @@ -98,6 +100,7 @@ DRTChannelSequence::Item &DRTChannelSequence::Item::operator=(const Item ©) { EmptyDefaultItem = copy.EmptyDefaultItem; AfterloaderChannelID = copy.AfterloaderChannelID; + ApplicatorShapeReferencedROINumber = copy.ApplicatorShapeReferencedROINumber; BrachyControlPointSequence = copy.BrachyControlPointSequence; ChannelEffectiveLength = copy.ChannelEffectiveLength; ChannelInnerLength = copy.ChannelInnerLength; @@ -152,6 +155,7 @@ void DRTChannelSequence::Item::clear() SourceApplicatorWallNominalThickness.clear(); SourceApplicatorWallNominalTransmission.clear(); SourceApplicatorStepSize.clear(); + ApplicatorShapeReferencedROINumber.clear(); ReferencedROINumber.clear(); TransferTubeNumber.clear(); TransferTubeLength.clear(); @@ -186,6 +190,7 @@ OFBool DRTChannelSequence::Item::isEmpty() SourceApplicatorWallNominalThickness.isEmpty() && SourceApplicatorWallNominalTransmission.isEmpty() && SourceApplicatorStepSize.isEmpty() && + ApplicatorShapeReferencedROINumber.isEmpty() && ReferencedROINumber.isEmpty() && TransferTubeNumber.isEmpty() && TransferTubeLength.isEmpty() && @@ -230,6 +235,7 @@ OFCondition DRTChannelSequence::Item::read(DcmItem &item) getAndCheckElementFromDataset(item, SourceApplicatorWallNominalThickness, "1", "3", "ChannelSequence"); getAndCheckElementFromDataset(item, SourceApplicatorWallNominalTransmission, "1", "3", "ChannelSequence"); getAndCheckElementFromDataset(item, SourceApplicatorStepSize, "1", "1C", "ChannelSequence"); + getAndCheckElementFromDataset(item, ApplicatorShapeReferencedROINumber, "1", "3", "ChannelSequence"); getAndCheckElementFromDataset(item, ReferencedROINumber, "1", "2C", "ChannelSequence"); getAndCheckElementFromDataset(item, TransferTubeNumber, "1", "2", "ChannelSequence"); getAndCheckElementFromDataset(item, TransferTubeLength, "1", "2C", "ChannelSequence"); @@ -270,6 +276,7 @@ OFCondition DRTChannelSequence::Item::write(DcmItem &item) addElementToDataset(result, item, new DcmDecimalString(SourceApplicatorWallNominalThickness), "1", "3", "ChannelSequence"); addElementToDataset(result, item, new DcmDecimalString(SourceApplicatorWallNominalTransmission), "1", "3", "ChannelSequence"); addElementToDataset(result, item, new DcmDecimalString(SourceApplicatorStepSize), "1", "1C", "ChannelSequence"); + addElementToDataset(result, item, new DcmIntegerString(ApplicatorShapeReferencedROINumber), "1", "3", "ChannelSequence"); addElementToDataset(result, item, new DcmIntegerString(ReferencedROINumber), "1", "2C", "ChannelSequence"); addElementToDataset(result, item, new DcmIntegerString(TransferTubeNumber), "1", "2", "ChannelSequence"); addElementToDataset(result, item, new DcmDecimalString(TransferTubeLength), "1", "2C", "ChannelSequence"); @@ -295,6 +302,24 @@ OFCondition DRTChannelSequence::Item::getAfterloaderChannelID(OFString &value, c } +OFCondition DRTChannelSequence::Item::getApplicatorShapeReferencedROINumber(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ApplicatorShapeReferencedROINumber, value, pos); +} + + +OFCondition DRTChannelSequence::Item::getApplicatorShapeReferencedROINumber(Sint32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmIntegerString &, ApplicatorShapeReferencedROINumber).getSint32(value, pos); +} + + OFCondition DRTChannelSequence::Item::getChannelEffectiveLength(OFString &value, const signed long pos) const { if (EmptyDefaultItem) @@ -704,6 +729,19 @@ OFCondition DRTChannelSequence::Item::setAfterloaderChannelID(const OFString &va } +OFCondition DRTChannelSequence::Item::setApplicatorShapeReferencedROINumber(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ApplicatorShapeReferencedROINumber.putOFStringArray(value); + } + return result; +} + + OFCondition DRTChannelSequence::Item::setChannelEffectiveLength(const OFString &value, const OFBool check) { OFCondition result = EC_IllegalCall; @@ -1153,10 +1191,12 @@ OFCondition DRTChannelSequence::gotoFirstItem() OFCondition DRTChannelSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtcims.cc b/dcmrt/libsrc/drtcims.cc index 6cc3c2e0..c42d80cf 100644 --- a/dcmrt/libsrc/drtcims.cc +++ b/dcmrt/libsrc/drtcims.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTContentItemModifierSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -29,6 +29,7 @@ DRTContentItemModifierSequence::Item::Item(const OFBool emptyDefaultItem) MeasurementUnitsCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), NumericValue(DCM_NumericValue), ObservationDateTime(DCM_ObservationDateTime), + ObservationStartDateTime(DCM_ObservationStartDateTime), PersonName(DCM_PersonName), RationalDenominatorValue(DCM_RationalDenominatorValue), RationalNumeratorValue(DCM_RationalNumeratorValue), @@ -51,6 +52,7 @@ DRTContentItemModifierSequence::Item::Item(const Item ©) MeasurementUnitsCodeSequence(copy.MeasurementUnitsCodeSequence), NumericValue(copy.NumericValue), ObservationDateTime(copy.ObservationDateTime), + ObservationStartDateTime(copy.ObservationStartDateTime), PersonName(copy.PersonName), RationalDenominatorValue(copy.RationalDenominatorValue), RationalNumeratorValue(copy.RationalNumeratorValue), @@ -81,6 +83,7 @@ DRTContentItemModifierSequence::Item &DRTContentItemModifierSequence::Item::oper MeasurementUnitsCodeSequence = copy.MeasurementUnitsCodeSequence; NumericValue = copy.NumericValue; ObservationDateTime = copy.ObservationDateTime; + ObservationStartDateTime = copy.ObservationStartDateTime; PersonName = copy.PersonName; RationalDenominatorValue = copy.RationalDenominatorValue; RationalNumeratorValue = copy.RationalNumeratorValue; @@ -101,6 +104,7 @@ void DRTContentItemModifierSequence::Item::clear() /* clear all DICOM attributes */ ValueType.clear(); ObservationDateTime.clear(); + ObservationStartDateTime.clear(); ConceptNameCodeSequence.clear(); DateTime.clear(); Date.clear(); @@ -123,6 +127,7 @@ OFBool DRTContentItemModifierSequence::Item::isEmpty() { return ValueType.isEmpty() && ObservationDateTime.isEmpty() && + ObservationStartDateTime.isEmpty() && ConceptNameCodeSequence.isEmpty() && DateTime.isEmpty() && Date.isEmpty() && @@ -155,6 +160,7 @@ OFCondition DRTContentItemModifierSequence::Item::read(DcmItem &item) clear(); getAndCheckElementFromDataset(item, ValueType, "1", "1", "ContentItemModifierSequence"); getAndCheckElementFromDataset(item, ObservationDateTime, "1", "3", "ContentItemModifierSequence"); + getAndCheckElementFromDataset(item, ObservationStartDateTime, "1", "3", "ContentItemModifierSequence"); ConceptNameCodeSequence.read(item, "1-n", "1", "ContentItemModifierSequence"); getAndCheckElementFromDataset(item, DateTime, "1", "1C", "ContentItemModifierSequence"); getAndCheckElementFromDataset(item, Date, "1", "1C", "ContentItemModifierSequence"); @@ -183,6 +189,7 @@ OFCondition DRTContentItemModifierSequence::Item::write(DcmItem &item) result = EC_Normal; addElementToDataset(result, item, new DcmCodeString(ValueType), "1", "1", "ContentItemModifierSequence"); addElementToDataset(result, item, new DcmDateTime(ObservationDateTime), "1", "3", "ContentItemModifierSequence"); + addElementToDataset(result, item, new DcmDateTime(ObservationStartDateTime), "1", "3", "ContentItemModifierSequence"); if (result.good()) result = ConceptNameCodeSequence.write(item, "1-n", "1", "ContentItemModifierSequence"); addElementToDataset(result, item, new DcmDateTime(DateTime), "1", "1C", "ContentItemModifierSequence"); addElementToDataset(result, item, new DcmDate(Date), "1", "1C", "ContentItemModifierSequence"); @@ -265,6 +272,15 @@ OFCondition DRTContentItemModifierSequence::Item::getObservationDateTime(OFStrin } +OFCondition DRTContentItemModifierSequence::Item::getObservationStartDateTime(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ObservationStartDateTime, value, pos); +} + + OFCondition DRTContentItemModifierSequence::Item::getPersonName(OFString &value, const signed long pos) const { if (EmptyDefaultItem) @@ -389,6 +405,19 @@ OFCondition DRTContentItemModifierSequence::Item::setObservationDateTime(const O } +OFCondition DRTContentItemModifierSequence::Item::setObservationStartDateTime(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ObservationStartDateTime.putOFStringArray(value); + } + return result; +} + + OFCondition DRTContentItemModifierSequence::Item::setPersonName(const OFString &value, const OFBool check) { OFCondition result = EC_IllegalCall; @@ -596,10 +625,12 @@ OFCondition DRTContentItemModifierSequence::gotoFirstItem() OFCondition DRTContentItemModifierSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtcis.cc b/dcmrt/libsrc/drtcis.cc index 79ac761d..06709364 100644 --- a/dcmrt/libsrc/drtcis.cc +++ b/dcmrt/libsrc/drtcis.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTContourImageSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -335,10 +335,12 @@ OFCondition DRTContourImageSequence::gotoFirstItem() OFCondition DRTContourImageSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtcncs.cc b/dcmrt/libsrc/drtcncs.cc index 49d89196..ababe0f9 100644 --- a/dcmrt/libsrc/drtcncs.cc +++ b/dcmrt/libsrc/drtcncs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTConceptNameCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -656,10 +656,12 @@ OFCondition DRTConceptNameCodeSequence::gotoFirstItem() OFCondition DRTConceptNameCodeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtcos.cc b/dcmrt/libsrc/drtcos.cc index 9f7626e5..0240f6b4 100644 --- a/dcmrt/libsrc/drtcos.cc +++ b/dcmrt/libsrc/drtcos.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTCompensatorSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -862,10 +862,12 @@ OFCondition DRTCompensatorSequence::gotoFirstItem() OFCondition DRTCompensatorSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtcpas.cc b/dcmrt/libsrc/drtcpas.cc index 16fd2edf..bd02a346 100644 --- a/dcmrt/libsrc/drtcpas.cc +++ b/dcmrt/libsrc/drtcpas.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTCorrectedParameterSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -335,10 +335,12 @@ OFCondition DRTCorrectedParameterSequence::gotoFirstItem() OFCondition DRTCorrectedParameterSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtcpis.cc b/dcmrt/libsrc/drtcpis.cc index 67fcb6cd..99507485 100644 --- a/dcmrt/libsrc/drtcpis.cc +++ b/dcmrt/libsrc/drtcpis.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTConsultingPhysicianIdentificationSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -24,6 +24,8 @@ DRTConsultingPhysicianIdentificationSequence::Item::Item(const OFBool emptyDefau InstitutionAddress(DCM_InstitutionAddress), InstitutionCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), InstitutionName(DCM_InstitutionName), + InstitutionalDepartmentName(DCM_InstitutionalDepartmentName), + InstitutionalDepartmentTypeCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), PersonAddress(DCM_PersonAddress), PersonIdentificationCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), PersonTelecomInformation(DCM_PersonTelecomInformation), @@ -37,6 +39,8 @@ DRTConsultingPhysicianIdentificationSequence::Item::Item(const Item ©) InstitutionAddress(copy.InstitutionAddress), InstitutionCodeSequence(copy.InstitutionCodeSequence), InstitutionName(copy.InstitutionName), + InstitutionalDepartmentName(copy.InstitutionalDepartmentName), + InstitutionalDepartmentTypeCodeSequence(copy.InstitutionalDepartmentTypeCodeSequence), PersonAddress(copy.PersonAddress), PersonIdentificationCodeSequence(copy.PersonIdentificationCodeSequence), PersonTelecomInformation(copy.PersonTelecomInformation), @@ -58,6 +62,8 @@ DRTConsultingPhysicianIdentificationSequence::Item &DRTConsultingPhysicianIdenti InstitutionAddress = copy.InstitutionAddress; InstitutionCodeSequence = copy.InstitutionCodeSequence; InstitutionName = copy.InstitutionName; + InstitutionalDepartmentName = copy.InstitutionalDepartmentName; + InstitutionalDepartmentTypeCodeSequence = copy.InstitutionalDepartmentTypeCodeSequence; PersonAddress = copy.PersonAddress; PersonIdentificationCodeSequence = copy.PersonIdentificationCodeSequence; PersonTelecomInformation = copy.PersonTelecomInformation; @@ -79,6 +85,8 @@ void DRTConsultingPhysicianIdentificationSequence::Item::clear() InstitutionName.clear(); InstitutionAddress.clear(); InstitutionCodeSequence.clear(); + InstitutionalDepartmentName.clear(); + InstitutionalDepartmentTypeCodeSequence.clear(); } } @@ -91,7 +99,9 @@ OFBool DRTConsultingPhysicianIdentificationSequence::Item::isEmpty() PersonTelecomInformation.isEmpty() && InstitutionName.isEmpty() && InstitutionAddress.isEmpty() && - InstitutionCodeSequence.isEmpty(); + InstitutionCodeSequence.isEmpty() && + InstitutionalDepartmentName.isEmpty() && + InstitutionalDepartmentTypeCodeSequence.isEmpty(); } @@ -115,6 +125,8 @@ OFCondition DRTConsultingPhysicianIdentificationSequence::Item::read(DcmItem &it getAndCheckElementFromDataset(item, InstitutionName, "1", "1C", "ConsultingPhysicianIdentificationSequence"); getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "ConsultingPhysicianIdentificationSequence"); InstitutionCodeSequence.read(item, "1-n", "1C", "ConsultingPhysicianIdentificationSequence"); + getAndCheckElementFromDataset(item, InstitutionalDepartmentName, "1", "3", "ConsultingPhysicianIdentificationSequence"); + InstitutionalDepartmentTypeCodeSequence.read(item, "1-n", "3", "ConsultingPhysicianIdentificationSequence"); result = EC_Normal; } return result; @@ -134,6 +146,8 @@ OFCondition DRTConsultingPhysicianIdentificationSequence::Item::write(DcmItem &i addElementToDataset(result, item, new DcmLongString(InstitutionName), "1", "1C", "ConsultingPhysicianIdentificationSequence"); addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "ConsultingPhysicianIdentificationSequence"); if (result.good()) result = InstitutionCodeSequence.write(item, "1-n", "1C", "ConsultingPhysicianIdentificationSequence"); + addElementToDataset(result, item, new DcmLongString(InstitutionalDepartmentName), "1", "3", "ConsultingPhysicianIdentificationSequence"); + if (result.good()) result = InstitutionalDepartmentTypeCodeSequence.write(item, "1-n", "3", "ConsultingPhysicianIdentificationSequence"); } return result; } @@ -157,6 +171,15 @@ OFCondition DRTConsultingPhysicianIdentificationSequence::Item::getInstitutionNa } +OFCondition DRTConsultingPhysicianIdentificationSequence::Item::getInstitutionalDepartmentName(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(InstitutionalDepartmentName, value, pos); +} + + OFCondition DRTConsultingPhysicianIdentificationSequence::Item::getPersonAddress(OFString &value, const signed long pos) const { if (EmptyDefaultItem) @@ -210,6 +233,19 @@ OFCondition DRTConsultingPhysicianIdentificationSequence::Item::setInstitutionNa } +OFCondition DRTConsultingPhysicianIdentificationSequence::Item::setInstitutionalDepartmentName(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = InstitutionalDepartmentName.putOFStringArray(value); + } + return result; +} + + OFCondition DRTConsultingPhysicianIdentificationSequence::Item::setPersonAddress(const OFString &value, const OFBool check) { OFCondition result = EC_IllegalCall; @@ -373,10 +409,12 @@ OFCondition DRTConsultingPhysicianIdentificationSequence::gotoFirstItem() OFCondition DRTConsultingPhysicianIdentificationSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtcps.cc b/dcmrt/libsrc/drtcps.cc index 4110535a..4bc1a9d6 100644 --- a/dcmrt/libsrc/drtcps.cc +++ b/dcmrt/libsrc/drtcps.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTControlPointSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -27,6 +27,7 @@ DRTControlPointSequence::Item::Item(const OFBool emptyDefaultItem) ControlPointIndex(DCM_ControlPointIndex), CumulativeMetersetWeight(DCM_CumulativeMetersetWeight), DoseRateSet(DCM_DoseRateSet), + EnhancedRTBeamLimitingOpeningSequence(emptyDefaultItem /*emptyDefaultSequence*/), ExternalContourEntryPoint(DCM_ExternalContourEntryPoint), GantryAngle(DCM_GantryAngle), GantryPitchAngle(DCM_GantryPitchAngle), @@ -64,6 +65,7 @@ DRTControlPointSequence::Item::Item(const Item ©) ControlPointIndex(copy.ControlPointIndex), CumulativeMetersetWeight(copy.CumulativeMetersetWeight), DoseRateSet(copy.DoseRateSet), + EnhancedRTBeamLimitingOpeningSequence(copy.EnhancedRTBeamLimitingOpeningSequence), ExternalContourEntryPoint(copy.ExternalContourEntryPoint), GantryAngle(copy.GantryAngle), GantryPitchAngle(copy.GantryPitchAngle), @@ -109,6 +111,7 @@ DRTControlPointSequence::Item &DRTControlPointSequence::Item::operator=(const It ControlPointIndex = copy.ControlPointIndex; CumulativeMetersetWeight = copy.CumulativeMetersetWeight; DoseRateSet = copy.DoseRateSet; + EnhancedRTBeamLimitingOpeningSequence = copy.EnhancedRTBeamLimitingOpeningSequence; ExternalContourEntryPoint = copy.ExternalContourEntryPoint; GantryAngle = copy.GantryAngle; GantryPitchAngle = copy.GantryPitchAngle; @@ -152,6 +155,7 @@ void DRTControlPointSequence::Item::clear() DoseRateSet.clear(); WedgePositionSequence.clear(); BeamLimitingDevicePositionSequence.clear(); + EnhancedRTBeamLimitingOpeningSequence.clear(); GantryAngle.clear(); GantryRotationDirection.clear(); GantryPitchAngle.clear(); @@ -189,6 +193,7 @@ OFBool DRTControlPointSequence::Item::isEmpty() DoseRateSet.isEmpty() && WedgePositionSequence.isEmpty() && BeamLimitingDevicePositionSequence.isEmpty() && + EnhancedRTBeamLimitingOpeningSequence.isEmpty() && GantryAngle.isEmpty() && GantryRotationDirection.isEmpty() && GantryPitchAngle.isEmpty() && @@ -236,6 +241,7 @@ OFCondition DRTControlPointSequence::Item::read(DcmItem &item) getAndCheckElementFromDataset(item, DoseRateSet, "1", "3", "ControlPointSequence"); WedgePositionSequence.read(item, "1-n", "1C", "ControlPointSequence"); BeamLimitingDevicePositionSequence.read(item, "1-n", "1C", "ControlPointSequence"); + EnhancedRTBeamLimitingOpeningSequence.read(item, "1-n", "2C", "ControlPointSequence"); getAndCheckElementFromDataset(item, GantryAngle, "1", "1C", "ControlPointSequence"); getAndCheckElementFromDataset(item, GantryRotationDirection, "1", "1C", "ControlPointSequence"); getAndCheckElementFromDataset(item, GantryPitchAngle, "1", "3", "ControlPointSequence"); @@ -279,6 +285,7 @@ OFCondition DRTControlPointSequence::Item::write(DcmItem &item) addElementToDataset(result, item, new DcmDecimalString(DoseRateSet), "1", "3", "ControlPointSequence"); if (result.good()) result = WedgePositionSequence.write(item, "1-n", "1C", "ControlPointSequence"); if (result.good()) result = BeamLimitingDevicePositionSequence.write(item, "1-n", "1C", "ControlPointSequence"); + if (result.good()) result = EnhancedRTBeamLimitingOpeningSequence.write(item, "1-n", "2C", "ControlPointSequence"); addElementToDataset(result, item, new DcmDecimalString(GantryAngle), "1", "1C", "ControlPointSequence"); addElementToDataset(result, item, new DcmCodeString(GantryRotationDirection), "1", "1C", "ControlPointSequence"); addElementToDataset(result, item, new DcmFloatingPointSingle(GantryPitchAngle), "1", "3", "ControlPointSequence"); @@ -1158,10 +1165,12 @@ OFCondition DRTControlPointSequence::gotoFirstItem() OFCondition DRTControlPointSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtcs.cc b/dcmrt/libsrc/drtcs.cc index b7c60205..6ed20cd9 100644 --- a/dcmrt/libsrc/drtcs.cc +++ b/dcmrt/libsrc/drtcs.cc @@ -1,14 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2021, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTContourSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * Last modified on 2021-02-01 by Riesmeier + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -22,13 +21,10 @@ DRTContourSequence::Item::Item(const OFBool emptyDefaultItem) : EmptyDefaultItem(emptyDefaultItem), - AttachedContours(DCM_RETIRED_AttachedContours), ContourData(DCM_ContourData), ContourGeometricType(DCM_ContourGeometricType), ContourImageSequence(emptyDefaultItem /*emptyDefaultSequence*/), ContourNumber(DCM_ContourNumber), - ContourOffsetVector(DCM_RETIRED_ContourOffsetVector), - ContourSlabThickness(DCM_RETIRED_ContourSlabThickness), NumberOfContourPoints(DCM_NumberOfContourPoints) { } @@ -36,13 +32,10 @@ DRTContourSequence::Item::Item(const OFBool emptyDefaultItem) DRTContourSequence::Item::Item(const Item ©) : EmptyDefaultItem(copy.EmptyDefaultItem), - AttachedContours(copy.AttachedContours), ContourData(copy.ContourData), ContourGeometricType(copy.ContourGeometricType), ContourImageSequence(copy.ContourImageSequence), ContourNumber(copy.ContourNumber), - ContourOffsetVector(copy.ContourOffsetVector), - ContourSlabThickness(copy.ContourSlabThickness), NumberOfContourPoints(copy.NumberOfContourPoints) { } @@ -58,13 +51,10 @@ DRTContourSequence::Item &DRTContourSequence::Item::operator=(const Item ©) if (this != ©) { EmptyDefaultItem = copy.EmptyDefaultItem; - AttachedContours = copy.AttachedContours; ContourData = copy.ContourData; ContourGeometricType = copy.ContourGeometricType; ContourImageSequence = copy.ContourImageSequence; ContourNumber = copy.ContourNumber; - ContourOffsetVector = copy.ContourOffsetVector; - ContourSlabThickness = copy.ContourSlabThickness; NumberOfContourPoints = copy.NumberOfContourPoints; } return *this; @@ -77,11 +67,8 @@ void DRTContourSequence::Item::clear() { /* clear all DICOM attributes */ ContourNumber.clear(); - AttachedContours.clear(); ContourImageSequence.clear(); ContourGeometricType.clear(); - ContourSlabThickness.clear(); - ContourOffsetVector.clear(); NumberOfContourPoints.clear(); ContourData.clear(); } @@ -91,11 +78,8 @@ void DRTContourSequence::Item::clear() OFBool DRTContourSequence::Item::isEmpty() { return ContourNumber.isEmpty() && - AttachedContours.isEmpty() && ContourImageSequence.isEmpty() && ContourGeometricType.isEmpty() && - ContourSlabThickness.isEmpty() && - ContourOffsetVector.isEmpty() && NumberOfContourPoints.isEmpty() && ContourData.isEmpty(); } @@ -115,11 +99,8 @@ OFCondition DRTContourSequence::Item::read(DcmItem &item) /* re-initialize object */ clear(); getAndCheckElementFromDataset(item, ContourNumber, "1", "3", "ContourSequence"); - getAndCheckElementFromDataset(item, AttachedContours, "1-n", "3", "ContourSequence"); ContourImageSequence.read(item, "1-n", "3", "ContourSequence"); getAndCheckElementFromDataset(item, ContourGeometricType, "1", "1", "ContourSequence"); - getAndCheckElementFromDataset(item, ContourSlabThickness, "1", "3", "ContourSequence"); - getAndCheckElementFromDataset(item, ContourOffsetVector, "3", "3", "ContourSequence"); getAndCheckElementFromDataset(item, NumberOfContourPoints, "1", "1", "ContourSequence"); getAndCheckElementFromDataset(item, ContourData, "3-3n", "1", "ContourSequence"); result = EC_Normal; @@ -135,11 +116,8 @@ OFCondition DRTContourSequence::Item::write(DcmItem &item) { result = EC_Normal; addElementToDataset(result, item, new DcmIntegerString(ContourNumber), "1", "3", "ContourSequence"); - addElementToDataset(result, item, new DcmIntegerString(AttachedContours), "1-n", "3", "ContourSequence"); if (result.good()) result = ContourImageSequence.write(item, "1-n", "3", "ContourSequence"); addElementToDataset(result, item, new DcmCodeString(ContourGeometricType), "1", "1", "ContourSequence"); - addElementToDataset(result, item, new DcmDecimalString(ContourSlabThickness), "1", "3", "ContourSequence"); - addElementToDataset(result, item, new DcmDecimalString(ContourOffsetVector), "3", "3", "ContourSequence"); addElementToDataset(result, item, new DcmIntegerString(NumberOfContourPoints), "1", "1", "ContourSequence"); addElementToDataset(result, item, new DcmDecimalString(ContourData), "3-3n", "1", "ContourSequence"); } @@ -147,24 +125,6 @@ OFCondition DRTContourSequence::Item::write(DcmItem &item) } -OFCondition DRTContourSequence::Item::getAttachedContours(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(AttachedContours, value, pos); -} - - -OFCondition DRTContourSequence::Item::getAttachedContours(Sint32 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmIntegerString &, AttachedContours).getSint32(value, pos); -} - - OFCondition DRTContourSequence::Item::getContourData(OFString &value, const signed long pos) const { if (EmptyDefaultItem) @@ -219,51 +179,6 @@ OFCondition DRTContourSequence::Item::getContourNumber(Sint32 &value, const unsi } -OFCondition DRTContourSequence::Item::getContourOffsetVector(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ContourOffsetVector, value, pos); -} - - -OFCondition DRTContourSequence::Item::getContourOffsetVector(Float64 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, ContourOffsetVector).getFloat64(value, pos); -} - - -OFCondition DRTContourSequence::Item::getContourOffsetVector(OFVector &value) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, ContourOffsetVector).getFloat64Vector(value); -} - - -OFCondition DRTContourSequence::Item::getContourSlabThickness(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ContourSlabThickness, value, pos); -} - - -OFCondition DRTContourSequence::Item::getContourSlabThickness(Float64 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, ContourSlabThickness).getFloat64(value, pos); -} - - OFCondition DRTContourSequence::Item::getNumberOfContourPoints(OFString &value, const signed long pos) const { if (EmptyDefaultItem) @@ -282,19 +197,6 @@ OFCondition DRTContourSequence::Item::getNumberOfContourPoints(Sint32 &value, co } -OFCondition DRTContourSequence::Item::setAttachedContours(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmIntegerString::checkStringValue(value, "1-n") : EC_Normal; - if (result.good()) - result = AttachedContours.putOFStringArray(value); - } - return result; -} - - OFCondition DRTContourSequence::Item::setContourData(const OFString &value, const OFBool check) { OFCondition result = EC_IllegalCall; @@ -334,32 +236,6 @@ OFCondition DRTContourSequence::Item::setContourNumber(const OFString &value, co } -OFCondition DRTContourSequence::Item::setContourOffsetVector(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmDecimalString::checkStringValue(value, "3") : EC_Normal; - if (result.good()) - result = ContourOffsetVector.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTContourSequence::Item::setContourSlabThickness(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ContourSlabThickness.putOFStringArray(value); - } - return result; -} - - OFCondition DRTContourSequence::Item::setNumberOfContourPoints(const OFString &value, const OFBool check) { OFCondition result = EC_IllegalCall; @@ -497,10 +373,12 @@ OFCondition DRTContourSequence::gotoFirstItem() OFCondition DRTContourSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtcsas.cc b/dcmrt/libsrc/drtcsas.cc index ce678449..0243647d 100644 --- a/dcmrt/libsrc/drtcsas.cc +++ b/dcmrt/libsrc/drtcsas.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTConversionSourceAttributesSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -335,10 +335,12 @@ OFCondition DRTConversionSourceAttributesSequence::gotoFirstItem() OFCondition DRTConversionSourceAttributesSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtcshs.cc b/dcmrt/libsrc/drtcshs.cc index 5807e96d..48396197 100644 --- a/dcmrt/libsrc/drtcshs.cc +++ b/dcmrt/libsrc/drtcshs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTChannelShieldSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -453,10 +453,12 @@ OFCondition DRTChannelShieldSequence::gotoFirstItem() OFCondition DRTChannelShieldSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtcsis.cc b/dcmrt/libsrc/drtcsis.cc index 1ec9f224..ad8506a9 100644 --- a/dcmrt/libsrc/drtcsis.cc +++ b/dcmrt/libsrc/drtcsis.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTCodingSchemeIdentificationSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -424,10 +424,12 @@ OFCondition DRTCodingSchemeIdentificationSequence::gotoFirstItem() OFCondition DRTCodingSchemeIdentificationSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtcsrs.cc b/dcmrt/libsrc/drtcsrs.cc index 2782c876..75635446 100644 --- a/dcmrt/libsrc/drtcsrs.cc +++ b/dcmrt/libsrc/drtcsrs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTCodingSchemeResourcesSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -272,10 +272,12 @@ OFCondition DRTCodingSchemeResourcesSequence::gotoFirstItem() OFCondition DRTCodingSchemeResourcesSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtcss.cc b/dcmrt/libsrc/drtcss.cc index 229c0620..0dde98f1 100644 --- a/dcmrt/libsrc/drtcss.cc +++ b/dcmrt/libsrc/drtcss.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTChannelSourceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -656,10 +656,12 @@ OFCondition DRTChannelSourceSequence::gotoFirstItem() OFCondition DRTChannelSourceSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtcttcs.cc b/dcmrt/libsrc/drtcttcs.cc new file mode 100644 index 00000000..27256c35 --- /dev/null +++ b/dcmrt/libsrc/drtcttcs.cc @@ -0,0 +1,959 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTClinicalTrialTimePointTypeCodeSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtcttcs.h" + + +// --- item class --- + +DRTClinicalTrialTimePointTypeCodeSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + CodeMeaning(DCM_CodeMeaning), + CodeValue(DCM_CodeValue), + CodingSchemeDesignator(DCM_CodingSchemeDesignator), + CodingSchemeVersion(DCM_CodingSchemeVersion), + ContextGroupExtensionCreatorUID(DCM_ContextGroupExtensionCreatorUID), + ContextGroupExtensionFlag(DCM_ContextGroupExtensionFlag), + ContextGroupLocalVersion(DCM_ContextGroupLocalVersion), + ContextGroupVersion(DCM_ContextGroupVersion), + ContextIdentifier(DCM_ContextIdentifier), + ContextUID(DCM_ContextUID), + EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), + LongCodeValue(DCM_LongCodeValue), + MappingResource(DCM_MappingResource), + MappingResourceName(DCM_MappingResourceName), + MappingResourceUID(DCM_MappingResourceUID), + URNCodeValue(DCM_URNCodeValue) +{ +} + + +DRTClinicalTrialTimePointTypeCodeSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + CodeMeaning(copy.CodeMeaning), + CodeValue(copy.CodeValue), + CodingSchemeDesignator(copy.CodingSchemeDesignator), + CodingSchemeVersion(copy.CodingSchemeVersion), + ContextGroupExtensionCreatorUID(copy.ContextGroupExtensionCreatorUID), + ContextGroupExtensionFlag(copy.ContextGroupExtensionFlag), + ContextGroupLocalVersion(copy.ContextGroupLocalVersion), + ContextGroupVersion(copy.ContextGroupVersion), + ContextIdentifier(copy.ContextIdentifier), + ContextUID(copy.ContextUID), + EquivalentCodeSequence(copy.EquivalentCodeSequence), + LongCodeValue(copy.LongCodeValue), + MappingResource(copy.MappingResource), + MappingResourceName(copy.MappingResourceName), + MappingResourceUID(copy.MappingResourceUID), + URNCodeValue(copy.URNCodeValue) +{ +} + + +DRTClinicalTrialTimePointTypeCodeSequence::Item::~Item() +{ +} + + +DRTClinicalTrialTimePointTypeCodeSequence::Item &DRTClinicalTrialTimePointTypeCodeSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + CodeMeaning = copy.CodeMeaning; + CodeValue = copy.CodeValue; + CodingSchemeDesignator = copy.CodingSchemeDesignator; + CodingSchemeVersion = copy.CodingSchemeVersion; + ContextGroupExtensionCreatorUID = copy.ContextGroupExtensionCreatorUID; + ContextGroupExtensionFlag = copy.ContextGroupExtensionFlag; + ContextGroupLocalVersion = copy.ContextGroupLocalVersion; + ContextGroupVersion = copy.ContextGroupVersion; + ContextIdentifier = copy.ContextIdentifier; + ContextUID = copy.ContextUID; + EquivalentCodeSequence = copy.EquivalentCodeSequence; + LongCodeValue = copy.LongCodeValue; + MappingResource = copy.MappingResource; + MappingResourceName = copy.MappingResourceName; + MappingResourceUID = copy.MappingResourceUID; + URNCodeValue = copy.URNCodeValue; + } + return *this; +} + + +void DRTClinicalTrialTimePointTypeCodeSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + CodeValue.clear(); + CodingSchemeDesignator.clear(); + CodingSchemeVersion.clear(); + CodeMeaning.clear(); + LongCodeValue.clear(); + URNCodeValue.clear(); + EquivalentCodeSequence.clear(); + ContextIdentifier.clear(); + ContextUID.clear(); + MappingResource.clear(); + MappingResourceUID.clear(); + MappingResourceName.clear(); + ContextGroupVersion.clear(); + ContextGroupExtensionFlag.clear(); + ContextGroupLocalVersion.clear(); + ContextGroupExtensionCreatorUID.clear(); + } +} + + +OFBool DRTClinicalTrialTimePointTypeCodeSequence::Item::isEmpty() +{ + return CodeValue.isEmpty() && + CodingSchemeDesignator.isEmpty() && + CodingSchemeVersion.isEmpty() && + CodeMeaning.isEmpty() && + LongCodeValue.isEmpty() && + URNCodeValue.isEmpty() && + EquivalentCodeSequence.isEmpty() && + ContextIdentifier.isEmpty() && + ContextUID.isEmpty() && + MappingResource.isEmpty() && + MappingResourceUID.isEmpty() && + MappingResourceName.isEmpty() && + ContextGroupVersion.isEmpty() && + ContextGroupExtensionFlag.isEmpty() && + ContextGroupLocalVersion.isEmpty() && + ContextGroupExtensionCreatorUID.isEmpty(); +} + + +OFBool DRTClinicalTrialTimePointTypeCodeSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "ClinicalTrialTimePointTypeCodeSequence"); + getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "ClinicalTrialTimePointTypeCodeSequence"); + getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "ClinicalTrialTimePointTypeCodeSequence"); + getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "ClinicalTrialTimePointTypeCodeSequence"); + getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "ClinicalTrialTimePointTypeCodeSequence"); + getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "ClinicalTrialTimePointTypeCodeSequence"); + EquivalentCodeSequence.read(item, "1-n", "3", "ClinicalTrialTimePointTypeCodeSequence"); + getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "ClinicalTrialTimePointTypeCodeSequence"); + getAndCheckElementFromDataset(item, ContextUID, "1", "3", "ClinicalTrialTimePointTypeCodeSequence"); + getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "ClinicalTrialTimePointTypeCodeSequence"); + getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "ClinicalTrialTimePointTypeCodeSequence"); + getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "ClinicalTrialTimePointTypeCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "ClinicalTrialTimePointTypeCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "ClinicalTrialTimePointTypeCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "ClinicalTrialTimePointTypeCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "ClinicalTrialTimePointTypeCodeSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "ClinicalTrialTimePointTypeCodeSequence"); + addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "ClinicalTrialTimePointTypeCodeSequence"); + addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "ClinicalTrialTimePointTypeCodeSequence"); + addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "ClinicalTrialTimePointTypeCodeSequence"); + addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "ClinicalTrialTimePointTypeCodeSequence"); + addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "ClinicalTrialTimePointTypeCodeSequence"); + if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "ClinicalTrialTimePointTypeCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "ClinicalTrialTimePointTypeCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "ClinicalTrialTimePointTypeCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "ClinicalTrialTimePointTypeCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "ClinicalTrialTimePointTypeCodeSequence"); + addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "ClinicalTrialTimePointTypeCodeSequence"); + addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "ClinicalTrialTimePointTypeCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "ClinicalTrialTimePointTypeCodeSequence"); + addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "ClinicalTrialTimePointTypeCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "ClinicalTrialTimePointTypeCodeSequence"); + } + return result; +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodeMeaning, value, pos); +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::getCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodeValue, value, pos); +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodingSchemeDesignator, value, pos); +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodingSchemeVersion, value, pos); +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupExtensionCreatorUID, value, pos); +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupExtensionFlag, value, pos); +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupLocalVersion, value, pos); +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupVersion, value, pos); +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextIdentifier, value, pos); +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::getContextUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextUID, value, pos); +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(LongCodeValue, value, pos); +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResource, value, pos); +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResourceName, value, pos); +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResourceUID, value, pos); +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(URNCodeValue, value, pos); +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodeMeaning.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::setCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodeValue.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodingSchemeDesignator.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodingSchemeVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupExtensionCreatorUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupExtensionFlag.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupLocalVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::setContextIdentifier(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextIdentifier.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::setContextUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = LongCodeValue.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResource.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResourceName.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResourceUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal; + if (result.good()) + result = URNCodeValue.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTClinicalTrialTimePointTypeCodeSequence::DRTClinicalTrialTimePointTypeCodeSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTClinicalTrialTimePointTypeCodeSequence::DRTClinicalTrialTimePointTypeCodeSequence(const DRTClinicalTrialTimePointTypeCodeSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTClinicalTrialTimePointTypeCodeSequence &DRTClinicalTrialTimePointTypeCodeSequence::operator=(const DRTClinicalTrialTimePointTypeCodeSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTClinicalTrialTimePointTypeCodeSequence::~DRTClinicalTrialTimePointTypeCodeSequence() +{ + clear(); +} + + +void DRTClinicalTrialTimePointTypeCodeSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTClinicalTrialTimePointTypeCodeSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTClinicalTrialTimePointTypeCodeSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTClinicalTrialTimePointTypeCodeSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTClinicalTrialTimePointTypeCodeSequence::Item &DRTClinicalTrialTimePointTypeCodeSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTClinicalTrialTimePointTypeCodeSequence::Item &DRTClinicalTrialTimePointTypeCodeSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTClinicalTrialTimePointTypeCodeSequence::Item &DRTClinicalTrialTimePointTypeCodeSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTClinicalTrialTimePointTypeCodeSequence::Item &DRTClinicalTrialTimePointTypeCodeSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTClinicalTrialTimePointTypeCodeSequence::Item &DRTClinicalTrialTimePointTypeCodeSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTClinicalTrialTimePointTypeCodeSequence::Item &DRTClinicalTrialTimePointTypeCodeSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_ClinicalTrialTimePointTypeCodeSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_ClinicalTrialTimePointTypeCodeSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTClinicalTrialTimePointTypeCodeSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ClinicalTrialTimePointTypeCodeSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtcvcss.cc b/dcmrt/libsrc/drtcvcss.cc new file mode 100644 index 00000000..9349eb77 --- /dev/null +++ b/dcmrt/libsrc/drtcvcss.cc @@ -0,0 +1,549 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTConceptualVolumeConstituentSegmentationReferenceSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtcvcss.h" + + +// --- item class --- + +DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + ReferencedDirectSegmentInstanceSequence(emptyDefaultItem /*emptyDefaultSequence*/), + ReferencedSegmentReferenceIndex(DCM_ReferencedSegmentReferenceIndex) +{ +} + + +DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + ReferencedDirectSegmentInstanceSequence(copy.ReferencedDirectSegmentInstanceSequence), + ReferencedSegmentReferenceIndex(copy.ReferencedSegmentReferenceIndex) +{ +} + + +DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item::~Item() +{ +} + + +DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item &DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + ReferencedDirectSegmentInstanceSequence = copy.ReferencedDirectSegmentInstanceSequence; + ReferencedSegmentReferenceIndex = copy.ReferencedSegmentReferenceIndex; + } + return *this; +} + + +void DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + ReferencedDirectSegmentInstanceSequence.clear(); + ReferencedSegmentReferenceIndex.clear(); + } +} + + +OFBool DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item::isEmpty() +{ + return ReferencedDirectSegmentInstanceSequence.isEmpty() && + ReferencedSegmentReferenceIndex.isEmpty(); +} + + +OFBool DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + ReferencedDirectSegmentInstanceSequence.read(item, "1-n", "1", "ConceptualVolumeConstituentSegmentationReferenceSequence"); + getAndCheckElementFromDataset(item, ReferencedSegmentReferenceIndex, "1", "1", "ConceptualVolumeConstituentSegmentationReferenceSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + if (result.good()) result = ReferencedDirectSegmentInstanceSequence.write(item, "1-n", "1", "ConceptualVolumeConstituentSegmentationReferenceSequence"); + addElementToDataset(result, item, new DcmUnsignedShort(ReferencedSegmentReferenceIndex), "1", "1", "ConceptualVolumeConstituentSegmentationReferenceSequence"); + } + return result; +} + + +OFCondition DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item::getReferencedSegmentReferenceIndex(Uint16 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmUnsignedShort &, ReferencedSegmentReferenceIndex).getUint16(value, pos); +} + + +OFCondition DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item::setReferencedSegmentReferenceIndex(const Uint16 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return ReferencedSegmentReferenceIndex.putUint16(value, pos); +} + + +// --- sequence class --- + +DRTConceptualVolumeConstituentSegmentationReferenceSequence::DRTConceptualVolumeConstituentSegmentationReferenceSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTConceptualVolumeConstituentSegmentationReferenceSequence::DRTConceptualVolumeConstituentSegmentationReferenceSequence(const DRTConceptualVolumeConstituentSegmentationReferenceSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTConceptualVolumeConstituentSegmentationReferenceSequence &DRTConceptualVolumeConstituentSegmentationReferenceSequence::operator=(const DRTConceptualVolumeConstituentSegmentationReferenceSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTConceptualVolumeConstituentSegmentationReferenceSequence::~DRTConceptualVolumeConstituentSegmentationReferenceSequence() +{ + clear(); +} + + +void DRTConceptualVolumeConstituentSegmentationReferenceSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTConceptualVolumeConstituentSegmentationReferenceSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTConceptualVolumeConstituentSegmentationReferenceSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTConceptualVolumeConstituentSegmentationReferenceSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTConceptualVolumeConstituentSegmentationReferenceSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTConceptualVolumeConstituentSegmentationReferenceSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTConceptualVolumeConstituentSegmentationReferenceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTConceptualVolumeConstituentSegmentationReferenceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTConceptualVolumeConstituentSegmentationReferenceSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTConceptualVolumeConstituentSegmentationReferenceSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item &DRTConceptualVolumeConstituentSegmentationReferenceSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item &DRTConceptualVolumeConstituentSegmentationReferenceSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTConceptualVolumeConstituentSegmentationReferenceSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item &DRTConceptualVolumeConstituentSegmentationReferenceSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item &DRTConceptualVolumeConstituentSegmentationReferenceSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item &DRTConceptualVolumeConstituentSegmentationReferenceSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item &DRTConceptualVolumeConstituentSegmentationReferenceSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTConceptualVolumeConstituentSegmentationReferenceSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTConceptualVolumeConstituentSegmentationReferenceSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTConceptualVolumeConstituentSegmentationReferenceSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTConceptualVolumeConstituentSegmentationReferenceSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_ConceptualVolumeConstituentSegmentationReferenceSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_ConceptualVolumeConstituentSegmentationReferenceSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTConceptualVolumeConstituentSegmentationReferenceSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ConceptualVolumeConstituentSegmentationReferenceSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtcvdas.cc b/dcmrt/libsrc/drtcvdas.cc new file mode 100644 index 00000000..d97ac4d5 --- /dev/null +++ b/dcmrt/libsrc/drtcvdas.cc @@ -0,0 +1,647 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTConceptualVolumeDerivationAlgorithmSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtcvdas.h" + + +// --- item class --- + +DRTConceptualVolumeDerivationAlgorithmSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + AlgorithmFamilyCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), + AlgorithmName(DCM_AlgorithmName), + AlgorithmNameCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), + AlgorithmParameters(DCM_AlgorithmParameters), + AlgorithmSource(DCM_AlgorithmSource), + AlgorithmVersion(DCM_AlgorithmVersion) +{ +} + + +DRTConceptualVolumeDerivationAlgorithmSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + AlgorithmFamilyCodeSequence(copy.AlgorithmFamilyCodeSequence), + AlgorithmName(copy.AlgorithmName), + AlgorithmNameCodeSequence(copy.AlgorithmNameCodeSequence), + AlgorithmParameters(copy.AlgorithmParameters), + AlgorithmSource(copy.AlgorithmSource), + AlgorithmVersion(copy.AlgorithmVersion) +{ +} + + +DRTConceptualVolumeDerivationAlgorithmSequence::Item::~Item() +{ +} + + +DRTConceptualVolumeDerivationAlgorithmSequence::Item &DRTConceptualVolumeDerivationAlgorithmSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + AlgorithmFamilyCodeSequence = copy.AlgorithmFamilyCodeSequence; + AlgorithmName = copy.AlgorithmName; + AlgorithmNameCodeSequence = copy.AlgorithmNameCodeSequence; + AlgorithmParameters = copy.AlgorithmParameters; + AlgorithmSource = copy.AlgorithmSource; + AlgorithmVersion = copy.AlgorithmVersion; + } + return *this; +} + + +void DRTConceptualVolumeDerivationAlgorithmSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + AlgorithmFamilyCodeSequence.clear(); + AlgorithmNameCodeSequence.clear(); + AlgorithmName.clear(); + AlgorithmVersion.clear(); + AlgorithmParameters.clear(); + AlgorithmSource.clear(); + } +} + + +OFBool DRTConceptualVolumeDerivationAlgorithmSequence::Item::isEmpty() +{ + return AlgorithmFamilyCodeSequence.isEmpty() && + AlgorithmNameCodeSequence.isEmpty() && + AlgorithmName.isEmpty() && + AlgorithmVersion.isEmpty() && + AlgorithmParameters.isEmpty() && + AlgorithmSource.isEmpty(); +} + + +OFBool DRTConceptualVolumeDerivationAlgorithmSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + AlgorithmFamilyCodeSequence.read(item, "1-n", "1", "ConceptualVolumeDerivationAlgorithmSequence"); + AlgorithmNameCodeSequence.read(item, "1-n", "3", "ConceptualVolumeDerivationAlgorithmSequence"); + getAndCheckElementFromDataset(item, AlgorithmName, "1", "1", "ConceptualVolumeDerivationAlgorithmSequence"); + getAndCheckElementFromDataset(item, AlgorithmVersion, "1", "1", "ConceptualVolumeDerivationAlgorithmSequence"); + getAndCheckElementFromDataset(item, AlgorithmParameters, "1", "3", "ConceptualVolumeDerivationAlgorithmSequence"); + getAndCheckElementFromDataset(item, AlgorithmSource, "1", "3", "ConceptualVolumeDerivationAlgorithmSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + if (result.good()) result = AlgorithmFamilyCodeSequence.write(item, "1-n", "1", "ConceptualVolumeDerivationAlgorithmSequence"); + if (result.good()) result = AlgorithmNameCodeSequence.write(item, "1-n", "3", "ConceptualVolumeDerivationAlgorithmSequence"); + addElementToDataset(result, item, new DcmLongString(AlgorithmName), "1", "1", "ConceptualVolumeDerivationAlgorithmSequence"); + addElementToDataset(result, item, new DcmLongString(AlgorithmVersion), "1", "1", "ConceptualVolumeDerivationAlgorithmSequence"); + addElementToDataset(result, item, new DcmLongText(AlgorithmParameters), "1", "3", "ConceptualVolumeDerivationAlgorithmSequence"); + addElementToDataset(result, item, new DcmLongString(AlgorithmSource), "1", "3", "ConceptualVolumeDerivationAlgorithmSequence"); + } + return result; +} + + +OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::Item::getAlgorithmName(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(AlgorithmName, value, pos); +} + + +OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::Item::getAlgorithmParameters(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(AlgorithmParameters, value, pos); +} + + +OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::Item::getAlgorithmSource(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(AlgorithmSource, value, pos); +} + + +OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::Item::getAlgorithmVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(AlgorithmVersion, value, pos); +} + + +OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::Item::setAlgorithmName(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = AlgorithmName.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::Item::setAlgorithmParameters(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongText::checkStringValue(value) : EC_Normal; + if (result.good()) + result = AlgorithmParameters.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::Item::setAlgorithmSource(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = AlgorithmSource.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::Item::setAlgorithmVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = AlgorithmVersion.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTConceptualVolumeDerivationAlgorithmSequence::DRTConceptualVolumeDerivationAlgorithmSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTConceptualVolumeDerivationAlgorithmSequence::DRTConceptualVolumeDerivationAlgorithmSequence(const DRTConceptualVolumeDerivationAlgorithmSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTConceptualVolumeDerivationAlgorithmSequence &DRTConceptualVolumeDerivationAlgorithmSequence::operator=(const DRTConceptualVolumeDerivationAlgorithmSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTConceptualVolumeDerivationAlgorithmSequence::~DRTConceptualVolumeDerivationAlgorithmSequence() +{ + clear(); +} + + +void DRTConceptualVolumeDerivationAlgorithmSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTConceptualVolumeDerivationAlgorithmSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTConceptualVolumeDerivationAlgorithmSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTConceptualVolumeDerivationAlgorithmSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTConceptualVolumeDerivationAlgorithmSequence::Item &DRTConceptualVolumeDerivationAlgorithmSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTConceptualVolumeDerivationAlgorithmSequence::Item &DRTConceptualVolumeDerivationAlgorithmSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTConceptualVolumeDerivationAlgorithmSequence::Item &DRTConceptualVolumeDerivationAlgorithmSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTConceptualVolumeDerivationAlgorithmSequence::Item &DRTConceptualVolumeDerivationAlgorithmSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTConceptualVolumeDerivationAlgorithmSequence::Item &DRTConceptualVolumeDerivationAlgorithmSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTConceptualVolumeDerivationAlgorithmSequence::Item &DRTConceptualVolumeDerivationAlgorithmSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_ConceptualVolumeDerivationAlgorithmSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_ConceptualVolumeDerivationAlgorithmSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ConceptualVolumeDerivationAlgorithmSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtcvis.cc b/dcmrt/libsrc/drtcvis.cc new file mode 100644 index 00000000..25b06fe4 --- /dev/null +++ b/dcmrt/libsrc/drtcvis.cc @@ -0,0 +1,567 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTConceptualVolumeIdentificationSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtcvis.h" + + +// --- item class --- + +DRTConceptualVolumeIdentificationSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + ConceptualVolumeUID(DCM_ConceptualVolumeUID), + DerivationConceptualVolumeSequence(emptyDefaultItem /*emptyDefaultSequence*/), + EquivalentConceptualVolumesSequence(emptyDefaultItem /*emptyDefaultSequence*/), + OriginatingSOPInstanceReferenceSequence(emptyDefaultItem /*emptyDefaultSequence*/) +{ +} + + +DRTConceptualVolumeIdentificationSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + ConceptualVolumeUID(copy.ConceptualVolumeUID), + DerivationConceptualVolumeSequence(copy.DerivationConceptualVolumeSequence), + EquivalentConceptualVolumesSequence(copy.EquivalentConceptualVolumesSequence), + OriginatingSOPInstanceReferenceSequence(copy.OriginatingSOPInstanceReferenceSequence) +{ +} + + +DRTConceptualVolumeIdentificationSequence::Item::~Item() +{ +} + + +DRTConceptualVolumeIdentificationSequence::Item &DRTConceptualVolumeIdentificationSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + ConceptualVolumeUID = copy.ConceptualVolumeUID; + DerivationConceptualVolumeSequence = copy.DerivationConceptualVolumeSequence; + EquivalentConceptualVolumesSequence = copy.EquivalentConceptualVolumesSequence; + OriginatingSOPInstanceReferenceSequence = copy.OriginatingSOPInstanceReferenceSequence; + } + return *this; +} + + +void DRTConceptualVolumeIdentificationSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + ConceptualVolumeUID.clear(); + OriginatingSOPInstanceReferenceSequence.clear(); + EquivalentConceptualVolumesSequence.clear(); + DerivationConceptualVolumeSequence.clear(); + } +} + + +OFBool DRTConceptualVolumeIdentificationSequence::Item::isEmpty() +{ + return ConceptualVolumeUID.isEmpty() && + OriginatingSOPInstanceReferenceSequence.isEmpty() && + EquivalentConceptualVolumesSequence.isEmpty() && + DerivationConceptualVolumeSequence.isEmpty(); +} + + +OFBool DRTConceptualVolumeIdentificationSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTConceptualVolumeIdentificationSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, ConceptualVolumeUID, "1", "1", "ConceptualVolumeIdentificationSequence"); + OriginatingSOPInstanceReferenceSequence.read(item, "1-n", "1C", "ConceptualVolumeIdentificationSequence"); + EquivalentConceptualVolumesSequence.read(item, "1-n", "3", "ConceptualVolumeIdentificationSequence"); + DerivationConceptualVolumeSequence.read(item, "1-n", "3", "ConceptualVolumeIdentificationSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTConceptualVolumeIdentificationSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmUniqueIdentifier(ConceptualVolumeUID), "1", "1", "ConceptualVolumeIdentificationSequence"); + if (result.good()) result = OriginatingSOPInstanceReferenceSequence.write(item, "1-n", "1C", "ConceptualVolumeIdentificationSequence"); + if (result.good()) result = EquivalentConceptualVolumesSequence.write(item, "1-n", "3", "ConceptualVolumeIdentificationSequence"); + if (result.good()) result = DerivationConceptualVolumeSequence.write(item, "1-n", "3", "ConceptualVolumeIdentificationSequence"); + } + return result; +} + + +OFCondition DRTConceptualVolumeIdentificationSequence::Item::getConceptualVolumeUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ConceptualVolumeUID, value, pos); +} + + +OFCondition DRTConceptualVolumeIdentificationSequence::Item::setConceptualVolumeUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ConceptualVolumeUID.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTConceptualVolumeIdentificationSequence::DRTConceptualVolumeIdentificationSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTConceptualVolumeIdentificationSequence::DRTConceptualVolumeIdentificationSequence(const DRTConceptualVolumeIdentificationSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTConceptualVolumeIdentificationSequence &DRTConceptualVolumeIdentificationSequence::operator=(const DRTConceptualVolumeIdentificationSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTConceptualVolumeIdentificationSequence::~DRTConceptualVolumeIdentificationSequence() +{ + clear(); +} + + +void DRTConceptualVolumeIdentificationSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTConceptualVolumeIdentificationSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTConceptualVolumeIdentificationSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTConceptualVolumeIdentificationSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTConceptualVolumeIdentificationSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTConceptualVolumeIdentificationSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTConceptualVolumeIdentificationSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTConceptualVolumeIdentificationSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTConceptualVolumeIdentificationSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTConceptualVolumeIdentificationSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTConceptualVolumeIdentificationSequence::Item &DRTConceptualVolumeIdentificationSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTConceptualVolumeIdentificationSequence::Item &DRTConceptualVolumeIdentificationSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTConceptualVolumeIdentificationSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTConceptualVolumeIdentificationSequence::Item &DRTConceptualVolumeIdentificationSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTConceptualVolumeIdentificationSequence::Item &DRTConceptualVolumeIdentificationSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTConceptualVolumeIdentificationSequence::Item &DRTConceptualVolumeIdentificationSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTConceptualVolumeIdentificationSequence::Item &DRTConceptualVolumeIdentificationSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTConceptualVolumeIdentificationSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTConceptualVolumeIdentificationSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTConceptualVolumeIdentificationSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTConceptualVolumeIdentificationSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_ConceptualVolumeIdentificationSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_ConceptualVolumeIdentificationSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTConceptualVolumeIdentificationSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ConceptualVolumeIdentificationSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtdccs.cc b/dcmrt/libsrc/drtdccs.cc new file mode 100644 index 00000000..f1266cdb --- /dev/null +++ b/dcmrt/libsrc/drtdccs.cc @@ -0,0 +1,659 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTDoseCalibrationConditionsSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtdccs.h" + + +// --- item class --- + +DRTDoseCalibrationConditionsSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + AbsorbedDoseToMetersetRatio(DCM_AbsorbedDoseToMetersetRatio), + CalibrationDateTime(DCM_CalibrationDateTime), + CalibrationReferencePointDepth(DCM_CalibrationReferencePointDepth), + DelineatedRadiationFieldSize(DCM_DelineatedRadiationFieldSize), + SourceToSurfaceDistance(DCM_SourceToSurfaceDistance) +{ +} + + +DRTDoseCalibrationConditionsSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + AbsorbedDoseToMetersetRatio(copy.AbsorbedDoseToMetersetRatio), + CalibrationDateTime(copy.CalibrationDateTime), + CalibrationReferencePointDepth(copy.CalibrationReferencePointDepth), + DelineatedRadiationFieldSize(copy.DelineatedRadiationFieldSize), + SourceToSurfaceDistance(copy.SourceToSurfaceDistance) +{ +} + + +DRTDoseCalibrationConditionsSequence::Item::~Item() +{ +} + + +DRTDoseCalibrationConditionsSequence::Item &DRTDoseCalibrationConditionsSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + AbsorbedDoseToMetersetRatio = copy.AbsorbedDoseToMetersetRatio; + CalibrationDateTime = copy.CalibrationDateTime; + CalibrationReferencePointDepth = copy.CalibrationReferencePointDepth; + DelineatedRadiationFieldSize = copy.DelineatedRadiationFieldSize; + SourceToSurfaceDistance = copy.SourceToSurfaceDistance; + } + return *this; +} + + +void DRTDoseCalibrationConditionsSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + AbsorbedDoseToMetersetRatio.clear(); + DelineatedRadiationFieldSize.clear(); + CalibrationReferencePointDepth.clear(); + SourceToSurfaceDistance.clear(); + CalibrationDateTime.clear(); + } +} + + +OFBool DRTDoseCalibrationConditionsSequence::Item::isEmpty() +{ + return AbsorbedDoseToMetersetRatio.isEmpty() && + DelineatedRadiationFieldSize.isEmpty() && + CalibrationReferencePointDepth.isEmpty() && + SourceToSurfaceDistance.isEmpty() && + CalibrationDateTime.isEmpty(); +} + + +OFBool DRTDoseCalibrationConditionsSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTDoseCalibrationConditionsSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, AbsorbedDoseToMetersetRatio, "1", "1", "DoseCalibrationConditionsSequence"); + getAndCheckElementFromDataset(item, DelineatedRadiationFieldSize, "2", "1", "DoseCalibrationConditionsSequence"); + getAndCheckElementFromDataset(item, CalibrationReferencePointDepth, "1", "1", "DoseCalibrationConditionsSequence"); + getAndCheckElementFromDataset(item, SourceToSurfaceDistance, "1", "1", "DoseCalibrationConditionsSequence"); + getAndCheckElementFromDataset(item, CalibrationDateTime, "1", "2", "DoseCalibrationConditionsSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTDoseCalibrationConditionsSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmFloatingPointDouble(AbsorbedDoseToMetersetRatio), "1", "1", "DoseCalibrationConditionsSequence"); + addElementToDataset(result, item, new DcmFloatingPointDouble(DelineatedRadiationFieldSize), "2", "1", "DoseCalibrationConditionsSequence"); + addElementToDataset(result, item, new DcmFloatingPointDouble(CalibrationReferencePointDepth), "1", "1", "DoseCalibrationConditionsSequence"); + addElementToDataset(result, item, new DcmDecimalString(SourceToSurfaceDistance), "1", "1", "DoseCalibrationConditionsSequence"); + addElementToDataset(result, item, new DcmDateTime(CalibrationDateTime), "1", "2", "DoseCalibrationConditionsSequence"); + } + return result; +} + + +OFCondition DRTDoseCalibrationConditionsSequence::Item::getAbsorbedDoseToMetersetRatio(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointDouble &, AbsorbedDoseToMetersetRatio).getFloat64(value, pos); +} + + +OFCondition DRTDoseCalibrationConditionsSequence::Item::getCalibrationDateTime(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CalibrationDateTime, value, pos); +} + + +OFCondition DRTDoseCalibrationConditionsSequence::Item::getCalibrationReferencePointDepth(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointDouble &, CalibrationReferencePointDepth).getFloat64(value, pos); +} + + +OFCondition DRTDoseCalibrationConditionsSequence::Item::getDelineatedRadiationFieldSize(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointDouble &, DelineatedRadiationFieldSize).getFloat64(value, pos); +} + + +OFCondition DRTDoseCalibrationConditionsSequence::Item::getSourceToSurfaceDistance(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(SourceToSurfaceDistance, value, pos); +} + + +OFCondition DRTDoseCalibrationConditionsSequence::Item::getSourceToSurfaceDistance(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, SourceToSurfaceDistance).getFloat64(value, pos); +} + + +OFCondition DRTDoseCalibrationConditionsSequence::Item::setAbsorbedDoseToMetersetRatio(const Float64 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return AbsorbedDoseToMetersetRatio.putFloat64(value, pos); +} + + +OFCondition DRTDoseCalibrationConditionsSequence::Item::setCalibrationDateTime(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CalibrationDateTime.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTDoseCalibrationConditionsSequence::Item::setCalibrationReferencePointDepth(const Float64 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return CalibrationReferencePointDepth.putFloat64(value, pos); +} + + +OFCondition DRTDoseCalibrationConditionsSequence::Item::setDelineatedRadiationFieldSize(const Float64 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return DelineatedRadiationFieldSize.putFloat64(value, pos); +} + + +OFCondition DRTDoseCalibrationConditionsSequence::Item::setSourceToSurfaceDistance(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = SourceToSurfaceDistance.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTDoseCalibrationConditionsSequence::DRTDoseCalibrationConditionsSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTDoseCalibrationConditionsSequence::DRTDoseCalibrationConditionsSequence(const DRTDoseCalibrationConditionsSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTDoseCalibrationConditionsSequence &DRTDoseCalibrationConditionsSequence::operator=(const DRTDoseCalibrationConditionsSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTDoseCalibrationConditionsSequence::~DRTDoseCalibrationConditionsSequence() +{ + clear(); +} + + +void DRTDoseCalibrationConditionsSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTDoseCalibrationConditionsSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTDoseCalibrationConditionsSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTDoseCalibrationConditionsSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTDoseCalibrationConditionsSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTDoseCalibrationConditionsSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTDoseCalibrationConditionsSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTDoseCalibrationConditionsSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTDoseCalibrationConditionsSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTDoseCalibrationConditionsSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTDoseCalibrationConditionsSequence::Item &DRTDoseCalibrationConditionsSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTDoseCalibrationConditionsSequence::Item &DRTDoseCalibrationConditionsSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTDoseCalibrationConditionsSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTDoseCalibrationConditionsSequence::Item &DRTDoseCalibrationConditionsSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTDoseCalibrationConditionsSequence::Item &DRTDoseCalibrationConditionsSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTDoseCalibrationConditionsSequence::Item &DRTDoseCalibrationConditionsSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTDoseCalibrationConditionsSequence::Item &DRTDoseCalibrationConditionsSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTDoseCalibrationConditionsSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTDoseCalibrationConditionsSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTDoseCalibrationConditionsSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTDoseCalibrationConditionsSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_DoseCalibrationConditionsSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_DoseCalibrationConditionsSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTDoseCalibrationConditionsSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_DoseCalibrationConditionsSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtdcs.cc b/dcmrt/libsrc/drtdcs.cc index d5222b38..0167ea11 100644 --- a/dcmrt/libsrc/drtdcs.cc +++ b/dcmrt/libsrc/drtdcs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTDerivationCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -656,10 +656,12 @@ OFCondition DRTDerivationCodeSequence::gotoFirstItem() OFCondition DRTDerivationCodeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtdcvs.cc b/dcmrt/libsrc/drtdcvs.cc new file mode 100644 index 00000000..659b6b7c --- /dev/null +++ b/dcmrt/libsrc/drtdcvs.cc @@ -0,0 +1,560 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTDerivationConceptualVolumeSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtdcvs.h" + + +// --- item class --- + +DRTDerivationConceptualVolumeSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + ConceptualVolumeDerivationAlgorithmSequence(emptyDefaultItem /*emptyDefaultSequence*/), + DerivationDescription(DCM_DerivationDescription), + SourceConceptualVolumeSequence(emptyDefaultItem /*emptyDefaultSequence*/) +{ +} + + +DRTDerivationConceptualVolumeSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + ConceptualVolumeDerivationAlgorithmSequence(copy.ConceptualVolumeDerivationAlgorithmSequence), + DerivationDescription(copy.DerivationDescription), + SourceConceptualVolumeSequence(copy.SourceConceptualVolumeSequence) +{ +} + + +DRTDerivationConceptualVolumeSequence::Item::~Item() +{ +} + + +DRTDerivationConceptualVolumeSequence::Item &DRTDerivationConceptualVolumeSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + ConceptualVolumeDerivationAlgorithmSequence = copy.ConceptualVolumeDerivationAlgorithmSequence; + DerivationDescription = copy.DerivationDescription; + SourceConceptualVolumeSequence = copy.SourceConceptualVolumeSequence; + } + return *this; +} + + +void DRTDerivationConceptualVolumeSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + DerivationDescription.clear(); + SourceConceptualVolumeSequence.clear(); + ConceptualVolumeDerivationAlgorithmSequence.clear(); + } +} + + +OFBool DRTDerivationConceptualVolumeSequence::Item::isEmpty() +{ + return DerivationDescription.isEmpty() && + SourceConceptualVolumeSequence.isEmpty() && + ConceptualVolumeDerivationAlgorithmSequence.isEmpty(); +} + + +OFBool DRTDerivationConceptualVolumeSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTDerivationConceptualVolumeSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, DerivationDescription, "1", "3", "DerivationConceptualVolumeSequence"); + SourceConceptualVolumeSequence.read(item, "1-n", "1", "DerivationConceptualVolumeSequence"); + ConceptualVolumeDerivationAlgorithmSequence.read(item, "1-n", "3", "DerivationConceptualVolumeSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTDerivationConceptualVolumeSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmShortText(DerivationDescription), "1", "3", "DerivationConceptualVolumeSequence"); + if (result.good()) result = SourceConceptualVolumeSequence.write(item, "1-n", "1", "DerivationConceptualVolumeSequence"); + if (result.good()) result = ConceptualVolumeDerivationAlgorithmSequence.write(item, "1-n", "3", "DerivationConceptualVolumeSequence"); + } + return result; +} + + +OFCondition DRTDerivationConceptualVolumeSequence::Item::getDerivationDescription(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(DerivationDescription, value, pos); +} + + +OFCondition DRTDerivationConceptualVolumeSequence::Item::setDerivationDescription(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal; + if (result.good()) + result = DerivationDescription.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTDerivationConceptualVolumeSequence::DRTDerivationConceptualVolumeSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTDerivationConceptualVolumeSequence::DRTDerivationConceptualVolumeSequence(const DRTDerivationConceptualVolumeSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTDerivationConceptualVolumeSequence &DRTDerivationConceptualVolumeSequence::operator=(const DRTDerivationConceptualVolumeSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTDerivationConceptualVolumeSequence::~DRTDerivationConceptualVolumeSequence() +{ + clear(); +} + + +void DRTDerivationConceptualVolumeSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTDerivationConceptualVolumeSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTDerivationConceptualVolumeSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTDerivationConceptualVolumeSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTDerivationConceptualVolumeSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTDerivationConceptualVolumeSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTDerivationConceptualVolumeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTDerivationConceptualVolumeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTDerivationConceptualVolumeSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTDerivationConceptualVolumeSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTDerivationConceptualVolumeSequence::Item &DRTDerivationConceptualVolumeSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTDerivationConceptualVolumeSequence::Item &DRTDerivationConceptualVolumeSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTDerivationConceptualVolumeSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTDerivationConceptualVolumeSequence::Item &DRTDerivationConceptualVolumeSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTDerivationConceptualVolumeSequence::Item &DRTDerivationConceptualVolumeSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTDerivationConceptualVolumeSequence::Item &DRTDerivationConceptualVolumeSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTDerivationConceptualVolumeSequence::Item &DRTDerivationConceptualVolumeSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTDerivationConceptualVolumeSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTDerivationConceptualVolumeSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTDerivationConceptualVolumeSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTDerivationConceptualVolumeSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_DerivationConceptualVolumeSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_DerivationConceptualVolumeSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTDerivationConceptualVolumeSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_DerivationConceptualVolumeSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtdddps.cc b/dcmrt/libsrc/drtdddps.cc index 7a4f351f..5f417d02 100644 --- a/dcmrt/libsrc/drtdddps.cc +++ b/dcmrt/libsrc/drtdddps.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTDeliveredDepthDoseParametersSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -343,10 +343,12 @@ OFCondition DRTDeliveredDepthDoseParametersSequence::gotoFirstItem() OFCondition DRTDeliveredDepthDoseParametersSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtddps.cc b/dcmrt/libsrc/drtddps.cc index 4227d759..28b90b2d 100644 --- a/dcmrt/libsrc/drtddps.cc +++ b/dcmrt/libsrc/drtddps.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTDepthDoseParametersSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -343,10 +343,12 @@ OFCondition DRTDepthDoseParametersSequence::gotoFirstItem() OFCondition DRTDepthDoseParametersSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtdfss.cc b/dcmrt/libsrc/drtdfss.cc new file mode 100644 index 00000000..009b98a2 --- /dev/null +++ b/dcmrt/libsrc/drtdfss.cc @@ -0,0 +1,575 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTDefinitionSourceSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtdfss.h" + + +// --- item class --- + +DRTDefinitionSourceSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + ReferencedSOPClassUID(DCM_ReferencedSOPClassUID), + ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID) +{ +} + + +DRTDefinitionSourceSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + ReferencedSOPClassUID(copy.ReferencedSOPClassUID), + ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID) +{ +} + + +DRTDefinitionSourceSequence::Item::~Item() +{ +} + + +DRTDefinitionSourceSequence::Item &DRTDefinitionSourceSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + ReferencedSOPClassUID = copy.ReferencedSOPClassUID; + ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID; + } + return *this; +} + + +void DRTDefinitionSourceSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + ReferencedSOPClassUID.clear(); + ReferencedSOPInstanceUID.clear(); + } +} + + +OFBool DRTDefinitionSourceSequence::Item::isEmpty() +{ + return ReferencedSOPClassUID.isEmpty() && + ReferencedSOPInstanceUID.isEmpty(); +} + + +OFBool DRTDefinitionSourceSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTDefinitionSourceSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "DefinitionSourceSequence"); + getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "DefinitionSourceSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTDefinitionSourceSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "DefinitionSourceSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "DefinitionSourceSequence"); + } + return result; +} + + +OFCondition DRTDefinitionSourceSequence::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedSOPClassUID, value, pos); +} + + +OFCondition DRTDefinitionSourceSequence::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos); +} + + +OFCondition DRTDefinitionSourceSequence::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedSOPClassUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTDefinitionSourceSequence::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedSOPInstanceUID.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTDefinitionSourceSequence::DRTDefinitionSourceSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTDefinitionSourceSequence::DRTDefinitionSourceSequence(const DRTDefinitionSourceSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTDefinitionSourceSequence &DRTDefinitionSourceSequence::operator=(const DRTDefinitionSourceSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTDefinitionSourceSequence::~DRTDefinitionSourceSequence() +{ + clear(); +} + + +void DRTDefinitionSourceSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTDefinitionSourceSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTDefinitionSourceSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTDefinitionSourceSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTDefinitionSourceSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTDefinitionSourceSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTDefinitionSourceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTDefinitionSourceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTDefinitionSourceSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTDefinitionSourceSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTDefinitionSourceSequence::Item &DRTDefinitionSourceSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTDefinitionSourceSequence::Item &DRTDefinitionSourceSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTDefinitionSourceSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTDefinitionSourceSequence::Item &DRTDefinitionSourceSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTDefinitionSourceSequence::Item &DRTDefinitionSourceSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTDefinitionSourceSequence::Item &DRTDefinitionSourceSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTDefinitionSourceSequence::Item &DRTDefinitionSourceSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTDefinitionSourceSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTDefinitionSourceSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTDefinitionSourceSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTDefinitionSourceSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_DefinitionSourceSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_DefinitionSourceSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTDefinitionSourceSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_DefinitionSourceSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtdias.cc b/dcmrt/libsrc/drtdias.cc index 41b64cfa..e708cb5e 100644 --- a/dcmrt/libsrc/drtdias.cc +++ b/dcmrt/libsrc/drtdias.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTDeidentificationActionSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -268,10 +268,12 @@ OFCondition DRTDeidentificationActionSequence::gotoFirstItem() OFCondition DRTDeidentificationActionSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtdimcs.cc b/dcmrt/libsrc/drtdimcs.cc index 750b3169..6197fea1 100644 --- a/dcmrt/libsrc/drtdimcs.cc +++ b/dcmrt/libsrc/drtdimcs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTDeidentificationMethodCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -656,10 +656,12 @@ OFCondition DRTDeidentificationMethodCodeSequence::gotoFirstItem() OFCondition DRTDeidentificationMethodCodeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtdimrs.cc b/dcmrt/libsrc/drtdimrs.cc index 8aef4e48..4fd0dcc7 100644 --- a/dcmrt/libsrc/drtdimrs.cc +++ b/dcmrt/libsrc/drtdimrs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTDICOMMediaRetrievalSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -272,10 +272,12 @@ OFCondition DRTDICOMMediaRetrievalSequence::gotoFirstItem() OFCondition DRTDICOMMediaRetrievalSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtdirs.cc b/dcmrt/libsrc/drtdirs.cc index f1fad2c6..11328f0f 100644 --- a/dcmrt/libsrc/drtdirs.cc +++ b/dcmrt/libsrc/drtdirs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTDICOMRetrievalSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -243,10 +243,12 @@ OFCondition DRTDICOMRetrievalSequence::gotoFirstItem() OFCondition DRTDICOMRetrievalSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtdose.cc b/dcmrt/libsrc/drtdose.cc index 9b63bbbd..a2a7b08e 100644 --- a/dcmrt/libsrc/drtdose.cc +++ b/dcmrt/libsrc/drtdose.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTDoseIOD * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -22,6 +22,7 @@ DRTDoseIOD::DRTDoseIOD() PatientID(DCM_PatientID), IssuerOfPatientID(DCM_IssuerOfPatientID), IssuerOfPatientIDQualifiersSequence(), + TypeOfPatientID(DCM_TypeOfPatientID), PatientBirthDate(DCM_PatientBirthDate), PatientBirthDateInAlternativeCalendar(DCM_PatientBirthDateInAlternativeCalendar), PatientDeathDateInAlternativeCalendar(DCM_PatientDeathDateInAlternativeCalendar), @@ -78,6 +79,7 @@ DRTDoseIOD::DRTDoseIOD() PhysiciansOfRecordIdentificationSequence(), NameOfPhysiciansReadingStudy(DCM_NameOfPhysiciansReadingStudy), PhysiciansReadingStudyIdentificationSequence(), + RequestingService(DCM_RequestingService), RequestingServiceCodeSequence(), ReferencedStudySequence(), ProcedureCodeSequence(), @@ -101,12 +103,15 @@ DRTDoseIOD::DRTDoseIOD() AdditionalPatientHistory(DCM_AdditionalPatientHistory), AdmissionID(DCM_AdmissionID), IssuerOfAdmissionIDSequence(), + ReasonForVisit(DCM_ReasonForVisit), + ReasonForVisitCodeSequence(), ServiceEpisodeID(DCM_ServiceEpisodeID), IssuerOfServiceEpisodeIDSequence(), ServiceEpisodeDescription(DCM_ServiceEpisodeDescription), PatientSexNeutered(DCM_PatientSexNeutered), ClinicalTrialTimePointID(DCM_ClinicalTrialTimePointID), ClinicalTrialTimePointDescription(DCM_ClinicalTrialTimePointDescription), + ClinicalTrialTimePointTypeCodeSequence(), LongitudinalTemporalOffsetFromEvent(DCM_LongitudinalTemporalOffsetFromEvent), LongitudinalTemporalEventType(DCM_LongitudinalTemporalEventType), ConsentForClinicalTrialUseSequence(), @@ -129,6 +134,7 @@ DRTDoseIOD::DRTDoseIOD() PerformedProcedureStepDescription(DCM_PerformedProcedureStepDescription), PerformedProtocolCodeSequence(), CommentsOnThePerformedProcedureStep(DCM_CommentsOnThePerformedProcedureStep), + TreatmentSessionUID(DCM_TreatmentSessionUID), ClinicalTrialCoordinatingCenterName(DCM_ClinicalTrialCoordinatingCenterName), ClinicalTrialSeriesID(DCM_ClinicalTrialSeriesID), ClinicalTrialSeriesDescription(DCM_ClinicalTrialSeriesDescription), @@ -139,22 +145,20 @@ DRTDoseIOD::DRTDoseIOD() InstitutionAddress(DCM_InstitutionAddress), StationName(DCM_StationName), InstitutionalDepartmentName(DCM_InstitutionalDepartmentName), + InstitutionalDepartmentTypeCodeSequence(), ManufacturerModelName(DCM_ManufacturerModelName), + ManufacturerDeviceClassUID(DCM_ManufacturerDeviceClassUID), DeviceSerialNumber(DCM_DeviceSerialNumber), SoftwareVersions(DCM_SoftwareVersions), GantryID(DCM_GantryID), UDISequence(), + DeviceUID(DCM_DeviceUID), SpatialResolution(DCM_SpatialResolution), DateOfLastCalibration(DCM_DateOfLastCalibration), TimeOfLastCalibration(DCM_TimeOfLastCalibration), PixelPaddingValue(DCM_PixelPaddingValue), PatientOrientation(DCM_PatientOrientation), ImageType(DCM_ImageType), - AcquisitionNumber(DCM_AcquisitionNumber), - AcquisitionDate(DCM_AcquisitionDate), - AcquisitionTime(DCM_AcquisitionTime), - AcquisitionDateTime(DCM_AcquisitionDateTime), - ImagesInAcquisition(DCM_ImagesInAcquisition), ImageComments(DCM_ImageComments), QualityControlImage(DCM_QualityControlImage), BurnedInAnnotation(DCM_BurnedInAnnotation), @@ -164,12 +168,15 @@ DRTDoseIOD::DRTDoseIOD() LossyImageCompressionMethod(DCM_LossyImageCompressionMethod), IconImageSequence(), PresentationLUTShape(DCM_PresentationLUTShape), - IrradiationEventUID(DCM_IrradiationEventUID), RealWorldValueMappingSequence(), + ImageLaterality(DCM_ImageLaterality), + AnatomicRegionSequence(), + PrimaryAnatomicStructureSequence(), PixelSpacing(DCM_PixelSpacing), ImageOrientationPatient(DCM_ImageOrientationPatient), ImagePositionPatient(DCM_ImagePositionPatient), SliceThickness(DCM_SliceThickness), + SpacingBetweenSlices(DCM_SpacingBetweenSlices), SliceLocation(DCM_SliceLocation), Rows(DCM_Rows), Columns(DCM_Columns), @@ -188,28 +195,12 @@ DRTDoseIOD::DRTDoseIOD() PixelData(DCM_PixelData), PixelDataProviderURL(DCM_PixelDataProviderURL), PixelPaddingRangeLimit(DCM_PixelPaddingRangeLimit), + ExtendedOffsetTable(DCM_ExtendedOffsetTable), + ExtendedOffsetTableLengths(DCM_ExtendedOffsetTableLengths), NumberOfFrames(DCM_NumberOfFrames), FrameIncrementPointer(DCM_FrameIncrementPointer), StereoPairsPresent(DCM_StereoPairsPresent), - OverlayRows(DCM_OverlayRows), - OverlayColumns(DCM_OverlayColumns), - OverlayType(DCM_OverlayType), - OverlayOrigin(DCM_OverlayOrigin), - OverlayBitsAllocated(DCM_OverlayBitsAllocated), - OverlayBitPosition(DCM_OverlayBitPosition), - OverlayData(DCM_OverlayData), - OverlayDescription(DCM_OverlayDescription), - OverlaySubtype(DCM_OverlaySubtype), - OverlayLabel(DCM_OverlayLabel), - ROIArea(DCM_ROIArea), - ROIMean(DCM_ROIMean), - ROIStandardDeviation(DCM_ROIStandardDeviation), - NumberOfFramesInOverlay(DCM_NumberOfFramesInOverlay), - ImageFrameOrigin(DCM_ImageFrameOrigin), - ModalityLUTSequence(), - RescaleIntercept(DCM_RescaleIntercept), - RescaleSlope(DCM_RescaleSlope), - RescaleType(DCM_RescaleType), + EncapsulatedPixelDataValueTotalLength(DCM_EncapsulatedPixelDataValueTotalLength), SamplesPerPixel(DCM_SamplesPerPixel), PhotometricInterpretation(DCM_PhotometricInterpretation), BitsAllocated(DCM_BitsAllocated), @@ -223,6 +214,7 @@ DRTDoseIOD::DRTDoseIOD() SpatialTransformOfDose(DCM_SpatialTransformOfDose), ReferencedSpatialRegistrationSequence(), InstanceNumber(DCM_InstanceNumber), + EntityLongLabel(DCM_EntityLongLabel), DoseComment(DCM_DoseComment), NormalizationPoint(DCM_NormalizationPoint), DoseSummationType(DCM_DoseSummationType), @@ -233,20 +225,11 @@ DRTDoseIOD::DRTDoseIOD() TissueHeterogeneityCorrection(DCM_TissueHeterogeneityCorrection), DerivationCodeSequence(), ReferencedInstanceSequence(), + PlanOverviewSequence(), ReferencedStructureSetSequence(), DVHNormalizationPoint(DCM_DVHNormalizationPoint), DVHNormalizationDoseValue(DCM_DVHNormalizationDoseValue), DVHSequence(), - StructureSetLabel(DCM_StructureSetLabel), - StructureSetName(DCM_StructureSetName), - StructureSetDescription(DCM_StructureSetDescription), - StructureSetDate(DCM_StructureSetDate), - StructureSetTime(DCM_StructureSetTime), - ReferencedFrameOfReferenceSequence(), - StructureSetROISequence(), - PredecessorStructureSetSequence(), - ROIContourSequence(), - RTDoseROISequence(), SOPClassUID(DCM_SOPClassUID), SOPInstanceUID(DCM_SOPInstanceUID), SpecificCharacterSet(DCM_SpecificCharacterSet), @@ -275,6 +258,10 @@ DRTDoseIOD::DRTDoseIOD() ConversionSourceAttributesSequence(), ContentQualification(DCM_ContentQualification), PrivateDataElementCharacteristicsSequence(), + InstanceOriginStatus(DCM_InstanceOriginStatus), + BarcodeValue(DCM_BarcodeValue), + ReferencedDefinedProtocolSequence(), + ReferencedPerformedProtocolSequence(), ReferencedSeriesSequence(), StudiesContainingOtherReferencedInstancesSequence(), FrameExtractionSequence() @@ -289,6 +276,7 @@ DRTDoseIOD::DRTDoseIOD(const DRTDoseIOD ©) PatientID(copy.PatientID), IssuerOfPatientID(copy.IssuerOfPatientID), IssuerOfPatientIDQualifiersSequence(copy.IssuerOfPatientIDQualifiersSequence), + TypeOfPatientID(copy.TypeOfPatientID), PatientBirthDate(copy.PatientBirthDate), PatientBirthDateInAlternativeCalendar(copy.PatientBirthDateInAlternativeCalendar), PatientDeathDateInAlternativeCalendar(copy.PatientDeathDateInAlternativeCalendar), @@ -345,6 +333,7 @@ DRTDoseIOD::DRTDoseIOD(const DRTDoseIOD ©) PhysiciansOfRecordIdentificationSequence(copy.PhysiciansOfRecordIdentificationSequence), NameOfPhysiciansReadingStudy(copy.NameOfPhysiciansReadingStudy), PhysiciansReadingStudyIdentificationSequence(copy.PhysiciansReadingStudyIdentificationSequence), + RequestingService(copy.RequestingService), RequestingServiceCodeSequence(copy.RequestingServiceCodeSequence), ReferencedStudySequence(copy.ReferencedStudySequence), ProcedureCodeSequence(copy.ProcedureCodeSequence), @@ -368,12 +357,15 @@ DRTDoseIOD::DRTDoseIOD(const DRTDoseIOD ©) AdditionalPatientHistory(copy.AdditionalPatientHistory), AdmissionID(copy.AdmissionID), IssuerOfAdmissionIDSequence(copy.IssuerOfAdmissionIDSequence), + ReasonForVisit(copy.ReasonForVisit), + ReasonForVisitCodeSequence(copy.ReasonForVisitCodeSequence), ServiceEpisodeID(copy.ServiceEpisodeID), IssuerOfServiceEpisodeIDSequence(copy.IssuerOfServiceEpisodeIDSequence), ServiceEpisodeDescription(copy.ServiceEpisodeDescription), PatientSexNeutered(copy.PatientSexNeutered), ClinicalTrialTimePointID(copy.ClinicalTrialTimePointID), ClinicalTrialTimePointDescription(copy.ClinicalTrialTimePointDescription), + ClinicalTrialTimePointTypeCodeSequence(copy.ClinicalTrialTimePointTypeCodeSequence), LongitudinalTemporalOffsetFromEvent(copy.LongitudinalTemporalOffsetFromEvent), LongitudinalTemporalEventType(copy.LongitudinalTemporalEventType), ConsentForClinicalTrialUseSequence(copy.ConsentForClinicalTrialUseSequence), @@ -396,6 +388,7 @@ DRTDoseIOD::DRTDoseIOD(const DRTDoseIOD ©) PerformedProcedureStepDescription(copy.PerformedProcedureStepDescription), PerformedProtocolCodeSequence(copy.PerformedProtocolCodeSequence), CommentsOnThePerformedProcedureStep(copy.CommentsOnThePerformedProcedureStep), + TreatmentSessionUID(copy.TreatmentSessionUID), ClinicalTrialCoordinatingCenterName(copy.ClinicalTrialCoordinatingCenterName), ClinicalTrialSeriesID(copy.ClinicalTrialSeriesID), ClinicalTrialSeriesDescription(copy.ClinicalTrialSeriesDescription), @@ -406,22 +399,20 @@ DRTDoseIOD::DRTDoseIOD(const DRTDoseIOD ©) InstitutionAddress(copy.InstitutionAddress), StationName(copy.StationName), InstitutionalDepartmentName(copy.InstitutionalDepartmentName), + InstitutionalDepartmentTypeCodeSequence(copy.InstitutionalDepartmentTypeCodeSequence), ManufacturerModelName(copy.ManufacturerModelName), + ManufacturerDeviceClassUID(copy.ManufacturerDeviceClassUID), DeviceSerialNumber(copy.DeviceSerialNumber), SoftwareVersions(copy.SoftwareVersions), GantryID(copy.GantryID), UDISequence(copy.UDISequence), + DeviceUID(copy.DeviceUID), SpatialResolution(copy.SpatialResolution), DateOfLastCalibration(copy.DateOfLastCalibration), TimeOfLastCalibration(copy.TimeOfLastCalibration), PixelPaddingValue(copy.PixelPaddingValue), PatientOrientation(copy.PatientOrientation), ImageType(copy.ImageType), - AcquisitionNumber(copy.AcquisitionNumber), - AcquisitionDate(copy.AcquisitionDate), - AcquisitionTime(copy.AcquisitionTime), - AcquisitionDateTime(copy.AcquisitionDateTime), - ImagesInAcquisition(copy.ImagesInAcquisition), ImageComments(copy.ImageComments), QualityControlImage(copy.QualityControlImage), BurnedInAnnotation(copy.BurnedInAnnotation), @@ -431,12 +422,15 @@ DRTDoseIOD::DRTDoseIOD(const DRTDoseIOD ©) LossyImageCompressionMethod(copy.LossyImageCompressionMethod), IconImageSequence(copy.IconImageSequence), PresentationLUTShape(copy.PresentationLUTShape), - IrradiationEventUID(copy.IrradiationEventUID), RealWorldValueMappingSequence(copy.RealWorldValueMappingSequence), + ImageLaterality(copy.ImageLaterality), + AnatomicRegionSequence(copy.AnatomicRegionSequence), + PrimaryAnatomicStructureSequence(copy.PrimaryAnatomicStructureSequence), PixelSpacing(copy.PixelSpacing), ImageOrientationPatient(copy.ImageOrientationPatient), ImagePositionPatient(copy.ImagePositionPatient), SliceThickness(copy.SliceThickness), + SpacingBetweenSlices(copy.SpacingBetweenSlices), SliceLocation(copy.SliceLocation), Rows(copy.Rows), Columns(copy.Columns), @@ -455,28 +449,12 @@ DRTDoseIOD::DRTDoseIOD(const DRTDoseIOD ©) PixelData(copy.PixelData), PixelDataProviderURL(copy.PixelDataProviderURL), PixelPaddingRangeLimit(copy.PixelPaddingRangeLimit), + ExtendedOffsetTable(copy.ExtendedOffsetTable), + ExtendedOffsetTableLengths(copy.ExtendedOffsetTableLengths), NumberOfFrames(copy.NumberOfFrames), FrameIncrementPointer(copy.FrameIncrementPointer), StereoPairsPresent(copy.StereoPairsPresent), - OverlayRows(copy.OverlayRows), - OverlayColumns(copy.OverlayColumns), - OverlayType(copy.OverlayType), - OverlayOrigin(copy.OverlayOrigin), - OverlayBitsAllocated(copy.OverlayBitsAllocated), - OverlayBitPosition(copy.OverlayBitPosition), - OverlayData(copy.OverlayData), - OverlayDescription(copy.OverlayDescription), - OverlaySubtype(copy.OverlaySubtype), - OverlayLabel(copy.OverlayLabel), - ROIArea(copy.ROIArea), - ROIMean(copy.ROIMean), - ROIStandardDeviation(copy.ROIStandardDeviation), - NumberOfFramesInOverlay(copy.NumberOfFramesInOverlay), - ImageFrameOrigin(copy.ImageFrameOrigin), - ModalityLUTSequence(copy.ModalityLUTSequence), - RescaleIntercept(copy.RescaleIntercept), - RescaleSlope(copy.RescaleSlope), - RescaleType(copy.RescaleType), + EncapsulatedPixelDataValueTotalLength(copy.EncapsulatedPixelDataValueTotalLength), SamplesPerPixel(copy.SamplesPerPixel), PhotometricInterpretation(copy.PhotometricInterpretation), BitsAllocated(copy.BitsAllocated), @@ -490,6 +468,7 @@ DRTDoseIOD::DRTDoseIOD(const DRTDoseIOD ©) SpatialTransformOfDose(copy.SpatialTransformOfDose), ReferencedSpatialRegistrationSequence(copy.ReferencedSpatialRegistrationSequence), InstanceNumber(copy.InstanceNumber), + EntityLongLabel(copy.EntityLongLabel), DoseComment(copy.DoseComment), NormalizationPoint(copy.NormalizationPoint), DoseSummationType(copy.DoseSummationType), @@ -500,20 +479,11 @@ DRTDoseIOD::DRTDoseIOD(const DRTDoseIOD ©) TissueHeterogeneityCorrection(copy.TissueHeterogeneityCorrection), DerivationCodeSequence(copy.DerivationCodeSequence), ReferencedInstanceSequence(copy.ReferencedInstanceSequence), + PlanOverviewSequence(copy.PlanOverviewSequence), ReferencedStructureSetSequence(copy.ReferencedStructureSetSequence), DVHNormalizationPoint(copy.DVHNormalizationPoint), DVHNormalizationDoseValue(copy.DVHNormalizationDoseValue), DVHSequence(copy.DVHSequence), - StructureSetLabel(copy.StructureSetLabel), - StructureSetName(copy.StructureSetName), - StructureSetDescription(copy.StructureSetDescription), - StructureSetDate(copy.StructureSetDate), - StructureSetTime(copy.StructureSetTime), - ReferencedFrameOfReferenceSequence(copy.ReferencedFrameOfReferenceSequence), - StructureSetROISequence(copy.StructureSetROISequence), - PredecessorStructureSetSequence(copy.PredecessorStructureSetSequence), - ROIContourSequence(copy.ROIContourSequence), - RTDoseROISequence(copy.RTDoseROISequence), SOPClassUID(copy.SOPClassUID), SOPInstanceUID(copy.SOPInstanceUID), SpecificCharacterSet(copy.SpecificCharacterSet), @@ -542,6 +512,10 @@ DRTDoseIOD::DRTDoseIOD(const DRTDoseIOD ©) ConversionSourceAttributesSequence(copy.ConversionSourceAttributesSequence), ContentQualification(copy.ContentQualification), PrivateDataElementCharacteristicsSequence(copy.PrivateDataElementCharacteristicsSequence), + InstanceOriginStatus(copy.InstanceOriginStatus), + BarcodeValue(copy.BarcodeValue), + ReferencedDefinedProtocolSequence(copy.ReferencedDefinedProtocolSequence), + ReferencedPerformedProtocolSequence(copy.ReferencedPerformedProtocolSequence), ReferencedSeriesSequence(copy.ReferencedSeriesSequence), StudiesContainingOtherReferencedInstancesSequence(copy.StudiesContainingOtherReferencedInstancesSequence), FrameExtractionSequence(copy.FrameExtractionSequence) @@ -562,6 +536,7 @@ DRTDoseIOD &DRTDoseIOD::operator=(const DRTDoseIOD ©) PatientID = copy.PatientID; IssuerOfPatientID = copy.IssuerOfPatientID; IssuerOfPatientIDQualifiersSequence = copy.IssuerOfPatientIDQualifiersSequence; + TypeOfPatientID = copy.TypeOfPatientID; PatientBirthDate = copy.PatientBirthDate; PatientBirthDateInAlternativeCalendar = copy.PatientBirthDateInAlternativeCalendar; PatientDeathDateInAlternativeCalendar = copy.PatientDeathDateInAlternativeCalendar; @@ -618,6 +593,7 @@ DRTDoseIOD &DRTDoseIOD::operator=(const DRTDoseIOD ©) PhysiciansOfRecordIdentificationSequence = copy.PhysiciansOfRecordIdentificationSequence; NameOfPhysiciansReadingStudy = copy.NameOfPhysiciansReadingStudy; PhysiciansReadingStudyIdentificationSequence = copy.PhysiciansReadingStudyIdentificationSequence; + RequestingService = copy.RequestingService; RequestingServiceCodeSequence = copy.RequestingServiceCodeSequence; ReferencedStudySequence = copy.ReferencedStudySequence; ProcedureCodeSequence = copy.ProcedureCodeSequence; @@ -641,12 +617,15 @@ DRTDoseIOD &DRTDoseIOD::operator=(const DRTDoseIOD ©) AdditionalPatientHistory = copy.AdditionalPatientHistory; AdmissionID = copy.AdmissionID; IssuerOfAdmissionIDSequence = copy.IssuerOfAdmissionIDSequence; + ReasonForVisit = copy.ReasonForVisit; + ReasonForVisitCodeSequence = copy.ReasonForVisitCodeSequence; ServiceEpisodeID = copy.ServiceEpisodeID; IssuerOfServiceEpisodeIDSequence = copy.IssuerOfServiceEpisodeIDSequence; ServiceEpisodeDescription = copy.ServiceEpisodeDescription; PatientSexNeutered = copy.PatientSexNeutered; ClinicalTrialTimePointID = copy.ClinicalTrialTimePointID; ClinicalTrialTimePointDescription = copy.ClinicalTrialTimePointDescription; + ClinicalTrialTimePointTypeCodeSequence = copy.ClinicalTrialTimePointTypeCodeSequence; LongitudinalTemporalOffsetFromEvent = copy.LongitudinalTemporalOffsetFromEvent; LongitudinalTemporalEventType = copy.LongitudinalTemporalEventType; ConsentForClinicalTrialUseSequence = copy.ConsentForClinicalTrialUseSequence; @@ -669,6 +648,7 @@ DRTDoseIOD &DRTDoseIOD::operator=(const DRTDoseIOD ©) PerformedProcedureStepDescription = copy.PerformedProcedureStepDescription; PerformedProtocolCodeSequence = copy.PerformedProtocolCodeSequence; CommentsOnThePerformedProcedureStep = copy.CommentsOnThePerformedProcedureStep; + TreatmentSessionUID = copy.TreatmentSessionUID; ClinicalTrialCoordinatingCenterName = copy.ClinicalTrialCoordinatingCenterName; ClinicalTrialSeriesID = copy.ClinicalTrialSeriesID; ClinicalTrialSeriesDescription = copy.ClinicalTrialSeriesDescription; @@ -679,22 +659,20 @@ DRTDoseIOD &DRTDoseIOD::operator=(const DRTDoseIOD ©) InstitutionAddress = copy.InstitutionAddress; StationName = copy.StationName; InstitutionalDepartmentName = copy.InstitutionalDepartmentName; + InstitutionalDepartmentTypeCodeSequence = copy.InstitutionalDepartmentTypeCodeSequence; ManufacturerModelName = copy.ManufacturerModelName; + ManufacturerDeviceClassUID = copy.ManufacturerDeviceClassUID; DeviceSerialNumber = copy.DeviceSerialNumber; SoftwareVersions = copy.SoftwareVersions; GantryID = copy.GantryID; UDISequence = copy.UDISequence; + DeviceUID = copy.DeviceUID; SpatialResolution = copy.SpatialResolution; DateOfLastCalibration = copy.DateOfLastCalibration; TimeOfLastCalibration = copy.TimeOfLastCalibration; PixelPaddingValue = copy.PixelPaddingValue; PatientOrientation = copy.PatientOrientation; ImageType = copy.ImageType; - AcquisitionNumber = copy.AcquisitionNumber; - AcquisitionDate = copy.AcquisitionDate; - AcquisitionTime = copy.AcquisitionTime; - AcquisitionDateTime = copy.AcquisitionDateTime; - ImagesInAcquisition = copy.ImagesInAcquisition; ImageComments = copy.ImageComments; QualityControlImage = copy.QualityControlImage; BurnedInAnnotation = copy.BurnedInAnnotation; @@ -704,12 +682,15 @@ DRTDoseIOD &DRTDoseIOD::operator=(const DRTDoseIOD ©) LossyImageCompressionMethod = copy.LossyImageCompressionMethod; IconImageSequence = copy.IconImageSequence; PresentationLUTShape = copy.PresentationLUTShape; - IrradiationEventUID = copy.IrradiationEventUID; RealWorldValueMappingSequence = copy.RealWorldValueMappingSequence; + ImageLaterality = copy.ImageLaterality; + AnatomicRegionSequence = copy.AnatomicRegionSequence; + PrimaryAnatomicStructureSequence = copy.PrimaryAnatomicStructureSequence; PixelSpacing = copy.PixelSpacing; ImageOrientationPatient = copy.ImageOrientationPatient; ImagePositionPatient = copy.ImagePositionPatient; SliceThickness = copy.SliceThickness; + SpacingBetweenSlices = copy.SpacingBetweenSlices; SliceLocation = copy.SliceLocation; Rows = copy.Rows; Columns = copy.Columns; @@ -728,28 +709,12 @@ DRTDoseIOD &DRTDoseIOD::operator=(const DRTDoseIOD ©) PixelData = copy.PixelData; PixelDataProviderURL = copy.PixelDataProviderURL; PixelPaddingRangeLimit = copy.PixelPaddingRangeLimit; + ExtendedOffsetTable = copy.ExtendedOffsetTable; + ExtendedOffsetTableLengths = copy.ExtendedOffsetTableLengths; NumberOfFrames = copy.NumberOfFrames; FrameIncrementPointer = copy.FrameIncrementPointer; StereoPairsPresent = copy.StereoPairsPresent; - OverlayRows = copy.OverlayRows; - OverlayColumns = copy.OverlayColumns; - OverlayType = copy.OverlayType; - OverlayOrigin = copy.OverlayOrigin; - OverlayBitsAllocated = copy.OverlayBitsAllocated; - OverlayBitPosition = copy.OverlayBitPosition; - OverlayData = copy.OverlayData; - OverlayDescription = copy.OverlayDescription; - OverlaySubtype = copy.OverlaySubtype; - OverlayLabel = copy.OverlayLabel; - ROIArea = copy.ROIArea; - ROIMean = copy.ROIMean; - ROIStandardDeviation = copy.ROIStandardDeviation; - NumberOfFramesInOverlay = copy.NumberOfFramesInOverlay; - ImageFrameOrigin = copy.ImageFrameOrigin; - ModalityLUTSequence = copy.ModalityLUTSequence; - RescaleIntercept = copy.RescaleIntercept; - RescaleSlope = copy.RescaleSlope; - RescaleType = copy.RescaleType; + EncapsulatedPixelDataValueTotalLength = copy.EncapsulatedPixelDataValueTotalLength; SamplesPerPixel = copy.SamplesPerPixel; PhotometricInterpretation = copy.PhotometricInterpretation; BitsAllocated = copy.BitsAllocated; @@ -763,6 +728,7 @@ DRTDoseIOD &DRTDoseIOD::operator=(const DRTDoseIOD ©) SpatialTransformOfDose = copy.SpatialTransformOfDose; ReferencedSpatialRegistrationSequence = copy.ReferencedSpatialRegistrationSequence; InstanceNumber = copy.InstanceNumber; + EntityLongLabel = copy.EntityLongLabel; DoseComment = copy.DoseComment; NormalizationPoint = copy.NormalizationPoint; DoseSummationType = copy.DoseSummationType; @@ -773,20 +739,11 @@ DRTDoseIOD &DRTDoseIOD::operator=(const DRTDoseIOD ©) TissueHeterogeneityCorrection = copy.TissueHeterogeneityCorrection; DerivationCodeSequence = copy.DerivationCodeSequence; ReferencedInstanceSequence = copy.ReferencedInstanceSequence; + PlanOverviewSequence = copy.PlanOverviewSequence; ReferencedStructureSetSequence = copy.ReferencedStructureSetSequence; DVHNormalizationPoint = copy.DVHNormalizationPoint; DVHNormalizationDoseValue = copy.DVHNormalizationDoseValue; DVHSequence = copy.DVHSequence; - StructureSetLabel = copy.StructureSetLabel; - StructureSetName = copy.StructureSetName; - StructureSetDescription = copy.StructureSetDescription; - StructureSetDate = copy.StructureSetDate; - StructureSetTime = copy.StructureSetTime; - ReferencedFrameOfReferenceSequence = copy.ReferencedFrameOfReferenceSequence; - StructureSetROISequence = copy.StructureSetROISequence; - PredecessorStructureSetSequence = copy.PredecessorStructureSetSequence; - ROIContourSequence = copy.ROIContourSequence; - RTDoseROISequence = copy.RTDoseROISequence; SOPClassUID = copy.SOPClassUID; SOPInstanceUID = copy.SOPInstanceUID; SpecificCharacterSet = copy.SpecificCharacterSet; @@ -815,6 +772,10 @@ DRTDoseIOD &DRTDoseIOD::operator=(const DRTDoseIOD ©) ConversionSourceAttributesSequence = copy.ConversionSourceAttributesSequence; ContentQualification = copy.ContentQualification; PrivateDataElementCharacteristicsSequence = copy.PrivateDataElementCharacteristicsSequence; + InstanceOriginStatus = copy.InstanceOriginStatus; + BarcodeValue = copy.BarcodeValue; + ReferencedDefinedProtocolSequence = copy.ReferencedDefinedProtocolSequence; + ReferencedPerformedProtocolSequence = copy.ReferencedPerformedProtocolSequence; ReferencedSeriesSequence = copy.ReferencedSeriesSequence; StudiesContainingOtherReferencedInstancesSequence = copy.StudiesContainingOtherReferencedInstancesSequence; FrameExtractionSequence = copy.FrameExtractionSequence; @@ -830,6 +791,7 @@ void DRTDoseIOD::clear() PatientID.clear(); IssuerOfPatientID.clear(); IssuerOfPatientIDQualifiersSequence.clear(); + TypeOfPatientID.clear(); PatientBirthDate.clear(); PatientBirthDateInAlternativeCalendar.clear(); PatientDeathDateInAlternativeCalendar.clear(); @@ -886,6 +848,7 @@ void DRTDoseIOD::clear() PhysiciansOfRecordIdentificationSequence.clear(); NameOfPhysiciansReadingStudy.clear(); PhysiciansReadingStudyIdentificationSequence.clear(); + RequestingService.clear(); RequestingServiceCodeSequence.clear(); ReferencedStudySequence.clear(); ProcedureCodeSequence.clear(); @@ -909,12 +872,15 @@ void DRTDoseIOD::clear() AdditionalPatientHistory.clear(); AdmissionID.clear(); IssuerOfAdmissionIDSequence.clear(); + ReasonForVisit.clear(); + ReasonForVisitCodeSequence.clear(); ServiceEpisodeID.clear(); IssuerOfServiceEpisodeIDSequence.clear(); ServiceEpisodeDescription.clear(); PatientSexNeutered.clear(); ClinicalTrialTimePointID.clear(); ClinicalTrialTimePointDescription.clear(); + ClinicalTrialTimePointTypeCodeSequence.clear(); LongitudinalTemporalOffsetFromEvent.clear(); LongitudinalTemporalEventType.clear(); ConsentForClinicalTrialUseSequence.clear(); @@ -937,6 +903,7 @@ void DRTDoseIOD::clear() PerformedProcedureStepDescription.clear(); PerformedProtocolCodeSequence.clear(); CommentsOnThePerformedProcedureStep.clear(); + TreatmentSessionUID.clear(); ClinicalTrialCoordinatingCenterName.clear(); ClinicalTrialSeriesID.clear(); ClinicalTrialSeriesDescription.clear(); @@ -947,11 +914,14 @@ void DRTDoseIOD::clear() InstitutionAddress.clear(); StationName.clear(); InstitutionalDepartmentName.clear(); + InstitutionalDepartmentTypeCodeSequence.clear(); ManufacturerModelName.clear(); + ManufacturerDeviceClassUID.clear(); DeviceSerialNumber.clear(); SoftwareVersions.clear(); GantryID.clear(); UDISequence.clear(); + DeviceUID.clear(); SpatialResolution.clear(); DateOfLastCalibration.clear(); TimeOfLastCalibration.clear(); @@ -961,11 +931,6 @@ void DRTDoseIOD::clear() ContentDate.clear(); ContentTime.clear(); ImageType.clear(); - AcquisitionNumber.clear(); - AcquisitionDate.clear(); - AcquisitionTime.clear(); - AcquisitionDateTime.clear(); - ImagesInAcquisition.clear(); ImageComments.clear(); QualityControlImage.clear(); BurnedInAnnotation.clear(); @@ -975,12 +940,15 @@ void DRTDoseIOD::clear() LossyImageCompressionMethod.clear(); IconImageSequence.clear(); PresentationLUTShape.clear(); - IrradiationEventUID.clear(); RealWorldValueMappingSequence.clear(); + ImageLaterality.clear(); + AnatomicRegionSequence.clear(); + PrimaryAnatomicStructureSequence.clear(); PixelSpacing.clear(); ImageOrientationPatient.clear(); ImagePositionPatient.clear(); SliceThickness.clear(); + SpacingBetweenSlices.clear(); SliceLocation.clear(); SamplesPerPixel.clear(); PhotometricInterpretation.clear(); @@ -1005,32 +973,17 @@ void DRTDoseIOD::clear() PixelData.clear(); PixelDataProviderURL.clear(); PixelPaddingRangeLimit.clear(); + ExtendedOffsetTable.clear(); + ExtendedOffsetTableLengths.clear(); NumberOfFrames.clear(); FrameIncrementPointer.clear(); StereoPairsPresent.clear(); - OverlayRows.clear(); - OverlayColumns.clear(); - OverlayType.clear(); - OverlayOrigin.clear(); - OverlayBitsAllocated.clear(); - OverlayBitPosition.clear(); - OverlayData.clear(); - OverlayDescription.clear(); - OverlaySubtype.clear(); - OverlayLabel.clear(); - ROIArea.clear(); - ROIMean.clear(); - ROIStandardDeviation.clear(); - NumberOfFramesInOverlay.clear(); - ImageFrameOrigin.clear(); - ModalityLUTSequence.clear(); - RescaleIntercept.clear(); - RescaleSlope.clear(); - RescaleType.clear(); + EncapsulatedPixelDataValueTotalLength.clear(); DoseUnits.clear(); DoseType.clear(); SpatialTransformOfDose.clear(); ReferencedSpatialRegistrationSequence.clear(); + EntityLongLabel.clear(); DoseComment.clear(); NormalizationPoint.clear(); DoseSummationType.clear(); @@ -1041,20 +994,11 @@ void DRTDoseIOD::clear() TissueHeterogeneityCorrection.clear(); DerivationCodeSequence.clear(); ReferencedInstanceSequence.clear(); + PlanOverviewSequence.clear(); ReferencedStructureSetSequence.clear(); DVHNormalizationPoint.clear(); DVHNormalizationDoseValue.clear(); DVHSequence.clear(); - StructureSetLabel.clear(); - StructureSetName.clear(); - StructureSetDescription.clear(); - StructureSetDate.clear(); - StructureSetTime.clear(); - ReferencedFrameOfReferenceSequence.clear(); - StructureSetROISequence.clear(); - PredecessorStructureSetSequence.clear(); - ROIContourSequence.clear(); - RTDoseROISequence.clear(); SOPClassUID.clear(); SOPInstanceUID.clear(); SpecificCharacterSet.clear(); @@ -1083,6 +1027,10 @@ void DRTDoseIOD::clear() ConversionSourceAttributesSequence.clear(); ContentQualification.clear(); PrivateDataElementCharacteristicsSequence.clear(); + InstanceOriginStatus.clear(); + BarcodeValue.clear(); + ReferencedDefinedProtocolSequence.clear(); + ReferencedPerformedProtocolSequence.clear(); ReferencedSeriesSequence.clear(); StudiesContainingOtherReferencedInstancesSequence.clear(); FrameExtractionSequence.clear(); @@ -1143,11 +1091,14 @@ OFCondition DRTDoseIOD::read(DcmItem &dataset) getAndCheckElementFromDataset(dataset, InstitutionAddress, "1", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, StationName, "1", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, InstitutionalDepartmentName, "1", "3", "GeneralEquipmentModule"); + InstitutionalDepartmentTypeCodeSequence.read(dataset, "1-n", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, ManufacturerModelName, "1", "3", "GeneralEquipmentModule"); + getAndCheckElementFromDataset(dataset, ManufacturerDeviceClassUID, "1-n", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, DeviceSerialNumber, "1", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, SoftwareVersions, "1-n", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, GantryID, "1", "3", "GeneralEquipmentModule"); UDISequence.read(dataset, "1-n", "3", "GeneralEquipmentModule"); + getAndCheckElementFromDataset(dataset, DeviceUID, "1", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, SpatialResolution, "1", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, DateOfLastCalibration, "1-n", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, TimeOfLastCalibration, "1-n", "3", "GeneralEquipmentModule"); @@ -1159,11 +1110,6 @@ OFCondition DRTDoseIOD::read(DcmItem &dataset) // getAndCheckElementFromDataset(dataset, ContentDate, "1", "2C", "GeneralImageModule"); // getAndCheckElementFromDataset(dataset, ContentTime, "1", "2C", "GeneralImageModule"); getAndCheckElementFromDataset(dataset, ImageType, "2-n", "3", "GeneralImageModule"); - getAndCheckElementFromDataset(dataset, AcquisitionNumber, "1", "3", "GeneralImageModule"); - getAndCheckElementFromDataset(dataset, AcquisitionDate, "1", "3", "GeneralImageModule"); - getAndCheckElementFromDataset(dataset, AcquisitionTime, "1", "3", "GeneralImageModule"); - getAndCheckElementFromDataset(dataset, AcquisitionDateTime, "1", "3", "GeneralImageModule"); - getAndCheckElementFromDataset(dataset, ImagesInAcquisition, "1", "3", "GeneralImageModule"); getAndCheckElementFromDataset(dataset, ImageComments, "1", "3", "GeneralImageModule"); getAndCheckElementFromDataset(dataset, QualityControlImage, "1", "3", "GeneralImageModule"); getAndCheckElementFromDataset(dataset, BurnedInAnnotation, "1", "3", "GeneralImageModule"); @@ -1173,8 +1119,10 @@ OFCondition DRTDoseIOD::read(DcmItem &dataset) getAndCheckElementFromDataset(dataset, LossyImageCompressionMethod, "1-n", "3", "GeneralImageModule"); IconImageSequence.read(dataset, "1-n", "3", "GeneralImageModule"); getAndCheckElementFromDataset(dataset, PresentationLUTShape, "1", "3", "GeneralImageModule"); - getAndCheckElementFromDataset(dataset, IrradiationEventUID, "1-n", "3", "GeneralImageModule"); RealWorldValueMappingSequence.read(dataset, "1-n", "3", "GeneralImageModule"); + getAndCheckElementFromDataset(dataset, ImageLaterality, "1", "3", "GeneralImageModule"); + AnatomicRegionSequence.read(dataset, "1-n", "3", "GeneralImageModule"); + PrimaryAnatomicStructureSequence.read(dataset, "1-n", "3", "GeneralImageModule"); // --- ImagePlaneModule (C) --- if (dataset.tagExists(DCM_PixelSpacing) || @@ -1186,6 +1134,7 @@ OFCondition DRTDoseIOD::read(DcmItem &dataset) getAndCheckElementFromDataset(dataset, ImageOrientationPatient, "6", "1", "ImagePlaneModule"); getAndCheckElementFromDataset(dataset, ImagePositionPatient, "3", "1", "ImagePlaneModule"); getAndCheckElementFromDataset(dataset, SliceThickness, "1", "2", "ImagePlaneModule"); + getAndCheckElementFromDataset(dataset, SpacingBetweenSlices, "1", "3", "ImagePlaneModule"); getAndCheckElementFromDataset(dataset, SliceLocation, "1", "3", "ImagePlaneModule"); } @@ -1216,6 +1165,8 @@ OFCondition DRTDoseIOD::read(DcmItem &dataset) getAndCheckElementFromDataset(dataset, PixelData, "1", "1C", "ImagePixelModule"); getAndCheckElementFromDataset(dataset, PixelDataProviderURL, "1", "1C", "ImagePixelModule"); getAndCheckElementFromDataset(dataset, PixelPaddingRangeLimit, "1", "1C", "ImagePixelModule"); + getAndCheckElementFromDataset(dataset, ExtendedOffsetTable, "1", "3", "ImagePixelModule"); + getAndCheckElementFromDataset(dataset, ExtendedOffsetTableLengths, "1", "1C", "ImagePixelModule"); } // --- MultiFrameModule (C) --- @@ -1225,45 +1176,9 @@ OFCondition DRTDoseIOD::read(DcmItem &dataset) getAndCheckElementFromDataset(dataset, NumberOfFrames, "1", "1", "MultiFrameModule"); getAndCheckElementFromDataset(dataset, FrameIncrementPointer, "1-n", "1", "MultiFrameModule"); getAndCheckElementFromDataset(dataset, StereoPairsPresent, "1", "3", "MultiFrameModule"); + getAndCheckElementFromDataset(dataset, EncapsulatedPixelDataValueTotalLength, "1", "3", "MultiFrameModule"); } - // --- OverlayPlaneModule (U) --- - if (dataset.tagExists(DCM_OverlayRows) || - dataset.tagExists(DCM_OverlayColumns) || - dataset.tagExists(DCM_OverlayType) || - dataset.tagExists(DCM_OverlayOrigin) || - dataset.tagExists(DCM_OverlayBitsAllocated) || - dataset.tagExists(DCM_OverlayBitPosition) || - dataset.tagExists(DCM_OverlayData)) - { - getAndCheckElementFromDataset(dataset, OverlayRows, "1", "1", "OverlayPlaneModule"); - getAndCheckElementFromDataset(dataset, OverlayColumns, "1", "1", "OverlayPlaneModule"); - getAndCheckElementFromDataset(dataset, OverlayType, "1", "1", "OverlayPlaneModule"); - getAndCheckElementFromDataset(dataset, OverlayOrigin, "2", "1", "OverlayPlaneModule"); - getAndCheckElementFromDataset(dataset, OverlayBitsAllocated, "1", "1", "OverlayPlaneModule"); - getAndCheckElementFromDataset(dataset, OverlayBitPosition, "1", "1", "OverlayPlaneModule"); - getAndCheckElementFromDataset(dataset, OverlayData, "1", "1", "OverlayPlaneModule"); - getAndCheckElementFromDataset(dataset, OverlayDescription, "1", "3", "OverlayPlaneModule"); - getAndCheckElementFromDataset(dataset, OverlaySubtype, "1", "3", "OverlayPlaneModule"); - getAndCheckElementFromDataset(dataset, OverlayLabel, "1", "3", "OverlayPlaneModule"); - getAndCheckElementFromDataset(dataset, ROIArea, "1", "3", "OverlayPlaneModule"); - getAndCheckElementFromDataset(dataset, ROIMean, "1", "3", "OverlayPlaneModule"); - getAndCheckElementFromDataset(dataset, ROIStandardDeviation, "1", "3", "OverlayPlaneModule"); - } - - // --- MultiFrameOverlayModule (U) --- - if (dataset.tagExists(DCM_NumberOfFramesInOverlay)) - { - getAndCheckElementFromDataset(dataset, NumberOfFramesInOverlay, "1", "1", "MultiFrameOverlayModule"); - getAndCheckElementFromDataset(dataset, ImageFrameOrigin, "1", "3", "MultiFrameOverlayModule"); - } - - // --- ModalityLUTModule (U) --- - ModalityLUTSequence.read(dataset, "1-n", "1C", "ModalityLUTModule"); - getAndCheckElementFromDataset(dataset, RescaleIntercept, "1", "1C", "ModalityLUTModule"); - getAndCheckElementFromDataset(dataset, RescaleSlope, "1", "1C", "ModalityLUTModule"); - getAndCheckElementFromDataset(dataset, RescaleType, "1", "1C", "ModalityLUTModule"); - // --- RTDoseModule (M) --- getAndCheckElementFromDataset(dataset, SamplesPerPixel, "1", "1C", "RTDoseModule"); getAndCheckElementFromDataset(dataset, PhotometricInterpretation, "1", "1C", "RTDoseModule"); @@ -1278,6 +1193,7 @@ OFCondition DRTDoseIOD::read(DcmItem &dataset) getAndCheckElementFromDataset(dataset, SpatialTransformOfDose, "1", "3", "RTDoseModule"); ReferencedSpatialRegistrationSequence.read(dataset, "1-n", "2C", "RTDoseModule"); getAndCheckElementFromDataset(dataset, InstanceNumber, "1", "3", "RTDoseModule"); + getAndCheckElementFromDataset(dataset, EntityLongLabel, "1", "3", "RTDoseModule"); getAndCheckElementFromDataset(dataset, DoseComment, "1", "3", "RTDoseModule"); getAndCheckElementFromDataset(dataset, NormalizationPoint, "3", "3", "RTDoseModule"); getAndCheckElementFromDataset(dataset, DoseSummationType, "1", "1", "RTDoseModule"); @@ -1288,6 +1204,7 @@ OFCondition DRTDoseIOD::read(DcmItem &dataset) getAndCheckElementFromDataset(dataset, TissueHeterogeneityCorrection, "1-3", "3", "RTDoseModule"); DerivationCodeSequence.read(dataset, "1-n", "3", "RTDoseModule"); ReferencedInstanceSequence.read(dataset, "1-n", "3", "RTDoseModule"); + PlanOverviewSequence.read(dataset, "1-n", "1C", "RTDoseModule"); // --- RTDVHModule (U) --- if (dataset.tagExists(DCM_ReferencedStructureSetSequence) || @@ -1299,35 +1216,6 @@ OFCondition DRTDoseIOD::read(DcmItem &dataset) DVHSequence.read(dataset, "1-n", "1", "RTDVHModule"); } - // --- StructureSetModule (C) --- - if (dataset.tagExists(DCM_StructureSetLabel) || - dataset.tagExists(DCM_StructureSetDate) || - dataset.tagExists(DCM_StructureSetTime) || - dataset.tagExists(DCM_StructureSetROISequence)) - { - getAndCheckElementFromDataset(dataset, StructureSetLabel, "1", "1", "StructureSetModule"); - getAndCheckElementFromDataset(dataset, StructureSetName, "1", "3", "StructureSetModule"); - getAndCheckElementFromDataset(dataset, StructureSetDescription, "1", "3", "StructureSetModule"); - // getAndCheckElementFromDataset(dataset, InstanceNumber, "1", "3", "StructureSetModule"); - getAndCheckElementFromDataset(dataset, StructureSetDate, "1", "2", "StructureSetModule"); - getAndCheckElementFromDataset(dataset, StructureSetTime, "1", "2", "StructureSetModule"); - ReferencedFrameOfReferenceSequence.read(dataset, "1-n", "3", "StructureSetModule"); - StructureSetROISequence.read(dataset, "1-n", "1", "StructureSetModule"); - PredecessorStructureSetSequence.read(dataset, "1-n", "3", "StructureSetModule"); - } - - // --- ROIContourModule (C) --- - if (dataset.tagExists(DCM_ROIContourSequence)) - { - ROIContourSequence.read(dataset, "1-n", "1", "ROIContourModule"); - } - - // --- RTDoseROIModule (C) --- - if (dataset.tagExists(DCM_RTDoseROISequence)) - { - RTDoseROISequence.read(dataset, "1-n", "1", "RTDoseROIModule"); - } - // --- SOPCommonModule (M) --- getAndCheckElementFromDataset(dataset, SOPClassUID, "1", "1", "SOPCommonModule"); getAndCheckElementFromDataset(dataset, SOPInstanceUID, "1", "1", "SOPCommonModule"); @@ -1358,6 +1246,10 @@ OFCondition DRTDoseIOD::read(DcmItem &dataset) ConversionSourceAttributesSequence.read(dataset, "1-n", "1C", "SOPCommonModule"); getAndCheckElementFromDataset(dataset, ContentQualification, "1", "3", "SOPCommonModule"); PrivateDataElementCharacteristicsSequence.read(dataset, "1-n", "3", "SOPCommonModule"); + getAndCheckElementFromDataset(dataset, InstanceOriginStatus, "1", "3", "SOPCommonModule"); + getAndCheckElementFromDataset(dataset, BarcodeValue, "1", "3", "SOPCommonModule"); + ReferencedDefinedProtocolSequence.read(dataset, "1-n", "1C", "SOPCommonModule"); + ReferencedPerformedProtocolSequence.read(dataset, "1-n", "1C", "SOPCommonModule"); // --- CommonInstanceReferenceModule (U) --- ReferencedSeriesSequence.read(dataset, "1-n", "1C", "CommonInstanceReferenceModule"); @@ -1382,6 +1274,7 @@ OFCondition DRTDoseIOD::readPatientData(DcmItem &dataset) getAndCheckElementFromDataset(dataset, PatientID, "1", "2", "PatientModule"); getAndCheckElementFromDataset(dataset, IssuerOfPatientID, "1", "3", "PatientModule"); IssuerOfPatientIDQualifiersSequence.read(dataset, "1-n", "3", "PatientModule"); + getAndCheckElementFromDataset(dataset, TypeOfPatientID, "1", "3", "PatientModule"); getAndCheckElementFromDataset(dataset, PatientBirthDate, "1", "2", "PatientModule"); getAndCheckElementFromDataset(dataset, PatientBirthDateInAlternativeCalendar, "1", "3", "PatientModule"); getAndCheckElementFromDataset(dataset, PatientDeathDateInAlternativeCalendar, "1", "3", "PatientModule"); @@ -1458,6 +1351,7 @@ OFCondition DRTDoseIOD::readStudyData(DcmItem &dataset) PhysiciansOfRecordIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule"); getAndCheckElementFromDataset(dataset, NameOfPhysiciansReadingStudy, "1-n", "3", "GeneralStudyModule"); PhysiciansReadingStudyIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule"); + getAndCheckElementFromDataset(dataset, RequestingService, "1", "3", "GeneralStudyModule"); RequestingServiceCodeSequence.read(dataset, "1-n", "3", "GeneralStudyModule"); ReferencedStudySequence.read(dataset, "1-n", "3", "GeneralStudyModule"); ProcedureCodeSequence.read(dataset, "1-n", "3", "GeneralStudyModule"); @@ -1483,6 +1377,8 @@ OFCondition DRTDoseIOD::readStudyData(DcmItem &dataset) getAndCheckElementFromDataset(dataset, AdditionalPatientHistory, "1", "3", "PatientStudyModule"); getAndCheckElementFromDataset(dataset, AdmissionID, "1", "3", "PatientStudyModule"); IssuerOfAdmissionIDSequence.read(dataset, "1-n", "3", "PatientStudyModule"); + getAndCheckElementFromDataset(dataset, ReasonForVisit, "1", "3", "PatientStudyModule"); + ReasonForVisitCodeSequence.read(dataset, "1-n", "3", "PatientStudyModule"); getAndCheckElementFromDataset(dataset, ServiceEpisodeID, "1", "3", "PatientStudyModule"); IssuerOfServiceEpisodeIDSequence.read(dataset, "1-n", "3", "PatientStudyModule"); getAndCheckElementFromDataset(dataset, ServiceEpisodeDescription, "1", "3", "PatientStudyModule"); @@ -1493,6 +1389,7 @@ OFCondition DRTDoseIOD::readStudyData(DcmItem &dataset) { getAndCheckElementFromDataset(dataset, ClinicalTrialTimePointID, "1", "2", "ClinicalTrialStudyModule"); getAndCheckElementFromDataset(dataset, ClinicalTrialTimePointDescription, "1", "3", "ClinicalTrialStudyModule"); + ClinicalTrialTimePointTypeCodeSequence.read(dataset, "1-n", "3", "ClinicalTrialStudyModule"); getAndCheckElementFromDataset(dataset, LongitudinalTemporalOffsetFromEvent, "1", "3", "ClinicalTrialStudyModule"); getAndCheckElementFromDataset(dataset, LongitudinalTemporalEventType, "1", "1C", "ClinicalTrialStudyModule"); ConsentForClinicalTrialUseSequence.read(dataset, "1-n", "3", "ClinicalTrialStudyModule"); @@ -1528,6 +1425,7 @@ OFCondition DRTDoseIOD::readSeriesData(DcmItem &dataset) getAndCheckElementFromDataset(dataset, PerformedProcedureStepDescription, "1", "3", "RTSeriesModule"); PerformedProtocolCodeSequence.read(dataset, "1-n", "3", "RTSeriesModule"); getAndCheckElementFromDataset(dataset, CommentsOnThePerformedProcedureStep, "1", "3", "RTSeriesModule"); + getAndCheckElementFromDataset(dataset, TreatmentSessionUID, "1", "3", "RTSeriesModule"); // --- ClinicalTrialSeriesModule (U) --- if (dataset.tagExists(DCM_ClinicalTrialCoordinatingCenterName)) @@ -1555,6 +1453,7 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmLongString(PatientID), "1", "2", "PatientModule"); addElementToDataset(result, dataset, new DcmLongString(IssuerOfPatientID), "1", "3", "PatientModule"); if (result.good()) result = IssuerOfPatientIDQualifiersSequence.write(dataset, "1-n" ,"3", "PatientModule"); + addElementToDataset(result, dataset, new DcmCodeString(TypeOfPatientID), "1", "3", "PatientModule"); addElementToDataset(result, dataset, new DcmDate(PatientBirthDate), "1", "2", "PatientModule"); addElementToDataset(result, dataset, new DcmLongString(PatientBirthDateInAlternativeCalendar), "1", "3", "PatientModule"); addElementToDataset(result, dataset, new DcmLongString(PatientDeathDateInAlternativeCalendar), "1", "3", "PatientModule"); @@ -1618,6 +1517,7 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset) if (result.good()) result = PhysiciansOfRecordIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule"); addElementToDataset(result, dataset, new DcmPersonName(NameOfPhysiciansReadingStudy), "1-n", "3", "GeneralStudyModule"); if (result.good()) result = PhysiciansReadingStudyIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule"); + addElementToDataset(result, dataset, new DcmLongString(RequestingService), "1", "3", "GeneralStudyModule"); if (result.good()) result = RequestingServiceCodeSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule"); if (result.good()) result = ReferencedStudySequence.write(dataset, "1-n" ,"3", "GeneralStudyModule"); if (result.good()) result = ProcedureCodeSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule"); @@ -1645,6 +1545,8 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmLongText(AdditionalPatientHistory), "1", "3", "PatientStudyModule"); addElementToDataset(result, dataset, new DcmLongString(AdmissionID), "1", "3", "PatientStudyModule"); if (result.good()) result = IssuerOfAdmissionIDSequence.write(dataset, "1-n" ,"3", "PatientStudyModule"); + addElementToDataset(result, dataset, new DcmUnlimitedText(ReasonForVisit), "1", "3", "PatientStudyModule"); + if (result.good()) result = ReasonForVisitCodeSequence.write(dataset, "1-n" ,"3", "PatientStudyModule"); addElementToDataset(result, dataset, new DcmLongString(ServiceEpisodeID), "1", "3", "PatientStudyModule"); if (result.good()) result = IssuerOfServiceEpisodeIDSequence.write(dataset, "1-n" ,"3", "PatientStudyModule"); addElementToDataset(result, dataset, new DcmLongString(ServiceEpisodeDescription), "1", "3", "PatientStudyModule"); @@ -1656,6 +1558,7 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset) { addElementToDataset(result, dataset, new DcmLongString(ClinicalTrialTimePointID), "1", "2", "ClinicalTrialStudyModule"); addElementToDataset(result, dataset, new DcmShortText(ClinicalTrialTimePointDescription), "1", "3", "ClinicalTrialStudyModule"); + if (result.good()) result = ClinicalTrialTimePointTypeCodeSequence.write(dataset, "1-n" ,"3", "ClinicalTrialStudyModule"); addElementToDataset(result, dataset, new DcmFloatingPointDouble(LongitudinalTemporalOffsetFromEvent), "1", "3", "ClinicalTrialStudyModule"); addElementToDataset(result, dataset, new DcmCodeString(LongitudinalTemporalEventType), "1", "1C", "ClinicalTrialStudyModule"); if (result.good()) result = ConsentForClinicalTrialUseSequence.write(dataset, "1-n" ,"3", "ClinicalTrialStudyModule"); @@ -1681,6 +1584,7 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmLongString(PerformedProcedureStepDescription), "1", "3", "RTSeriesModule"); if (result.good()) result = PerformedProtocolCodeSequence.write(dataset, "1-n" ,"3", "RTSeriesModule"); addElementToDataset(result, dataset, new DcmShortText(CommentsOnThePerformedProcedureStep), "1", "3", "RTSeriesModule"); + addElementToDataset(result, dataset, new DcmUniqueIdentifier(TreatmentSessionUID), "1", "3", "RTSeriesModule"); // --- ClinicalTrialSeriesModule (U) --- if (isClinicalTrialSeriesModulePresent(OFFalse /*complete*/)) @@ -1700,11 +1604,14 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmShortText(InstitutionAddress), "1", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmShortString(StationName), "1", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmLongString(InstitutionalDepartmentName), "1", "3", "GeneralEquipmentModule"); + if (result.good()) result = InstitutionalDepartmentTypeCodeSequence.write(dataset, "1-n" ,"3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmLongString(ManufacturerModelName), "1", "3", "GeneralEquipmentModule"); + addElementToDataset(result, dataset, new DcmUniqueIdentifier(ManufacturerDeviceClassUID), "1-n", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmLongString(DeviceSerialNumber), "1", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmLongString(SoftwareVersions), "1-n", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmLongString(GantryID), "1", "3", "GeneralEquipmentModule"); if (result.good()) result = UDISequence.write(dataset, "1-n" ,"3", "GeneralEquipmentModule"); + addElementToDataset(result, dataset, new DcmUniqueIdentifier(DeviceUID), "1", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmDecimalString(SpatialResolution), "1", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmDate(DateOfLastCalibration), "1-n", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmTime(TimeOfLastCalibration), "1-n", "3", "GeneralEquipmentModule"); @@ -1718,11 +1625,6 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset) // addElementToDataset(result, dataset, new DcmDate(ContentDate), "1", "2C", "GeneralImageModule"); // addElementToDataset(result, dataset, new DcmTime(ContentTime), "1", "2C", "GeneralImageModule"); addElementToDataset(result, dataset, new DcmCodeString(ImageType), "2-n", "3", "GeneralImageModule"); - addElementToDataset(result, dataset, new DcmIntegerString(AcquisitionNumber), "1", "3", "GeneralImageModule"); - addElementToDataset(result, dataset, new DcmDate(AcquisitionDate), "1", "3", "GeneralImageModule"); - addElementToDataset(result, dataset, new DcmTime(AcquisitionTime), "1", "3", "GeneralImageModule"); - addElementToDataset(result, dataset, new DcmDateTime(AcquisitionDateTime), "1", "3", "GeneralImageModule"); - addElementToDataset(result, dataset, new DcmIntegerString(ImagesInAcquisition), "1", "3", "GeneralImageModule"); addElementToDataset(result, dataset, new DcmLongText(ImageComments), "1", "3", "GeneralImageModule"); addElementToDataset(result, dataset, new DcmCodeString(QualityControlImage), "1", "3", "GeneralImageModule"); addElementToDataset(result, dataset, new DcmCodeString(BurnedInAnnotation), "1", "3", "GeneralImageModule"); @@ -1732,8 +1634,10 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmCodeString(LossyImageCompressionMethod), "1-n", "3", "GeneralImageModule"); if (result.good()) result = IconImageSequence.write(dataset, "1-n" ,"3", "GeneralImageModule"); addElementToDataset(result, dataset, new DcmCodeString(PresentationLUTShape), "1", "3", "GeneralImageModule"); - addElementToDataset(result, dataset, new DcmUniqueIdentifier(IrradiationEventUID), "1-n", "3", "GeneralImageModule"); if (result.good()) result = RealWorldValueMappingSequence.write(dataset, "1-n" ,"3", "GeneralImageModule"); + addElementToDataset(result, dataset, new DcmCodeString(ImageLaterality), "1", "3", "GeneralImageModule"); + if (result.good()) result = AnatomicRegionSequence.write(dataset, "1-n" ,"3", "GeneralImageModule"); + if (result.good()) result = PrimaryAnatomicStructureSequence.write(dataset, "1-n" ,"3", "GeneralImageModule"); } // --- ImagePlaneModule (C) --- @@ -1743,6 +1647,7 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmDecimalString(ImageOrientationPatient), "6", "1", "ImagePlaneModule"); addElementToDataset(result, dataset, new DcmDecimalString(ImagePositionPatient), "3", "1", "ImagePlaneModule"); addElementToDataset(result, dataset, new DcmDecimalString(SliceThickness), "1", "2", "ImagePlaneModule"); + addElementToDataset(result, dataset, new DcmDecimalString(SpacingBetweenSlices), "1", "3", "ImagePlaneModule"); addElementToDataset(result, dataset, new DcmDecimalString(SliceLocation), "1", "3", "ImagePlaneModule"); } @@ -1772,6 +1677,8 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmPixelData(PixelData), "1", "1C", "ImagePixelModule"); addElementToDataset(result, dataset, new DcmUniversalResourceIdentifierOrLocator(PixelDataProviderURL), "1", "1C", "ImagePixelModule"); addElementToDataset(result, dataset, new DcmUnsignedShort(PixelPaddingRangeLimit), "1", "1C", "ImagePixelModule"); + addElementToDataset(result, dataset, new DcmOther64bitVeryLong(ExtendedOffsetTable), "1", "3", "ImagePixelModule"); + addElementToDataset(result, dataset, new DcmOther64bitVeryLong(ExtendedOffsetTableLengths), "1", "1C", "ImagePixelModule"); } // --- MultiFrameModule (C) --- @@ -1780,40 +1687,7 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmIntegerString(NumberOfFrames), "1", "1", "MultiFrameModule"); addElementToDataset(result, dataset, new DcmAttributeTag(FrameIncrementPointer), "1-n", "1", "MultiFrameModule"); addElementToDataset(result, dataset, new DcmCodeString(StereoPairsPresent), "1", "3", "MultiFrameModule"); - } - - // --- OverlayPlaneModule (U) --- - if (isOverlayPlaneModulePresent(OFFalse /*complete*/)) - { - addElementToDataset(result, dataset, new DcmUnsignedShort(OverlayRows), "1", "1", "OverlayPlaneModule"); - addElementToDataset(result, dataset, new DcmUnsignedShort(OverlayColumns), "1", "1", "OverlayPlaneModule"); - addElementToDataset(result, dataset, new DcmCodeString(OverlayType), "1", "1", "OverlayPlaneModule"); - addElementToDataset(result, dataset, new DcmSignedShort(OverlayOrigin), "2", "1", "OverlayPlaneModule"); - addElementToDataset(result, dataset, new DcmUnsignedShort(OverlayBitsAllocated), "1", "1", "OverlayPlaneModule"); - addElementToDataset(result, dataset, new DcmUnsignedShort(OverlayBitPosition), "1", "1", "OverlayPlaneModule"); - addElementToDataset(result, dataset, new DcmOtherByteOtherWord(OverlayData), "1", "1", "OverlayPlaneModule"); - addElementToDataset(result, dataset, new DcmLongString(OverlayDescription), "1", "3", "OverlayPlaneModule"); - addElementToDataset(result, dataset, new DcmLongString(OverlaySubtype), "1", "3", "OverlayPlaneModule"); - addElementToDataset(result, dataset, new DcmLongString(OverlayLabel), "1", "3", "OverlayPlaneModule"); - addElementToDataset(result, dataset, new DcmIntegerString(ROIArea), "1", "3", "OverlayPlaneModule"); - addElementToDataset(result, dataset, new DcmDecimalString(ROIMean), "1", "3", "OverlayPlaneModule"); - addElementToDataset(result, dataset, new DcmDecimalString(ROIStandardDeviation), "1", "3", "OverlayPlaneModule"); - } - - // --- MultiFrameOverlayModule (U) --- - if (isMultiFrameOverlayModulePresent(OFFalse /*complete*/)) - { - addElementToDataset(result, dataset, new DcmIntegerString(NumberOfFramesInOverlay), "1", "1", "MultiFrameOverlayModule"); - addElementToDataset(result, dataset, new DcmUnsignedShort(ImageFrameOrigin), "1", "3", "MultiFrameOverlayModule"); - } - - // --- ModalityLUTModule (U) --- - if (isModalityLUTModulePresent(OFFalse /*complete*/)) - { - if (result.good()) result = ModalityLUTSequence.write(dataset, "1-n" ,"1C", "ModalityLUTModule"); - addElementToDataset(result, dataset, new DcmDecimalString(RescaleIntercept), "1", "1C", "ModalityLUTModule"); - addElementToDataset(result, dataset, new DcmDecimalString(RescaleSlope), "1", "1C", "ModalityLUTModule"); - addElementToDataset(result, dataset, new DcmLongString(RescaleType), "1", "1C", "ModalityLUTModule"); + addElementToDataset(result, dataset, new DcmUnsigned64bitVeryLong(EncapsulatedPixelDataValueTotalLength), "1", "3", "MultiFrameModule"); } // --- RTDoseModule (M) --- @@ -1830,6 +1704,7 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmCodeString(SpatialTransformOfDose), "1", "3", "RTDoseModule"); if (result.good()) result = ReferencedSpatialRegistrationSequence.write(dataset, "1-n" ,"2C", "RTDoseModule"); addElementToDataset(result, dataset, new DcmIntegerString(InstanceNumber), "1", "3", "RTDoseModule"); + addElementToDataset(result, dataset, new DcmLongString(EntityLongLabel), "1", "3", "RTDoseModule"); addElementToDataset(result, dataset, new DcmLongString(DoseComment), "1", "3", "RTDoseModule"); addElementToDataset(result, dataset, new DcmDecimalString(NormalizationPoint), "3", "3", "RTDoseModule"); addElementToDataset(result, dataset, new DcmCodeString(DoseSummationType), "1", "1", "RTDoseModule"); @@ -1840,6 +1715,7 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmCodeString(TissueHeterogeneityCorrection), "1-3", "3", "RTDoseModule"); if (result.good()) result = DerivationCodeSequence.write(dataset, "1-n" ,"3", "RTDoseModule"); if (result.good()) result = ReferencedInstanceSequence.write(dataset, "1-n" ,"3", "RTDoseModule"); + if (result.good()) result = PlanOverviewSequence.write(dataset, "1-n" ,"1C", "RTDoseModule"); // --- RTDVHModule (U) --- if (isRTDVHModulePresent(OFFalse /*complete*/)) @@ -1850,32 +1726,6 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset) if (result.good()) result = DVHSequence.write(dataset, "1-n" ,"1", "RTDVHModule"); } - // --- StructureSetModule (C) --- - if (isStructureSetModulePresent(OFFalse /*complete*/)) - { - addElementToDataset(result, dataset, new DcmShortString(StructureSetLabel), "1", "1", "StructureSetModule"); - addElementToDataset(result, dataset, new DcmLongString(StructureSetName), "1", "3", "StructureSetModule"); - addElementToDataset(result, dataset, new DcmShortText(StructureSetDescription), "1", "3", "StructureSetModule"); - // addElementToDataset(result, dataset, new DcmIntegerString(InstanceNumber), "1", "3", "StructureSetModule"); - addElementToDataset(result, dataset, new DcmDate(StructureSetDate), "1", "2", "StructureSetModule"); - addElementToDataset(result, dataset, new DcmTime(StructureSetTime), "1", "2", "StructureSetModule"); - if (result.good()) result = ReferencedFrameOfReferenceSequence.write(dataset, "1-n" ,"3", "StructureSetModule"); - if (result.good()) result = StructureSetROISequence.write(dataset, "1-n" ,"1", "StructureSetModule"); - if (result.good()) result = PredecessorStructureSetSequence.write(dataset, "1-n" ,"3", "StructureSetModule"); - } - - // --- ROIContourModule (C) --- - if (isROIContourModulePresent(OFFalse /*complete*/)) - { - if (result.good()) result = ROIContourSequence.write(dataset, "1-n" ,"1", "ROIContourModule"); - } - - // --- RTDoseROIModule (C) --- - if (isRTDoseROIModulePresent(OFFalse /*complete*/)) - { - if (result.good()) result = RTDoseROISequence.write(dataset, "1-n" ,"1", "RTDoseROIModule"); - } - // --- SOPCommonModule (M) --- addElementToDataset(result, dataset, new DcmUniqueIdentifier(SOPClassUID), "1", "1", "SOPCommonModule"); addElementToDataset(result, dataset, new DcmUniqueIdentifier(SOPInstanceUID), "1", "1", "SOPCommonModule"); @@ -1906,6 +1756,10 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset) if (result.good()) result = ConversionSourceAttributesSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule"); addElementToDataset(result, dataset, new DcmCodeString(ContentQualification), "1", "3", "SOPCommonModule"); if (result.good()) result = PrivateDataElementCharacteristicsSequence.write(dataset, "1-n" ,"3", "SOPCommonModule"); + addElementToDataset(result, dataset, new DcmCodeString(InstanceOriginStatus), "1", "3", "SOPCommonModule"); + addElementToDataset(result, dataset, new DcmLongText(BarcodeValue), "1", "3", "SOPCommonModule"); + if (result.good()) result = ReferencedDefinedProtocolSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule"); + if (result.good()) result = ReferencedPerformedProtocolSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule"); // --- CommonInstanceReferenceModule (U) --- if (isCommonInstanceReferenceModulePresent(OFFalse /*complete*/)) @@ -1969,6 +1823,8 @@ OFBool DRTDoseIOD::isPatientStudyModulePresent(const OFBool /*complete*/) !AdditionalPatientHistory.isEmpty() || !AdmissionID.isEmpty() || !IssuerOfAdmissionIDSequence.isEmpty() || + !ReasonForVisit.isEmpty() || + !ReasonForVisitCodeSequence.isEmpty() || !ServiceEpisodeID.isEmpty() || !IssuerOfServiceEpisodeIDSequence.isEmpty() || !ServiceEpisodeDescription.isEmpty() || @@ -1981,6 +1837,7 @@ OFBool DRTDoseIOD::isClinicalTrialStudyModulePresent(const OFBool /*complete*/) /* check whether at least one attribute is present */ return !ClinicalTrialTimePointID.isEmpty() || !ClinicalTrialTimePointDescription.isEmpty() || + !ClinicalTrialTimePointTypeCodeSequence.isEmpty() || !LongitudinalTemporalOffsetFromEvent.isEmpty() || !LongitudinalTemporalEventType.isEmpty() || !ConsentForClinicalTrialUseSequence.isEmpty(); @@ -2001,11 +1858,6 @@ OFBool DRTDoseIOD::isGeneralImageModulePresent(const OFBool /*complete*/) /* check whether at least one attribute is present */ return !PatientOrientation.isEmpty() || !ImageType.isEmpty() || - !AcquisitionNumber.isEmpty() || - !AcquisitionDate.isEmpty() || - !AcquisitionTime.isEmpty() || - !AcquisitionDateTime.isEmpty() || - !ImagesInAcquisition.isEmpty() || !ImageComments.isEmpty() || !QualityControlImage.isEmpty() || !BurnedInAnnotation.isEmpty() || @@ -2015,8 +1867,10 @@ OFBool DRTDoseIOD::isGeneralImageModulePresent(const OFBool /*complete*/) !LossyImageCompressionMethod.isEmpty() || !IconImageSequence.isEmpty() || !PresentationLUTShape.isEmpty() || - !IrradiationEventUID.isEmpty() || - !RealWorldValueMappingSequence.isEmpty(); + !RealWorldValueMappingSequence.isEmpty() || + !ImageLaterality.isEmpty() || + !AnatomicRegionSequence.isEmpty() || + !PrimaryAnatomicStructureSequence.isEmpty(); } @@ -2034,6 +1888,7 @@ OFBool DRTDoseIOD::isImagePlaneModulePresent(const OFBool complete) !ImageOrientationPatient.isEmpty() || !ImagePositionPatient.isEmpty() || !SliceThickness.isEmpty() || + !SpacingBetweenSlices.isEmpty() || !SliceLocation.isEmpty(); } } @@ -2064,7 +1919,9 @@ OFBool DRTDoseIOD::isImagePixelModulePresent(const OFBool complete) !ColorSpace.isEmpty() || !PixelData.isEmpty() || !PixelDataProviderURL.isEmpty() || - !PixelPaddingRangeLimit.isEmpty(); + !PixelPaddingRangeLimit.isEmpty() || + !ExtendedOffsetTable.isEmpty() || + !ExtendedOffsetTableLengths.isEmpty(); } } @@ -2080,66 +1937,12 @@ OFBool DRTDoseIOD::isMultiFrameModulePresent(const OFBool complete) /* check whether at least one attribute is present */ return !NumberOfFrames.isEmpty() || !FrameIncrementPointer.isEmpty() || - !StereoPairsPresent.isEmpty(); - } -} - - -OFBool DRTDoseIOD::isOverlayPlaneModulePresent(const OFBool complete) -{ - if (complete) - { - /* check whether all mandatory attributes are present */ - return !OverlayRows.isEmpty() && - !OverlayColumns.isEmpty() && - !OverlayType.isEmpty() && - !OverlayOrigin.isEmpty() && - !OverlayBitsAllocated.isEmpty() && - !OverlayBitPosition.isEmpty() && - !OverlayData.isEmpty(); - } else { - /* check whether at least one attribute is present */ - return !OverlayRows.isEmpty() || - !OverlayColumns.isEmpty() || - !OverlayType.isEmpty() || - !OverlayOrigin.isEmpty() || - !OverlayBitsAllocated.isEmpty() || - !OverlayBitPosition.isEmpty() || - !OverlayData.isEmpty() || - !OverlayDescription.isEmpty() || - !OverlaySubtype.isEmpty() || - !OverlayLabel.isEmpty() || - !ROIArea.isEmpty() || - !ROIMean.isEmpty() || - !ROIStandardDeviation.isEmpty(); + !StereoPairsPresent.isEmpty() || + !EncapsulatedPixelDataValueTotalLength.isEmpty(); } } -OFBool DRTDoseIOD::isMultiFrameOverlayModulePresent(const OFBool complete) -{ - if (complete) - { - /* check whether all mandatory attributes are present */ - return !NumberOfFramesInOverlay.isEmpty(); - } else { - /* check whether at least one attribute is present */ - return !NumberOfFramesInOverlay.isEmpty() || - !ImageFrameOrigin.isEmpty(); - } -} - - -OFBool DRTDoseIOD::isModalityLUTModulePresent(const OFBool /*complete*/) -{ - /* check whether at least one attribute is present */ - return !ModalityLUTSequence.isEmpty() || - !RescaleIntercept.isEmpty() || - !RescaleSlope.isEmpty() || - !RescaleType.isEmpty(); -} - - OFBool DRTDoseIOD::isRTDVHModulePresent(const OFBool complete) { if (complete) @@ -2157,41 +1960,6 @@ OFBool DRTDoseIOD::isRTDVHModulePresent(const OFBool complete) } -OFBool DRTDoseIOD::isStructureSetModulePresent(const OFBool complete) -{ - if (complete) - { - /* check whether all mandatory attributes are present */ - return !StructureSetLabel.isEmpty() && - !StructureSetROISequence.isEmpty(); - } else { - /* check whether at least one attribute is present */ - return !StructureSetLabel.isEmpty() || - !StructureSetName.isEmpty() || - !StructureSetDescription.isEmpty() || - !StructureSetDate.isEmpty() || - !StructureSetTime.isEmpty() || - !ReferencedFrameOfReferenceSequence.isEmpty() || - !StructureSetROISequence.isEmpty() || - !PredecessorStructureSetSequence.isEmpty(); - } -} - - -OFBool DRTDoseIOD::isROIContourModulePresent(const OFBool /*complete*/) -{ - /* check whether at least one attribute is present */ - return !ROIContourSequence.isEmpty(); -} - - -OFBool DRTDoseIOD::isRTDoseROIModulePresent(const OFBool /*complete*/) -{ - /* check whether at least one attribute is present */ - return !RTDoseROISequence.isEmpty(); -} - - OFBool DRTDoseIOD::isCommonInstanceReferenceModulePresent(const OFBool /*complete*/) { /* check whether at least one attribute is present */ @@ -2213,36 +1981,6 @@ OFCondition DRTDoseIOD::getAccessionNumber(OFString &value, const signed long po } -OFCondition DRTDoseIOD::getAcquisitionDate(OFString &value, const signed long pos) const -{ - return getStringValueFromElement(AcquisitionDate, value, pos); -} - - -OFCondition DRTDoseIOD::getAcquisitionDateTime(OFString &value, const signed long pos) const -{ - return getStringValueFromElement(AcquisitionDateTime, value, pos); -} - - -OFCondition DRTDoseIOD::getAcquisitionNumber(OFString &value, const signed long pos) const -{ - return getStringValueFromElement(AcquisitionNumber, value, pos); -} - - -OFCondition DRTDoseIOD::getAcquisitionNumber(Sint32 &value, const unsigned long pos) const -{ - return OFconst_cast(DcmIntegerString &, AcquisitionNumber).getSint32(value, pos); -} - - -OFCondition DRTDoseIOD::getAcquisitionTime(OFString &value, const signed long pos) const -{ - return getStringValueFromElement(AcquisitionTime, value, pos); -} - - OFCondition DRTDoseIOD::getAdditionalPatientHistory(OFString &value, const signed long pos) const { return getStringValueFromElement(AdditionalPatientHistory, value, pos); @@ -2273,6 +2011,12 @@ OFCondition DRTDoseIOD::getAuthorizationEquipmentCertificationNumber(OFString &v } +OFCondition DRTDoseIOD::getBarcodeValue(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(BarcodeValue, value, pos); +} + + OFCondition DRTDoseIOD::getBitsAllocated(Uint16 &value, const unsigned long pos) const { return OFconst_cast(DcmUnsignedShort &, BitsAllocated).getUint16(value, pos); @@ -2486,6 +2230,12 @@ OFCondition DRTDoseIOD::getDeviceSerialNumber(OFString &value, const signed long } +OFCondition DRTDoseIOD::getDeviceUID(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(DeviceUID, value, pos); +} + + OFCondition DRTDoseIOD::getDoseComment(OFString &value, const signed long pos) const { return getStringValueFromElement(DoseComment, value, pos); @@ -2522,12 +2272,54 @@ OFCondition DRTDoseIOD::getDoseUnits(OFString &value, const signed long pos) con } +OFCondition DRTDoseIOD::getEncapsulatedPixelDataValueTotalLength(Uint64 &value, const unsigned long pos) const +{ + return OFconst_cast(DcmUnsigned64bitVeryLong &, EncapsulatedPixelDataValueTotalLength).getUint64(value, pos); +} + + +OFCondition DRTDoseIOD::getEntityLongLabel(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(EntityLongLabel, value, pos); +} + + OFCondition DRTDoseIOD::getEthnicGroup(OFString &value, const signed long pos) const { return getStringValueFromElement(EthnicGroup, value, pos); } +OFCondition DRTDoseIOD::getExtendedOffsetTable(Uint64 *&value, unsigned long *count) const +{ + OFCondition result = OFconst_cast(DcmOther64bitVeryLong &, ExtendedOffsetTable).getUint64Array(value); + /* set optional count parameter */ + if (count != NULL) + { + if (result.good()) + *count = OFconst_cast(DcmOther64bitVeryLong &, ExtendedOffsetTable).getLength() / sizeof(Uint64); + else + *count = 0; + } + return result; +} + + +OFCondition DRTDoseIOD::getExtendedOffsetTableLengths(Uint64 *&value, unsigned long *count) const +{ + OFCondition result = OFconst_cast(DcmOther64bitVeryLong &, ExtendedOffsetTableLengths).getUint64Array(value); + /* set optional count parameter */ + if (count != NULL) + { + if (result.good()) + *count = OFconst_cast(DcmOther64bitVeryLong &, ExtendedOffsetTableLengths).getLength() / sizeof(Uint64); + else + *count = 0; + } + return result; +} + + OFCondition DRTDoseIOD::getFrameIncrementPointer(OFString &value, const signed long pos) const { return getStringValueFromElement(FrameIncrementPointer, value, pos); @@ -2612,9 +2404,9 @@ OFCondition DRTDoseIOD::getImageComments(OFString &value, const signed long pos) } -OFCondition DRTDoseIOD::getImageFrameOrigin(Uint16 &value, const unsigned long pos) const +OFCondition DRTDoseIOD::getImageLaterality(OFString &value, const signed long pos) const { - return OFconst_cast(DcmUnsignedShort &, ImageFrameOrigin).getUint16(value, pos); + return getStringValueFromElement(ImageLaterality, value, pos); } @@ -2660,18 +2452,6 @@ OFCondition DRTDoseIOD::getImageType(OFString &value, const signed long pos) con } -OFCondition DRTDoseIOD::getImagesInAcquisition(OFString &value, const signed long pos) const -{ - return getStringValueFromElement(ImagesInAcquisition, value, pos); -} - - -OFCondition DRTDoseIOD::getImagesInAcquisition(Sint32 &value, const unsigned long pos) const -{ - return OFconst_cast(DcmIntegerString &, ImagesInAcquisition).getSint32(value, pos); -} - - OFCondition DRTDoseIOD::getInstanceCoercionDateTime(OFString &value, const signed long pos) const { return getStringValueFromElement(InstanceCoercionDateTime, value, pos); @@ -2708,6 +2488,12 @@ OFCondition DRTDoseIOD::getInstanceNumber(Sint32 &value, const unsigned long pos } +OFCondition DRTDoseIOD::getInstanceOriginStatus(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(InstanceOriginStatus, value, pos); +} + + OFCondition DRTDoseIOD::getInstitutionAddress(OFString &value, const signed long pos) const { return getStringValueFromElement(InstitutionAddress, value, pos); @@ -2726,12 +2512,6 @@ OFCondition DRTDoseIOD::getInstitutionalDepartmentName(OFString &value, const si } -OFCondition DRTDoseIOD::getIrradiationEventUID(OFString &value, const signed long pos) const -{ - return getStringValueFromElement(IrradiationEventUID, value, pos); -} - - OFCondition DRTDoseIOD::getIssuerOfPatientID(OFString &value, const signed long pos) const { return getStringValueFromElement(IssuerOfPatientID, value, pos); @@ -2804,6 +2584,12 @@ OFCondition DRTDoseIOD::getManufacturer(OFString &value, const signed long pos) } +OFCondition DRTDoseIOD::getManufacturerDeviceClassUID(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(ManufacturerDeviceClassUID, value, pos); +} + + OFCondition DRTDoseIOD::getManufacturerModelName(OFString &value, const signed long pos) const { return getStringValueFromElement(ManufacturerModelName, value, pos); @@ -2882,18 +2668,6 @@ OFCondition DRTDoseIOD::getNumberOfFrames(Sint32 &value, const unsigned long pos } -OFCondition DRTDoseIOD::getNumberOfFramesInOverlay(OFString &value, const signed long pos) const -{ - return getStringValueFromElement(NumberOfFramesInOverlay, value, pos); -} - - -OFCondition DRTDoseIOD::getNumberOfFramesInOverlay(Sint32 &value, const unsigned long pos) const -{ - return OFconst_cast(DcmIntegerString &, NumberOfFramesInOverlay).getSint32(value, pos); -} - - OFCondition DRTDoseIOD::getOccupation(OFString &value, const signed long pos) const { return getStringValueFromElement(Occupation, value, pos); @@ -2918,60 +2692,6 @@ OFCondition DRTDoseIOD::getOtherPatientNames(OFString &value, const signed long } -OFCondition DRTDoseIOD::getOverlayBitPosition(Uint16 &value, const unsigned long pos) const -{ - return OFconst_cast(DcmUnsignedShort &, OverlayBitPosition).getUint16(value, pos); -} - - -OFCondition DRTDoseIOD::getOverlayBitsAllocated(Uint16 &value, const unsigned long pos) const -{ - return OFconst_cast(DcmUnsignedShort &, OverlayBitsAllocated).getUint16(value, pos); -} - - -OFCondition DRTDoseIOD::getOverlayColumns(Uint16 &value, const unsigned long pos) const -{ - return OFconst_cast(DcmUnsignedShort &, OverlayColumns).getUint16(value, pos); -} - - -OFCondition DRTDoseIOD::getOverlayDescription(OFString &value, const signed long pos) const -{ - return getStringValueFromElement(OverlayDescription, value, pos); -} - - -OFCondition DRTDoseIOD::getOverlayLabel(OFString &value, const signed long pos) const -{ - return getStringValueFromElement(OverlayLabel, value, pos); -} - - -OFCondition DRTDoseIOD::getOverlayOrigin(Sint16 &value, const unsigned long pos) const -{ - return OFconst_cast(DcmSignedShort &, OverlayOrigin).getSint16(value, pos); -} - - -OFCondition DRTDoseIOD::getOverlayRows(Uint16 &value, const unsigned long pos) const -{ - return OFconst_cast(DcmUnsignedShort &, OverlayRows).getUint16(value, pos); -} - - -OFCondition DRTDoseIOD::getOverlaySubtype(OFString &value, const signed long pos) const -{ - return getStringValueFromElement(OverlaySubtype, value, pos); -} - - -OFCondition DRTDoseIOD::getOverlayType(OFString &value, const signed long pos) const -{ - return getStringValueFromElement(OverlayType, value, pos); -} - - OFCondition DRTDoseIOD::getPatientAge(OFString &value, const signed long pos) const { return getStringValueFromElement(PatientAge, value, pos); @@ -3248,39 +2968,9 @@ OFCondition DRTDoseIOD::getQueryRetrieveView(OFString &value, const signed long } -OFCondition DRTDoseIOD::getROIArea(OFString &value, const signed long pos) const -{ - return getStringValueFromElement(ROIArea, value, pos); -} - - -OFCondition DRTDoseIOD::getROIArea(Sint32 &value, const unsigned long pos) const -{ - return OFconst_cast(DcmIntegerString &, ROIArea).getSint32(value, pos); -} - - -OFCondition DRTDoseIOD::getROIMean(OFString &value, const signed long pos) const -{ - return getStringValueFromElement(ROIMean, value, pos); -} - - -OFCondition DRTDoseIOD::getROIMean(Float64 &value, const unsigned long pos) const -{ - return OFconst_cast(DcmDecimalString &, ROIMean).getFloat64(value, pos); -} - - -OFCondition DRTDoseIOD::getROIStandardDeviation(OFString &value, const signed long pos) const -{ - return getStringValueFromElement(ROIStandardDeviation, value, pos); -} - - -OFCondition DRTDoseIOD::getROIStandardDeviation(Float64 &value, const unsigned long pos) const +OFCondition DRTDoseIOD::getReasonForVisit(OFString &value, const signed long pos) const { - return OFconst_cast(DcmDecimalString &, ROIStandardDeviation).getFloat64(value, pos); + return getStringValueFromElement(ReasonForVisit, value, pos); } @@ -3323,33 +3013,9 @@ OFCondition DRTDoseIOD::getRelatedGeneralSOPClassUID(OFString &value, const sign } -OFCondition DRTDoseIOD::getRescaleIntercept(OFString &value, const signed long pos) const -{ - return getStringValueFromElement(RescaleIntercept, value, pos); -} - - -OFCondition DRTDoseIOD::getRescaleIntercept(Float64 &value, const unsigned long pos) const -{ - return OFconst_cast(DcmDecimalString &, RescaleIntercept).getFloat64(value, pos); -} - - -OFCondition DRTDoseIOD::getRescaleSlope(OFString &value, const signed long pos) const +OFCondition DRTDoseIOD::getRequestingService(OFString &value, const signed long pos) const { - return getStringValueFromElement(RescaleSlope, value, pos); -} - - -OFCondition DRTDoseIOD::getRescaleSlope(Float64 &value, const unsigned long pos) const -{ - return OFconst_cast(DcmDecimalString &, RescaleSlope).getFloat64(value, pos); -} - - -OFCondition DRTDoseIOD::getRescaleType(OFString &value, const signed long pos) const -{ - return getStringValueFromElement(RescaleType, value, pos); + return getStringValueFromElement(RequestingService, value, pos); } @@ -3503,6 +3169,18 @@ OFCondition DRTDoseIOD::getSoftwareVersions(OFString &value, const signed long p } +OFCondition DRTDoseIOD::getSpacingBetweenSlices(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(SpacingBetweenSlices, value, pos); +} + + +OFCondition DRTDoseIOD::getSpacingBetweenSlices(Float64 &value, const unsigned long pos) const +{ + return OFconst_cast(DcmDecimalString &, SpacingBetweenSlices).getFloat64(value, pos); +} + + OFCondition DRTDoseIOD::getSpatialResolution(OFString &value, const signed long pos) const { return getStringValueFromElement(SpatialResolution, value, pos); @@ -3557,36 +3235,6 @@ OFCondition DRTDoseIOD::getStrainNomenclature(OFString &value, const signed long } -OFCondition DRTDoseIOD::getStructureSetDate(OFString &value, const signed long pos) const -{ - return getStringValueFromElement(StructureSetDate, value, pos); -} - - -OFCondition DRTDoseIOD::getStructureSetDescription(OFString &value, const signed long pos) const -{ - return getStringValueFromElement(StructureSetDescription, value, pos); -} - - -OFCondition DRTDoseIOD::getStructureSetLabel(OFString &value, const signed long pos) const -{ - return getStringValueFromElement(StructureSetLabel, value, pos); -} - - -OFCondition DRTDoseIOD::getStructureSetName(OFString &value, const signed long pos) const -{ - return getStringValueFromElement(StructureSetName, value, pos); -} - - -OFCondition DRTDoseIOD::getStructureSetTime(OFString &value, const signed long pos) const -{ - return getStringValueFromElement(StructureSetTime, value, pos); -} - - OFCondition DRTDoseIOD::getStudyDate(OFString &value, const signed long pos) const { return getStringValueFromElement(StudyDate, value, pos); @@ -3635,47 +3283,23 @@ OFCondition DRTDoseIOD::getTissueHeterogeneityCorrection(OFString &value, const } -OFCondition DRTDoseIOD::setAccessionNumber(const OFString &value, const OFBool check) +OFCondition DRTDoseIOD::getTreatmentSessionUID(OFString &value, const signed long pos) const { - OFCondition result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = AccessionNumber.putOFStringArray(value); - return result; + return getStringValueFromElement(TreatmentSessionUID, value, pos); } -OFCondition DRTDoseIOD::setAcquisitionDate(const OFString &value, const OFBool check) +OFCondition DRTDoseIOD::getTypeOfPatientID(OFString &value, const signed long pos) const { - OFCondition result = (check) ? DcmDate::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = AcquisitionDate.putOFStringArray(value); - return result; + return getStringValueFromElement(TypeOfPatientID, value, pos); } -OFCondition DRTDoseIOD::setAcquisitionDateTime(const OFString &value, const OFBool check) -{ - OFCondition result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = AcquisitionDateTime.putOFStringArray(value); - return result; -} - - -OFCondition DRTDoseIOD::setAcquisitionNumber(const OFString &value, const OFBool check) -{ - OFCondition result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = AcquisitionNumber.putOFStringArray(value); - return result; -} - - -OFCondition DRTDoseIOD::setAcquisitionTime(const OFString &value, const OFBool check) +OFCondition DRTDoseIOD::setAccessionNumber(const OFString &value, const OFBool check) { - OFCondition result = (check) ? DcmTime::checkStringValue(value, "1") : EC_Normal; + OFCondition result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; if (result.good()) - result = AcquisitionTime.putOFStringArray(value); + result = AccessionNumber.putOFStringArray(value); return result; } @@ -3725,6 +3349,15 @@ OFCondition DRTDoseIOD::setAuthorizationEquipmentCertificationNumber(const OFStr } +OFCondition DRTDoseIOD::setBarcodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmLongText::checkStringValue(value) : EC_Normal; + if (result.good()) + result = BarcodeValue.putOFStringArray(value); + return result; +} + + OFCondition DRTDoseIOD::setBitsAllocated(const Uint16 value, const unsigned long pos) { return BitsAllocated.putUint16(value, pos); @@ -3989,6 +3622,15 @@ OFCondition DRTDoseIOD::setDeviceSerialNumber(const OFString &value, const OFBoo } +OFCondition DRTDoseIOD::setDeviceUID(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = DeviceUID.putOFStringArray(value); + return result; +} + + OFCondition DRTDoseIOD::setDoseComment(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; @@ -4034,6 +3676,21 @@ OFCondition DRTDoseIOD::setDoseUnits(const OFString &value, const OFBool check) } +OFCondition DRTDoseIOD::setEncapsulatedPixelDataValueTotalLength(const Uint64 value, const unsigned long pos) +{ + return EncapsulatedPixelDataValueTotalLength.putUint64(value, pos); +} + + +OFCondition DRTDoseIOD::setEntityLongLabel(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = EntityLongLabel.putOFStringArray(value); + return result; +} + + OFCondition DRTDoseIOD::setEthnicGroup(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; @@ -4043,6 +3700,18 @@ OFCondition DRTDoseIOD::setEthnicGroup(const OFString &value, const OFBool check } +OFCondition DRTDoseIOD::setExtendedOffsetTable(const Uint64 *value, const unsigned long count) +{ + return ExtendedOffsetTable.putUint64Array(value, count); +} + + +OFCondition DRTDoseIOD::setExtendedOffsetTableLengths(const Uint64 *value, const unsigned long count) +{ + return ExtendedOffsetTableLengths.putUint64Array(value, count); +} + + OFCondition DRTDoseIOD::setFrameIncrementPointer(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmAttributeTag::checkStringValue(value, "1-n") : EC_Normal; @@ -4112,9 +3781,12 @@ OFCondition DRTDoseIOD::setImageComments(const OFString &value, const OFBool che } -OFCondition DRTDoseIOD::setImageFrameOrigin(const Uint16 value, const unsigned long pos) +OFCondition DRTDoseIOD::setImageLaterality(const OFString &value, const OFBool check) { - return ImageFrameOrigin.putUint16(value, pos); + OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ImageLaterality.putOFStringArray(value); + return result; } @@ -4145,15 +3817,6 @@ OFCondition DRTDoseIOD::setImageType(const OFString &value, const OFBool check) } -OFCondition DRTDoseIOD::setImagesInAcquisition(const OFString &value, const OFBool check) -{ - OFCondition result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ImagesInAcquisition.putOFStringArray(value); - return result; -} - - OFCondition DRTDoseIOD::setInstanceCoercionDateTime(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; @@ -4199,6 +3862,15 @@ OFCondition DRTDoseIOD::setInstanceNumber(const OFString &value, const OFBool ch } +OFCondition DRTDoseIOD::setInstanceOriginStatus(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = InstanceOriginStatus.putOFStringArray(value); + return result; +} + + OFCondition DRTDoseIOD::setInstitutionAddress(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal; @@ -4226,15 +3898,6 @@ OFCondition DRTDoseIOD::setInstitutionalDepartmentName(const OFString &value, co } -OFCondition DRTDoseIOD::setIrradiationEventUID(const OFString &value, const OFBool check) -{ - OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1-n") : EC_Normal; - if (result.good()) - result = IrradiationEventUID.putOFStringArray(value); - return result; -} - - OFCondition DRTDoseIOD::setIssuerOfPatientID(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; @@ -4319,6 +3982,15 @@ OFCondition DRTDoseIOD::setManufacturer(const OFString &value, const OFBool chec } +OFCondition DRTDoseIOD::setManufacturerDeviceClassUID(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1-n") : EC_Normal; + if (result.good()) + result = ManufacturerDeviceClassUID.putOFStringArray(value); + return result; +} + + OFCondition DRTDoseIOD::setManufacturerModelName(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; @@ -4391,15 +4063,6 @@ OFCondition DRTDoseIOD::setNumberOfFrames(const OFString &value, const OFBool ch } -OFCondition DRTDoseIOD::setNumberOfFramesInOverlay(const OFString &value, const OFBool check) -{ - OFCondition result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = NumberOfFramesInOverlay.putOFStringArray(value); - return result; -} - - OFCondition DRTDoseIOD::setOccupation(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; @@ -4436,72 +4099,6 @@ OFCondition DRTDoseIOD::setOtherPatientNames(const OFString &value, const OFBool } -OFCondition DRTDoseIOD::setOverlayBitPosition(const Uint16 value, const unsigned long pos) -{ - return OverlayBitPosition.putUint16(value, pos); -} - - -OFCondition DRTDoseIOD::setOverlayBitsAllocated(const Uint16 value, const unsigned long pos) -{ - return OverlayBitsAllocated.putUint16(value, pos); -} - - -OFCondition DRTDoseIOD::setOverlayColumns(const Uint16 value, const unsigned long pos) -{ - return OverlayColumns.putUint16(value, pos); -} - - -OFCondition DRTDoseIOD::setOverlayDescription(const OFString &value, const OFBool check) -{ - OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = OverlayDescription.putOFStringArray(value); - return result; -} - - -OFCondition DRTDoseIOD::setOverlayLabel(const OFString &value, const OFBool check) -{ - OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = OverlayLabel.putOFStringArray(value); - return result; -} - - -OFCondition DRTDoseIOD::setOverlayOrigin(const Sint16 value, const unsigned long pos) -{ - return OverlayOrigin.putSint16(value, pos); -} - - -OFCondition DRTDoseIOD::setOverlayRows(const Uint16 value, const unsigned long pos) -{ - return OverlayRows.putUint16(value, pos); -} - - -OFCondition DRTDoseIOD::setOverlaySubtype(const OFString &value, const OFBool check) -{ - OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = OverlaySubtype.putOFStringArray(value); - return result; -} - - -OFCondition DRTDoseIOD::setOverlayType(const OFString &value, const OFBool check) -{ - OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = OverlayType.putOFStringArray(value); - return result; -} - - OFCondition DRTDoseIOD::setPatientAge(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmAgeString::checkStringValue(value, "1") : EC_Normal; @@ -4847,29 +4444,11 @@ OFCondition DRTDoseIOD::setQueryRetrieveView(const OFString &value, const OFBool } -OFCondition DRTDoseIOD::setROIArea(const OFString &value, const OFBool check) -{ - OFCondition result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ROIArea.putOFStringArray(value); - return result; -} - - -OFCondition DRTDoseIOD::setROIMean(const OFString &value, const OFBool check) +OFCondition DRTDoseIOD::setReasonForVisit(const OFString &value, const OFBool check) { - OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ROIMean.putOFStringArray(value); - return result; -} - - -OFCondition DRTDoseIOD::setROIStandardDeviation(const OFString &value, const OFBool check) -{ - OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; + OFCondition result = (check) ? DcmUnlimitedText::checkStringValue(value) : EC_Normal; if (result.good()) - result = ROIStandardDeviation.putOFStringArray(value); + result = ReasonForVisit.putOFStringArray(value); return result; } @@ -4913,29 +4492,11 @@ OFCondition DRTDoseIOD::setRelatedGeneralSOPClassUID(const OFString &value, cons } -OFCondition DRTDoseIOD::setRescaleIntercept(const OFString &value, const OFBool check) -{ - OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = RescaleIntercept.putOFStringArray(value); - return result; -} - - -OFCondition DRTDoseIOD::setRescaleSlope(const OFString &value, const OFBool check) -{ - OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = RescaleSlope.putOFStringArray(value); - return result; -} - - -OFCondition DRTDoseIOD::setRescaleType(const OFString &value, const OFBool check) +OFCondition DRTDoseIOD::setRequestingService(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; if (result.good()) - result = RescaleType.putOFStringArray(value); + result = RequestingService.putOFStringArray(value); return result; } @@ -5129,6 +4690,15 @@ OFCondition DRTDoseIOD::setSoftwareVersions(const OFString &value, const OFBool } +OFCondition DRTDoseIOD::setSpacingBetweenSlices(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = SpacingBetweenSlices.putOFStringArray(value); + return result; +} + + OFCondition DRTDoseIOD::setSpatialResolution(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; @@ -5201,51 +4771,6 @@ OFCondition DRTDoseIOD::setStrainNomenclature(const OFString &value, const OFBoo } -OFCondition DRTDoseIOD::setStructureSetDate(const OFString &value, const OFBool check) -{ - OFCondition result = (check) ? DcmDate::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = StructureSetDate.putOFStringArray(value); - return result; -} - - -OFCondition DRTDoseIOD::setStructureSetDescription(const OFString &value, const OFBool check) -{ - OFCondition result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal; - if (result.good()) - result = StructureSetDescription.putOFStringArray(value); - return result; -} - - -OFCondition DRTDoseIOD::setStructureSetLabel(const OFString &value, const OFBool check) -{ - OFCondition result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = StructureSetLabel.putOFStringArray(value); - return result; -} - - -OFCondition DRTDoseIOD::setStructureSetName(const OFString &value, const OFBool check) -{ - OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = StructureSetName.putOFStringArray(value); - return result; -} - - -OFCondition DRTDoseIOD::setStructureSetTime(const OFString &value, const OFBool check) -{ - OFCondition result = (check) ? DcmTime::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = StructureSetTime.putOFStringArray(value); - return result; -} - - OFCondition DRTDoseIOD::setStudyDate(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmDate::checkStringValue(value, "1") : EC_Normal; @@ -5318,4 +4843,22 @@ OFCondition DRTDoseIOD::setTissueHeterogeneityCorrection(const OFString &value, } +OFCondition DRTDoseIOD::setTreatmentSessionUID(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = TreatmentSessionUID.putOFStringArray(value); + return result; +} + + +OFCondition DRTDoseIOD::setTypeOfPatientID(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = TypeOfPatientID.putOFStringArray(value); + return result; +} + + // end of source file diff --git a/dcmrt/libsrc/drtdrs.cc b/dcmrt/libsrc/drtdrs.cc index eb7d44f8..6b9b3240 100644 --- a/dcmrt/libsrc/drtdrs.cc +++ b/dcmrt/libsrc/drtdrs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTDoseReferenceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -909,10 +909,12 @@ OFCondition DRTDoseReferenceSequence::gotoFirstItem() OFCondition DRTDoseReferenceSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtds.cc b/dcmrt/libsrc/drtds.cc index 40c8d5b4..94b9e772 100644 --- a/dcmrt/libsrc/drtds.cc +++ b/dcmrt/libsrc/drtds.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTDeviceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -982,10 +982,12 @@ OFCondition DRTDeviceSequence::gotoFirstItem() OFCondition DRTDeviceSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtdspcs.cc b/dcmrt/libsrc/drtdspcs.cc index e3a9c363..3b91a40f 100644 --- a/dcmrt/libsrc/drtdspcs.cc +++ b/dcmrt/libsrc/drtdspcs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTDigitalSignaturePurposeCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -656,10 +656,12 @@ OFCondition DRTDigitalSignaturePurposeCodeSequence::gotoFirstItem() OFCondition DRTDigitalSignaturePurposeCodeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtdss.cc b/dcmrt/libsrc/drtdss.cc index dd10c99d..c325bffe 100644 --- a/dcmrt/libsrc/drtdss.cc +++ b/dcmrt/libsrc/drtdss.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTDigitalSignaturesSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -467,10 +467,12 @@ OFCondition DRTDigitalSignaturesSequence::gotoFirstItem() OFCondition DRTDigitalSignaturesSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtdtcs.cc b/dcmrt/libsrc/drtdtcs.cc new file mode 100644 index 00000000..b7262cbf --- /dev/null +++ b/dcmrt/libsrc/drtdtcs.cc @@ -0,0 +1,959 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTDeviceTypeCodeSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtdtcs.h" + + +// --- item class --- + +DRTDeviceTypeCodeSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + CodeMeaning(DCM_CodeMeaning), + CodeValue(DCM_CodeValue), + CodingSchemeDesignator(DCM_CodingSchemeDesignator), + CodingSchemeVersion(DCM_CodingSchemeVersion), + ContextGroupExtensionCreatorUID(DCM_ContextGroupExtensionCreatorUID), + ContextGroupExtensionFlag(DCM_ContextGroupExtensionFlag), + ContextGroupLocalVersion(DCM_ContextGroupLocalVersion), + ContextGroupVersion(DCM_ContextGroupVersion), + ContextIdentifier(DCM_ContextIdentifier), + ContextUID(DCM_ContextUID), + EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), + LongCodeValue(DCM_LongCodeValue), + MappingResource(DCM_MappingResource), + MappingResourceName(DCM_MappingResourceName), + MappingResourceUID(DCM_MappingResourceUID), + URNCodeValue(DCM_URNCodeValue) +{ +} + + +DRTDeviceTypeCodeSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + CodeMeaning(copy.CodeMeaning), + CodeValue(copy.CodeValue), + CodingSchemeDesignator(copy.CodingSchemeDesignator), + CodingSchemeVersion(copy.CodingSchemeVersion), + ContextGroupExtensionCreatorUID(copy.ContextGroupExtensionCreatorUID), + ContextGroupExtensionFlag(copy.ContextGroupExtensionFlag), + ContextGroupLocalVersion(copy.ContextGroupLocalVersion), + ContextGroupVersion(copy.ContextGroupVersion), + ContextIdentifier(copy.ContextIdentifier), + ContextUID(copy.ContextUID), + EquivalentCodeSequence(copy.EquivalentCodeSequence), + LongCodeValue(copy.LongCodeValue), + MappingResource(copy.MappingResource), + MappingResourceName(copy.MappingResourceName), + MappingResourceUID(copy.MappingResourceUID), + URNCodeValue(copy.URNCodeValue) +{ +} + + +DRTDeviceTypeCodeSequence::Item::~Item() +{ +} + + +DRTDeviceTypeCodeSequence::Item &DRTDeviceTypeCodeSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + CodeMeaning = copy.CodeMeaning; + CodeValue = copy.CodeValue; + CodingSchemeDesignator = copy.CodingSchemeDesignator; + CodingSchemeVersion = copy.CodingSchemeVersion; + ContextGroupExtensionCreatorUID = copy.ContextGroupExtensionCreatorUID; + ContextGroupExtensionFlag = copy.ContextGroupExtensionFlag; + ContextGroupLocalVersion = copy.ContextGroupLocalVersion; + ContextGroupVersion = copy.ContextGroupVersion; + ContextIdentifier = copy.ContextIdentifier; + ContextUID = copy.ContextUID; + EquivalentCodeSequence = copy.EquivalentCodeSequence; + LongCodeValue = copy.LongCodeValue; + MappingResource = copy.MappingResource; + MappingResourceName = copy.MappingResourceName; + MappingResourceUID = copy.MappingResourceUID; + URNCodeValue = copy.URNCodeValue; + } + return *this; +} + + +void DRTDeviceTypeCodeSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + CodeValue.clear(); + CodingSchemeDesignator.clear(); + CodingSchemeVersion.clear(); + CodeMeaning.clear(); + LongCodeValue.clear(); + URNCodeValue.clear(); + EquivalentCodeSequence.clear(); + ContextIdentifier.clear(); + ContextUID.clear(); + MappingResource.clear(); + MappingResourceUID.clear(); + MappingResourceName.clear(); + ContextGroupVersion.clear(); + ContextGroupExtensionFlag.clear(); + ContextGroupLocalVersion.clear(); + ContextGroupExtensionCreatorUID.clear(); + } +} + + +OFBool DRTDeviceTypeCodeSequence::Item::isEmpty() +{ + return CodeValue.isEmpty() && + CodingSchemeDesignator.isEmpty() && + CodingSchemeVersion.isEmpty() && + CodeMeaning.isEmpty() && + LongCodeValue.isEmpty() && + URNCodeValue.isEmpty() && + EquivalentCodeSequence.isEmpty() && + ContextIdentifier.isEmpty() && + ContextUID.isEmpty() && + MappingResource.isEmpty() && + MappingResourceUID.isEmpty() && + MappingResourceName.isEmpty() && + ContextGroupVersion.isEmpty() && + ContextGroupExtensionFlag.isEmpty() && + ContextGroupLocalVersion.isEmpty() && + ContextGroupExtensionCreatorUID.isEmpty(); +} + + +OFBool DRTDeviceTypeCodeSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTDeviceTypeCodeSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "DeviceTypeCodeSequence"); + getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "DeviceTypeCodeSequence"); + getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "DeviceTypeCodeSequence"); + getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "DeviceTypeCodeSequence"); + getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "DeviceTypeCodeSequence"); + getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "DeviceTypeCodeSequence"); + EquivalentCodeSequence.read(item, "1-n", "3", "DeviceTypeCodeSequence"); + getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "DeviceTypeCodeSequence"); + getAndCheckElementFromDataset(item, ContextUID, "1", "3", "DeviceTypeCodeSequence"); + getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "DeviceTypeCodeSequence"); + getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "DeviceTypeCodeSequence"); + getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "DeviceTypeCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "DeviceTypeCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "DeviceTypeCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "DeviceTypeCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "DeviceTypeCodeSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTDeviceTypeCodeSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "DeviceTypeCodeSequence"); + addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "DeviceTypeCodeSequence"); + addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "DeviceTypeCodeSequence"); + addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "DeviceTypeCodeSequence"); + addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "DeviceTypeCodeSequence"); + addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "DeviceTypeCodeSequence"); + if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "DeviceTypeCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "DeviceTypeCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "DeviceTypeCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "DeviceTypeCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "DeviceTypeCodeSequence"); + addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "DeviceTypeCodeSequence"); + addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "DeviceTypeCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "DeviceTypeCodeSequence"); + addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "DeviceTypeCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "DeviceTypeCodeSequence"); + } + return result; +} + + +OFCondition DRTDeviceTypeCodeSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodeMeaning, value, pos); +} + + +OFCondition DRTDeviceTypeCodeSequence::Item::getCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodeValue, value, pos); +} + + +OFCondition DRTDeviceTypeCodeSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodingSchemeDesignator, value, pos); +} + + +OFCondition DRTDeviceTypeCodeSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodingSchemeVersion, value, pos); +} + + +OFCondition DRTDeviceTypeCodeSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupExtensionCreatorUID, value, pos); +} + + +OFCondition DRTDeviceTypeCodeSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupExtensionFlag, value, pos); +} + + +OFCondition DRTDeviceTypeCodeSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupLocalVersion, value, pos); +} + + +OFCondition DRTDeviceTypeCodeSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupVersion, value, pos); +} + + +OFCondition DRTDeviceTypeCodeSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextIdentifier, value, pos); +} + + +OFCondition DRTDeviceTypeCodeSequence::Item::getContextUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextUID, value, pos); +} + + +OFCondition DRTDeviceTypeCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(LongCodeValue, value, pos); +} + + +OFCondition DRTDeviceTypeCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResource, value, pos); +} + + +OFCondition DRTDeviceTypeCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResourceName, value, pos); +} + + +OFCondition DRTDeviceTypeCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResourceUID, value, pos); +} + + +OFCondition DRTDeviceTypeCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(URNCodeValue, value, pos); +} + + +OFCondition DRTDeviceTypeCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodeMeaning.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTDeviceTypeCodeSequence::Item::setCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodeValue.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTDeviceTypeCodeSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodingSchemeDesignator.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTDeviceTypeCodeSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodingSchemeVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTDeviceTypeCodeSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupExtensionCreatorUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTDeviceTypeCodeSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupExtensionFlag.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTDeviceTypeCodeSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupLocalVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTDeviceTypeCodeSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTDeviceTypeCodeSequence::Item::setContextIdentifier(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextIdentifier.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTDeviceTypeCodeSequence::Item::setContextUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTDeviceTypeCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = LongCodeValue.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTDeviceTypeCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResource.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTDeviceTypeCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResourceName.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTDeviceTypeCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResourceUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTDeviceTypeCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal; + if (result.good()) + result = URNCodeValue.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTDeviceTypeCodeSequence::DRTDeviceTypeCodeSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTDeviceTypeCodeSequence::DRTDeviceTypeCodeSequence(const DRTDeviceTypeCodeSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTDeviceTypeCodeSequence &DRTDeviceTypeCodeSequence::operator=(const DRTDeviceTypeCodeSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTDeviceTypeCodeSequence::~DRTDeviceTypeCodeSequence() +{ + clear(); +} + + +void DRTDeviceTypeCodeSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTDeviceTypeCodeSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTDeviceTypeCodeSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTDeviceTypeCodeSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTDeviceTypeCodeSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTDeviceTypeCodeSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTDeviceTypeCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTDeviceTypeCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTDeviceTypeCodeSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTDeviceTypeCodeSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTDeviceTypeCodeSequence::Item &DRTDeviceTypeCodeSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTDeviceTypeCodeSequence::Item &DRTDeviceTypeCodeSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTDeviceTypeCodeSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTDeviceTypeCodeSequence::Item &DRTDeviceTypeCodeSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTDeviceTypeCodeSequence::Item &DRTDeviceTypeCodeSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTDeviceTypeCodeSequence::Item &DRTDeviceTypeCodeSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTDeviceTypeCodeSequence::Item &DRTDeviceTypeCodeSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTDeviceTypeCodeSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTDeviceTypeCodeSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTDeviceTypeCodeSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTDeviceTypeCodeSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_DeviceTypeCodeSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_DeviceTypeCodeSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTDeviceTypeCodeSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_DeviceTypeCodeSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtdvhs.cc b/dcmrt/libsrc/drtdvhs.cc index 5757d3d6..b7e84289 100644 --- a/dcmrt/libsrc/drtdvhs.cc +++ b/dcmrt/libsrc/drtdvhs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTDVHSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -574,10 +574,12 @@ OFCondition DRTDVHSequence::gotoFirstItem() OFCondition DRTDVHSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtdvrrs.cc b/dcmrt/libsrc/drtdvrrs.cc index 27bbfa9f..4863b73d 100644 --- a/dcmrt/libsrc/drtdvrrs.cc +++ b/dcmrt/libsrc/drtdvrrs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTDVHReferencedROISequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -281,10 +281,12 @@ OFCondition DRTDVHReferencedROISequence::gotoFirstItem() OFCondition DRTDVHReferencedROISequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drteas.cc b/dcmrt/libsrc/drteas.cc index f7b361bf..143f0693 100644 --- a/dcmrt/libsrc/drteas.cc +++ b/dcmrt/libsrc/drteas.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTEncryptedAttributesSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -278,10 +278,12 @@ OFCondition DRTEncryptedAttributesSequence::gotoFirstItem() OFCondition DRTEncryptedAttributesSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drteblds.cc b/dcmrt/libsrc/drteblds.cc new file mode 100644 index 00000000..f3427aa8 --- /dev/null +++ b/dcmrt/libsrc/drteblds.cc @@ -0,0 +1,1097 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTEnhancedRTBeamLimitingDeviceSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drteblds.h" + + +// --- item class --- + +DRTEnhancedRTBeamLimitingDeviceSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + BeamModifierOrientationAngle(DCM_BeamModifierOrientationAngle), + DeviceAlternateIdentifier(DCM_DeviceAlternateIdentifier), + DeviceAlternateIdentifierFormat(DCM_DeviceAlternateIdentifierFormat), + DeviceAlternateIdentifierType(DCM_DeviceAlternateIdentifierType), + DeviceIndex(DCM_DeviceIndex), + DeviceLabel(DCM_DeviceLabel), + DeviceSerialNumber(DCM_DeviceSerialNumber), + DeviceTypeCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), + FixedRTBeamDelimiterDeviceSequence(emptyDefaultItem /*emptyDefaultSequence*/), + LongDeviceDescription(DCM_LongDeviceDescription), + Manufacturer(DCM_Manufacturer), + ManufacturerDeviceIdentifier(DCM_ManufacturerDeviceIdentifier), + ManufacturerModelName(DCM_ManufacturerModelName), + ManufacturerModelVersion(DCM_ManufacturerModelVersion), + ParallelRTBeamDelimiterDeviceSequence(emptyDefaultItem /*emptyDefaultSequence*/), + RTAccessoryDeviceSlotID(DCM_RTAccessoryDeviceSlotID), + RTAccessoryHolderSlotID(DCM_RTAccessoryHolderSlotID), + RTAccessorySlotDistance(DCM_RTAccessorySlotDistance), + RTBeamLimitingDeviceDistalDistance(DCM_RTBeamLimitingDeviceDistalDistance), + RTBeamLimitingDeviceProximalDistance(DCM_RTBeamLimitingDeviceProximalDistance), + ReferencedDefinedDeviceIndex(DCM_ReferencedDefinedDeviceIndex), + ReferencedRTAccessoryHolderDeviceIndex(DCM_ReferencedRTAccessoryHolderDeviceIndex), + SoftwareVersions(DCM_SoftwareVersions), + UDISequence(emptyDefaultItem /*emptyDefaultSequence*/) +{ +} + + +DRTEnhancedRTBeamLimitingDeviceSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + BeamModifierOrientationAngle(copy.BeamModifierOrientationAngle), + DeviceAlternateIdentifier(copy.DeviceAlternateIdentifier), + DeviceAlternateIdentifierFormat(copy.DeviceAlternateIdentifierFormat), + DeviceAlternateIdentifierType(copy.DeviceAlternateIdentifierType), + DeviceIndex(copy.DeviceIndex), + DeviceLabel(copy.DeviceLabel), + DeviceSerialNumber(copy.DeviceSerialNumber), + DeviceTypeCodeSequence(copy.DeviceTypeCodeSequence), + FixedRTBeamDelimiterDeviceSequence(copy.FixedRTBeamDelimiterDeviceSequence), + LongDeviceDescription(copy.LongDeviceDescription), + Manufacturer(copy.Manufacturer), + ManufacturerDeviceIdentifier(copy.ManufacturerDeviceIdentifier), + ManufacturerModelName(copy.ManufacturerModelName), + ManufacturerModelVersion(copy.ManufacturerModelVersion), + ParallelRTBeamDelimiterDeviceSequence(copy.ParallelRTBeamDelimiterDeviceSequence), + RTAccessoryDeviceSlotID(copy.RTAccessoryDeviceSlotID), + RTAccessoryHolderSlotID(copy.RTAccessoryHolderSlotID), + RTAccessorySlotDistance(copy.RTAccessorySlotDistance), + RTBeamLimitingDeviceDistalDistance(copy.RTBeamLimitingDeviceDistalDistance), + RTBeamLimitingDeviceProximalDistance(copy.RTBeamLimitingDeviceProximalDistance), + ReferencedDefinedDeviceIndex(copy.ReferencedDefinedDeviceIndex), + ReferencedRTAccessoryHolderDeviceIndex(copy.ReferencedRTAccessoryHolderDeviceIndex), + SoftwareVersions(copy.SoftwareVersions), + UDISequence(copy.UDISequence) +{ +} + + +DRTEnhancedRTBeamLimitingDeviceSequence::Item::~Item() +{ +} + + +DRTEnhancedRTBeamLimitingDeviceSequence::Item &DRTEnhancedRTBeamLimitingDeviceSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + BeamModifierOrientationAngle = copy.BeamModifierOrientationAngle; + DeviceAlternateIdentifier = copy.DeviceAlternateIdentifier; + DeviceAlternateIdentifierFormat = copy.DeviceAlternateIdentifierFormat; + DeviceAlternateIdentifierType = copy.DeviceAlternateIdentifierType; + DeviceIndex = copy.DeviceIndex; + DeviceLabel = copy.DeviceLabel; + DeviceSerialNumber = copy.DeviceSerialNumber; + DeviceTypeCodeSequence = copy.DeviceTypeCodeSequence; + FixedRTBeamDelimiterDeviceSequence = copy.FixedRTBeamDelimiterDeviceSequence; + LongDeviceDescription = copy.LongDeviceDescription; + Manufacturer = copy.Manufacturer; + ManufacturerDeviceIdentifier = copy.ManufacturerDeviceIdentifier; + ManufacturerModelName = copy.ManufacturerModelName; + ManufacturerModelVersion = copy.ManufacturerModelVersion; + ParallelRTBeamDelimiterDeviceSequence = copy.ParallelRTBeamDelimiterDeviceSequence; + RTAccessoryDeviceSlotID = copy.RTAccessoryDeviceSlotID; + RTAccessoryHolderSlotID = copy.RTAccessoryHolderSlotID; + RTAccessorySlotDistance = copy.RTAccessorySlotDistance; + RTBeamLimitingDeviceDistalDistance = copy.RTBeamLimitingDeviceDistalDistance; + RTBeamLimitingDeviceProximalDistance = copy.RTBeamLimitingDeviceProximalDistance; + ReferencedDefinedDeviceIndex = copy.ReferencedDefinedDeviceIndex; + ReferencedRTAccessoryHolderDeviceIndex = copy.ReferencedRTAccessoryHolderDeviceIndex; + SoftwareVersions = copy.SoftwareVersions; + UDISequence = copy.UDISequence; + } + return *this; +} + + +void DRTEnhancedRTBeamLimitingDeviceSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + DeviceIndex.clear(); + ReferencedDefinedDeviceIndex.clear(); + Manufacturer.clear(); + ManufacturerModelName.clear(); + ManufacturerModelVersion.clear(); + DeviceTypeCodeSequence.clear(); + DeviceLabel.clear(); + LongDeviceDescription.clear(); + DeviceSerialNumber.clear(); + SoftwareVersions.clear(); + UDISequence.clear(); + ManufacturerDeviceIdentifier.clear(); + DeviceAlternateIdentifier.clear(); + DeviceAlternateIdentifierType.clear(); + DeviceAlternateIdentifierFormat.clear(); + RTAccessoryDeviceSlotID.clear(); + RTAccessorySlotDistance.clear(); + ReferencedRTAccessoryHolderDeviceIndex.clear(); + RTAccessoryHolderSlotID.clear(); + BeamModifierOrientationAngle.clear(); + RTBeamLimitingDeviceProximalDistance.clear(); + RTBeamLimitingDeviceDistalDistance.clear(); + ParallelRTBeamDelimiterDeviceSequence.clear(); + FixedRTBeamDelimiterDeviceSequence.clear(); + } +} + + +OFBool DRTEnhancedRTBeamLimitingDeviceSequence::Item::isEmpty() +{ + return DeviceIndex.isEmpty() && + ReferencedDefinedDeviceIndex.isEmpty() && + Manufacturer.isEmpty() && + ManufacturerModelName.isEmpty() && + ManufacturerModelVersion.isEmpty() && + DeviceTypeCodeSequence.isEmpty() && + DeviceLabel.isEmpty() && + LongDeviceDescription.isEmpty() && + DeviceSerialNumber.isEmpty() && + SoftwareVersions.isEmpty() && + UDISequence.isEmpty() && + ManufacturerDeviceIdentifier.isEmpty() && + DeviceAlternateIdentifier.isEmpty() && + DeviceAlternateIdentifierType.isEmpty() && + DeviceAlternateIdentifierFormat.isEmpty() && + RTAccessoryDeviceSlotID.isEmpty() && + RTAccessorySlotDistance.isEmpty() && + ReferencedRTAccessoryHolderDeviceIndex.isEmpty() && + RTAccessoryHolderSlotID.isEmpty() && + BeamModifierOrientationAngle.isEmpty() && + RTBeamLimitingDeviceProximalDistance.isEmpty() && + RTBeamLimitingDeviceDistalDistance.isEmpty() && + ParallelRTBeamDelimiterDeviceSequence.isEmpty() && + FixedRTBeamDelimiterDeviceSequence.isEmpty(); +} + + +OFBool DRTEnhancedRTBeamLimitingDeviceSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, DeviceIndex, "1", "1", "EnhancedRTBeamLimitingDeviceSequence"); + getAndCheckElementFromDataset(item, ReferencedDefinedDeviceIndex, "1", "1C", "EnhancedRTBeamLimitingDeviceSequence"); + getAndCheckElementFromDataset(item, Manufacturer, "1", "2", "EnhancedRTBeamLimitingDeviceSequence"); + getAndCheckElementFromDataset(item, ManufacturerModelName, "1", "2", "EnhancedRTBeamLimitingDeviceSequence"); + getAndCheckElementFromDataset(item, ManufacturerModelVersion, "1", "2", "EnhancedRTBeamLimitingDeviceSequence"); + DeviceTypeCodeSequence.read(item, "1-n", "1", "EnhancedRTBeamLimitingDeviceSequence"); + getAndCheckElementFromDataset(item, DeviceLabel, "1", "1", "EnhancedRTBeamLimitingDeviceSequence"); + getAndCheckElementFromDataset(item, LongDeviceDescription, "1", "3", "EnhancedRTBeamLimitingDeviceSequence"); + getAndCheckElementFromDataset(item, DeviceSerialNumber, "1", "2", "EnhancedRTBeamLimitingDeviceSequence"); + getAndCheckElementFromDataset(item, SoftwareVersions, "1-n", "2", "EnhancedRTBeamLimitingDeviceSequence"); + UDISequence.read(item, "1-n", "3", "EnhancedRTBeamLimitingDeviceSequence"); + getAndCheckElementFromDataset(item, ManufacturerDeviceIdentifier, "1", "2", "EnhancedRTBeamLimitingDeviceSequence"); + getAndCheckElementFromDataset(item, DeviceAlternateIdentifier, "1", "2", "EnhancedRTBeamLimitingDeviceSequence"); + getAndCheckElementFromDataset(item, DeviceAlternateIdentifierType, "1", "1C", "EnhancedRTBeamLimitingDeviceSequence"); + getAndCheckElementFromDataset(item, DeviceAlternateIdentifierFormat, "1", "1C", "EnhancedRTBeamLimitingDeviceSequence"); + getAndCheckElementFromDataset(item, RTAccessoryDeviceSlotID, "1", "2C", "EnhancedRTBeamLimitingDeviceSequence"); + getAndCheckElementFromDataset(item, RTAccessorySlotDistance, "1", "2C", "EnhancedRTBeamLimitingDeviceSequence"); + getAndCheckElementFromDataset(item, ReferencedRTAccessoryHolderDeviceIndex, "1", "2C", "EnhancedRTBeamLimitingDeviceSequence"); + getAndCheckElementFromDataset(item, RTAccessoryHolderSlotID, "1", "2C", "EnhancedRTBeamLimitingDeviceSequence"); + getAndCheckElementFromDataset(item, BeamModifierOrientationAngle, "1", "1", "EnhancedRTBeamLimitingDeviceSequence"); + getAndCheckElementFromDataset(item, RTBeamLimitingDeviceProximalDistance, "1", "2", "EnhancedRTBeamLimitingDeviceSequence"); + getAndCheckElementFromDataset(item, RTBeamLimitingDeviceDistalDistance, "1", "2", "EnhancedRTBeamLimitingDeviceSequence"); + ParallelRTBeamDelimiterDeviceSequence.read(item, "1-n", "1C", "EnhancedRTBeamLimitingDeviceSequence"); + FixedRTBeamDelimiterDeviceSequence.read(item, "1-n", "1C", "EnhancedRTBeamLimitingDeviceSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmUnsignedShort(DeviceIndex), "1", "1", "EnhancedRTBeamLimitingDeviceSequence"); + addElementToDataset(result, item, new DcmUnsignedShort(ReferencedDefinedDeviceIndex), "1", "1C", "EnhancedRTBeamLimitingDeviceSequence"); + addElementToDataset(result, item, new DcmLongString(Manufacturer), "1", "2", "EnhancedRTBeamLimitingDeviceSequence"); + addElementToDataset(result, item, new DcmLongString(ManufacturerModelName), "1", "2", "EnhancedRTBeamLimitingDeviceSequence"); + addElementToDataset(result, item, new DcmLongString(ManufacturerModelVersion), "1", "2", "EnhancedRTBeamLimitingDeviceSequence"); + if (result.good()) result = DeviceTypeCodeSequence.write(item, "1-n", "1", "EnhancedRTBeamLimitingDeviceSequence"); + addElementToDataset(result, item, new DcmLongString(DeviceLabel), "1", "1", "EnhancedRTBeamLimitingDeviceSequence"); + addElementToDataset(result, item, new DcmShortText(LongDeviceDescription), "1", "3", "EnhancedRTBeamLimitingDeviceSequence"); + addElementToDataset(result, item, new DcmLongString(DeviceSerialNumber), "1", "2", "EnhancedRTBeamLimitingDeviceSequence"); + addElementToDataset(result, item, new DcmLongString(SoftwareVersions), "1-n", "2", "EnhancedRTBeamLimitingDeviceSequence"); + if (result.good()) result = UDISequence.write(item, "1-n", "3", "EnhancedRTBeamLimitingDeviceSequence"); + addElementToDataset(result, item, new DcmShortText(ManufacturerDeviceIdentifier), "1", "2", "EnhancedRTBeamLimitingDeviceSequence"); + addElementToDataset(result, item, new DcmUnlimitedCharacters(DeviceAlternateIdentifier), "1", "2", "EnhancedRTBeamLimitingDeviceSequence"); + addElementToDataset(result, item, new DcmCodeString(DeviceAlternateIdentifierType), "1", "1C", "EnhancedRTBeamLimitingDeviceSequence"); + addElementToDataset(result, item, new DcmLongText(DeviceAlternateIdentifierFormat), "1", "1C", "EnhancedRTBeamLimitingDeviceSequence"); + addElementToDataset(result, item, new DcmLongString(RTAccessoryDeviceSlotID), "1", "2C", "EnhancedRTBeamLimitingDeviceSequence"); + addElementToDataset(result, item, new DcmFloatingPointDouble(RTAccessorySlotDistance), "1", "2C", "EnhancedRTBeamLimitingDeviceSequence"); + addElementToDataset(result, item, new DcmUnsignedShort(ReferencedRTAccessoryHolderDeviceIndex), "1", "2C", "EnhancedRTBeamLimitingDeviceSequence"); + addElementToDataset(result, item, new DcmLongString(RTAccessoryHolderSlotID), "1", "2C", "EnhancedRTBeamLimitingDeviceSequence"); + addElementToDataset(result, item, new DcmFloatingPointDouble(BeamModifierOrientationAngle), "1", "1", "EnhancedRTBeamLimitingDeviceSequence"); + addElementToDataset(result, item, new DcmFloatingPointDouble(RTBeamLimitingDeviceProximalDistance), "1", "2", "EnhancedRTBeamLimitingDeviceSequence"); + addElementToDataset(result, item, new DcmFloatingPointDouble(RTBeamLimitingDeviceDistalDistance), "1", "2", "EnhancedRTBeamLimitingDeviceSequence"); + if (result.good()) result = ParallelRTBeamDelimiterDeviceSequence.write(item, "1-n", "1C", "EnhancedRTBeamLimitingDeviceSequence"); + if (result.good()) result = FixedRTBeamDelimiterDeviceSequence.write(item, "1-n", "1C", "EnhancedRTBeamLimitingDeviceSequence"); + } + return result; +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getBeamModifierOrientationAngle(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointDouble &, BeamModifierOrientationAngle).getFloat64(value, pos); +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getDeviceAlternateIdentifier(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(DeviceAlternateIdentifier, value, pos); +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getDeviceAlternateIdentifierFormat(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(DeviceAlternateIdentifierFormat, value, pos); +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getDeviceAlternateIdentifierType(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(DeviceAlternateIdentifierType, value, pos); +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getDeviceIndex(Uint16 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmUnsignedShort &, DeviceIndex).getUint16(value, pos); +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getDeviceLabel(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(DeviceLabel, value, pos); +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getDeviceSerialNumber(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(DeviceSerialNumber, value, pos); +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getLongDeviceDescription(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(LongDeviceDescription, value, pos); +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getManufacturer(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(Manufacturer, value, pos); +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getManufacturerDeviceIdentifier(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ManufacturerDeviceIdentifier, value, pos); +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getManufacturerModelName(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ManufacturerModelName, value, pos); +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getManufacturerModelVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ManufacturerModelVersion, value, pos); +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getRTAccessoryDeviceSlotID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(RTAccessoryDeviceSlotID, value, pos); +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getRTAccessoryHolderSlotID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(RTAccessoryHolderSlotID, value, pos); +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getRTAccessorySlotDistance(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointDouble &, RTAccessorySlotDistance).getFloat64(value, pos); +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getRTBeamLimitingDeviceDistalDistance(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointDouble &, RTBeamLimitingDeviceDistalDistance).getFloat64(value, pos); +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getRTBeamLimitingDeviceProximalDistance(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointDouble &, RTBeamLimitingDeviceProximalDistance).getFloat64(value, pos); +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getReferencedDefinedDeviceIndex(Uint16 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmUnsignedShort &, ReferencedDefinedDeviceIndex).getUint16(value, pos); +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getReferencedRTAccessoryHolderDeviceIndex(Uint16 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmUnsignedShort &, ReferencedRTAccessoryHolderDeviceIndex).getUint16(value, pos); +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getSoftwareVersions(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(SoftwareVersions, value, pos); +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setBeamModifierOrientationAngle(const Float64 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return BeamModifierOrientationAngle.putFloat64(value, pos); +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setDeviceAlternateIdentifier(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = DeviceAlternateIdentifier.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setDeviceAlternateIdentifierFormat(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongText::checkStringValue(value) : EC_Normal; + if (result.good()) + result = DeviceAlternateIdentifierFormat.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setDeviceAlternateIdentifierType(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = DeviceAlternateIdentifierType.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setDeviceIndex(const Uint16 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return DeviceIndex.putUint16(value, pos); +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setDeviceLabel(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = DeviceLabel.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setDeviceSerialNumber(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = DeviceSerialNumber.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setLongDeviceDescription(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal; + if (result.good()) + result = LongDeviceDescription.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setManufacturer(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = Manufacturer.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setManufacturerDeviceIdentifier(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal; + if (result.good()) + result = ManufacturerDeviceIdentifier.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setManufacturerModelName(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ManufacturerModelName.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setManufacturerModelVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ManufacturerModelVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setRTAccessoryDeviceSlotID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = RTAccessoryDeviceSlotID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setRTAccessoryHolderSlotID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = RTAccessoryHolderSlotID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setRTAccessorySlotDistance(const Float64 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return RTAccessorySlotDistance.putFloat64(value, pos); +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setRTBeamLimitingDeviceDistalDistance(const Float64 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return RTBeamLimitingDeviceDistalDistance.putFloat64(value, pos); +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setRTBeamLimitingDeviceProximalDistance(const Float64 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return RTBeamLimitingDeviceProximalDistance.putFloat64(value, pos); +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setReferencedDefinedDeviceIndex(const Uint16 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return ReferencedDefinedDeviceIndex.putUint16(value, pos); +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setReferencedRTAccessoryHolderDeviceIndex(const Uint16 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return ReferencedRTAccessoryHolderDeviceIndex.putUint16(value, pos); +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setSoftwareVersions(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1-n") : EC_Normal; + if (result.good()) + result = SoftwareVersions.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTEnhancedRTBeamLimitingDeviceSequence::DRTEnhancedRTBeamLimitingDeviceSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTEnhancedRTBeamLimitingDeviceSequence::DRTEnhancedRTBeamLimitingDeviceSequence(const DRTEnhancedRTBeamLimitingDeviceSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTEnhancedRTBeamLimitingDeviceSequence &DRTEnhancedRTBeamLimitingDeviceSequence::operator=(const DRTEnhancedRTBeamLimitingDeviceSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTEnhancedRTBeamLimitingDeviceSequence::~DRTEnhancedRTBeamLimitingDeviceSequence() +{ + clear(); +} + + +void DRTEnhancedRTBeamLimitingDeviceSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTEnhancedRTBeamLimitingDeviceSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTEnhancedRTBeamLimitingDeviceSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTEnhancedRTBeamLimitingDeviceSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTEnhancedRTBeamLimitingDeviceSequence::Item &DRTEnhancedRTBeamLimitingDeviceSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTEnhancedRTBeamLimitingDeviceSequence::Item &DRTEnhancedRTBeamLimitingDeviceSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTEnhancedRTBeamLimitingDeviceSequence::Item &DRTEnhancedRTBeamLimitingDeviceSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTEnhancedRTBeamLimitingDeviceSequence::Item &DRTEnhancedRTBeamLimitingDeviceSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTEnhancedRTBeamLimitingDeviceSequence::Item &DRTEnhancedRTBeamLimitingDeviceSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTEnhancedRTBeamLimitingDeviceSequence::Item &DRTEnhancedRTBeamLimitingDeviceSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_EnhancedRTBeamLimitingDeviceSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_EnhancedRTBeamLimitingDeviceSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_EnhancedRTBeamLimitingDeviceSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drteblos.cc b/dcmrt/libsrc/drteblos.cc new file mode 100644 index 00000000..c1854736 --- /dev/null +++ b/dcmrt/libsrc/drteblos.cc @@ -0,0 +1,599 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTEnhancedRTBeamLimitingOpeningSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drteblos.h" + + +// --- item class --- + +DRTEnhancedRTBeamLimitingOpeningSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + ParallelRTBeamDelimiterPositions(DCM_ParallelRTBeamDelimiterPositions), + RTBeamDelimiterGeometrySequence(emptyDefaultItem /*emptyDefaultSequence*/), + RTBeamLimitingDeviceOffset(DCM_RTBeamLimitingDeviceOffset), + ReferencedDeviceIndex(DCM_ReferencedDeviceIndex) +{ +} + + +DRTEnhancedRTBeamLimitingOpeningSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + ParallelRTBeamDelimiterPositions(copy.ParallelRTBeamDelimiterPositions), + RTBeamDelimiterGeometrySequence(copy.RTBeamDelimiterGeometrySequence), + RTBeamLimitingDeviceOffset(copy.RTBeamLimitingDeviceOffset), + ReferencedDeviceIndex(copy.ReferencedDeviceIndex) +{ +} + + +DRTEnhancedRTBeamLimitingOpeningSequence::Item::~Item() +{ +} + + +DRTEnhancedRTBeamLimitingOpeningSequence::Item &DRTEnhancedRTBeamLimitingOpeningSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + ParallelRTBeamDelimiterPositions = copy.ParallelRTBeamDelimiterPositions; + RTBeamDelimiterGeometrySequence = copy.RTBeamDelimiterGeometrySequence; + RTBeamLimitingDeviceOffset = copy.RTBeamLimitingDeviceOffset; + ReferencedDeviceIndex = copy.ReferencedDeviceIndex; + } + return *this; +} + + +void DRTEnhancedRTBeamLimitingOpeningSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + ReferencedDeviceIndex.clear(); + RTBeamLimitingDeviceOffset.clear(); + ParallelRTBeamDelimiterPositions.clear(); + RTBeamDelimiterGeometrySequence.clear(); + } +} + + +OFBool DRTEnhancedRTBeamLimitingOpeningSequence::Item::isEmpty() +{ + return ReferencedDeviceIndex.isEmpty() && + RTBeamLimitingDeviceOffset.isEmpty() && + ParallelRTBeamDelimiterPositions.isEmpty() && + RTBeamDelimiterGeometrySequence.isEmpty(); +} + + +OFBool DRTEnhancedRTBeamLimitingOpeningSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, ReferencedDeviceIndex, "1", "1", "EnhancedRTBeamLimitingOpeningSequence"); + getAndCheckElementFromDataset(item, RTBeamLimitingDeviceOffset, "2", "1C", "EnhancedRTBeamLimitingOpeningSequence"); + getAndCheckElementFromDataset(item, ParallelRTBeamDelimiterPositions, "2-n", "1C", "EnhancedRTBeamLimitingOpeningSequence"); + RTBeamDelimiterGeometrySequence.read(item, "1-n", "1C", "EnhancedRTBeamLimitingOpeningSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmUnsignedShort(ReferencedDeviceIndex), "1", "1", "EnhancedRTBeamLimitingOpeningSequence"); + addElementToDataset(result, item, new DcmFloatingPointDouble(RTBeamLimitingDeviceOffset), "2", "1C", "EnhancedRTBeamLimitingOpeningSequence"); + addElementToDataset(result, item, new DcmFloatingPointDouble(ParallelRTBeamDelimiterPositions), "2-n", "1C", "EnhancedRTBeamLimitingOpeningSequence"); + if (result.good()) result = RTBeamDelimiterGeometrySequence.write(item, "1-n", "1C", "EnhancedRTBeamLimitingOpeningSequence"); + } + return result; +} + + +OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::Item::getParallelRTBeamDelimiterPositions(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointDouble &, ParallelRTBeamDelimiterPositions).getFloat64(value, pos); +} + + +OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::Item::getRTBeamLimitingDeviceOffset(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointDouble &, RTBeamLimitingDeviceOffset).getFloat64(value, pos); +} + + +OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::Item::getReferencedDeviceIndex(Uint16 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmUnsignedShort &, ReferencedDeviceIndex).getUint16(value, pos); +} + + +OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::Item::setParallelRTBeamDelimiterPositions(const Float64 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return ParallelRTBeamDelimiterPositions.putFloat64(value, pos); +} + + +OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::Item::setRTBeamLimitingDeviceOffset(const Float64 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return RTBeamLimitingDeviceOffset.putFloat64(value, pos); +} + + +OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::Item::setReferencedDeviceIndex(const Uint16 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return ReferencedDeviceIndex.putUint16(value, pos); +} + + +// --- sequence class --- + +DRTEnhancedRTBeamLimitingOpeningSequence::DRTEnhancedRTBeamLimitingOpeningSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTEnhancedRTBeamLimitingOpeningSequence::DRTEnhancedRTBeamLimitingOpeningSequence(const DRTEnhancedRTBeamLimitingOpeningSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTEnhancedRTBeamLimitingOpeningSequence &DRTEnhancedRTBeamLimitingOpeningSequence::operator=(const DRTEnhancedRTBeamLimitingOpeningSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTEnhancedRTBeamLimitingOpeningSequence::~DRTEnhancedRTBeamLimitingOpeningSequence() +{ + clear(); +} + + +void DRTEnhancedRTBeamLimitingOpeningSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTEnhancedRTBeamLimitingOpeningSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTEnhancedRTBeamLimitingOpeningSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTEnhancedRTBeamLimitingOpeningSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTEnhancedRTBeamLimitingOpeningSequence::Item &DRTEnhancedRTBeamLimitingOpeningSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTEnhancedRTBeamLimitingOpeningSequence::Item &DRTEnhancedRTBeamLimitingOpeningSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTEnhancedRTBeamLimitingOpeningSequence::Item &DRTEnhancedRTBeamLimitingOpeningSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTEnhancedRTBeamLimitingOpeningSequence::Item &DRTEnhancedRTBeamLimitingOpeningSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTEnhancedRTBeamLimitingOpeningSequence::Item &DRTEnhancedRTBeamLimitingOpeningSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTEnhancedRTBeamLimitingOpeningSequence::Item &DRTEnhancedRTBeamLimitingOpeningSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_EnhancedRTBeamLimitingOpeningSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_EnhancedRTBeamLimitingOpeningSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_EnhancedRTBeamLimitingOpeningSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtecs.cc b/dcmrt/libsrc/drtecs.cc index 35ca822a..3cec218f 100644 --- a/dcmrt/libsrc/drtecs.cc +++ b/dcmrt/libsrc/drtecs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTEquivalentCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -649,10 +649,12 @@ OFCondition DRTEquivalentCodeSequence::gotoFirstItem() OFCondition DRTEquivalentCodeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtecvis.cc b/dcmrt/libsrc/drtecvis.cc new file mode 100644 index 00000000..6ee61f61 --- /dev/null +++ b/dcmrt/libsrc/drtecvis.cc @@ -0,0 +1,575 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTEquivalentConceptualVolumeInstanceReferenceSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtecvis.h" + + +// --- item class --- + +DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + ReferencedSOPClassUID(DCM_ReferencedSOPClassUID), + ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID) +{ +} + + +DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + ReferencedSOPClassUID(copy.ReferencedSOPClassUID), + ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID) +{ +} + + +DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item::~Item() +{ +} + + +DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item &DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + ReferencedSOPClassUID = copy.ReferencedSOPClassUID; + ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID; + } + return *this; +} + + +void DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + ReferencedSOPClassUID.clear(); + ReferencedSOPInstanceUID.clear(); + } +} + + +OFBool DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item::isEmpty() +{ + return ReferencedSOPClassUID.isEmpty() && + ReferencedSOPInstanceUID.isEmpty(); +} + + +OFBool DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "EquivalentConceptualVolumeInstanceReferenceSequence"); + getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "EquivalentConceptualVolumeInstanceReferenceSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "EquivalentConceptualVolumeInstanceReferenceSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "EquivalentConceptualVolumeInstanceReferenceSequence"); + } + return result; +} + + +OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedSOPClassUID, value, pos); +} + + +OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos); +} + + +OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedSOPClassUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedSOPInstanceUID.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTEquivalentConceptualVolumeInstanceReferenceSequence::DRTEquivalentConceptualVolumeInstanceReferenceSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTEquivalentConceptualVolumeInstanceReferenceSequence::DRTEquivalentConceptualVolumeInstanceReferenceSequence(const DRTEquivalentConceptualVolumeInstanceReferenceSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTEquivalentConceptualVolumeInstanceReferenceSequence &DRTEquivalentConceptualVolumeInstanceReferenceSequence::operator=(const DRTEquivalentConceptualVolumeInstanceReferenceSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTEquivalentConceptualVolumeInstanceReferenceSequence::~DRTEquivalentConceptualVolumeInstanceReferenceSequence() +{ + clear(); +} + + +void DRTEquivalentConceptualVolumeInstanceReferenceSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTEquivalentConceptualVolumeInstanceReferenceSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTEquivalentConceptualVolumeInstanceReferenceSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTEquivalentConceptualVolumeInstanceReferenceSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item &DRTEquivalentConceptualVolumeInstanceReferenceSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item &DRTEquivalentConceptualVolumeInstanceReferenceSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item &DRTEquivalentConceptualVolumeInstanceReferenceSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item &DRTEquivalentConceptualVolumeInstanceReferenceSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item &DRTEquivalentConceptualVolumeInstanceReferenceSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item &DRTEquivalentConceptualVolumeInstanceReferenceSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_EquivalentConceptualVolumeInstanceReferenceSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_EquivalentConceptualVolumeInstanceReferenceSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_EquivalentConceptualVolumeInstanceReferenceSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtecvs.cc b/dcmrt/libsrc/drtecvs.cc new file mode 100644 index 00000000..7a44be6a --- /dev/null +++ b/dcmrt/libsrc/drtecvs.cc @@ -0,0 +1,553 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTEquivalentConceptualVolumesSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtecvs.h" + + +// --- item class --- + +DRTEquivalentConceptualVolumesSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + EquivalentConceptualVolumeInstanceReferenceSequence(emptyDefaultItem /*emptyDefaultSequence*/), + ReferencedConceptualVolumeUID(DCM_ReferencedConceptualVolumeUID) +{ +} + + +DRTEquivalentConceptualVolumesSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + EquivalentConceptualVolumeInstanceReferenceSequence(copy.EquivalentConceptualVolumeInstanceReferenceSequence), + ReferencedConceptualVolumeUID(copy.ReferencedConceptualVolumeUID) +{ +} + + +DRTEquivalentConceptualVolumesSequence::Item::~Item() +{ +} + + +DRTEquivalentConceptualVolumesSequence::Item &DRTEquivalentConceptualVolumesSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + EquivalentConceptualVolumeInstanceReferenceSequence = copy.EquivalentConceptualVolumeInstanceReferenceSequence; + ReferencedConceptualVolumeUID = copy.ReferencedConceptualVolumeUID; + } + return *this; +} + + +void DRTEquivalentConceptualVolumesSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + ReferencedConceptualVolumeUID.clear(); + EquivalentConceptualVolumeInstanceReferenceSequence.clear(); + } +} + + +OFBool DRTEquivalentConceptualVolumesSequence::Item::isEmpty() +{ + return ReferencedConceptualVolumeUID.isEmpty() && + EquivalentConceptualVolumeInstanceReferenceSequence.isEmpty(); +} + + +OFBool DRTEquivalentConceptualVolumesSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTEquivalentConceptualVolumesSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, ReferencedConceptualVolumeUID, "1", "1", "EquivalentConceptualVolumesSequence"); + EquivalentConceptualVolumeInstanceReferenceSequence.read(item, "1-n", "1", "EquivalentConceptualVolumesSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTEquivalentConceptualVolumesSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedConceptualVolumeUID), "1", "1", "EquivalentConceptualVolumesSequence"); + if (result.good()) result = EquivalentConceptualVolumeInstanceReferenceSequence.write(item, "1-n", "1", "EquivalentConceptualVolumesSequence"); + } + return result; +} + + +OFCondition DRTEquivalentConceptualVolumesSequence::Item::getReferencedConceptualVolumeUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedConceptualVolumeUID, value, pos); +} + + +OFCondition DRTEquivalentConceptualVolumesSequence::Item::setReferencedConceptualVolumeUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedConceptualVolumeUID.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTEquivalentConceptualVolumesSequence::DRTEquivalentConceptualVolumesSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTEquivalentConceptualVolumesSequence::DRTEquivalentConceptualVolumesSequence(const DRTEquivalentConceptualVolumesSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTEquivalentConceptualVolumesSequence &DRTEquivalentConceptualVolumesSequence::operator=(const DRTEquivalentConceptualVolumesSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTEquivalentConceptualVolumesSequence::~DRTEquivalentConceptualVolumesSequence() +{ + clear(); +} + + +void DRTEquivalentConceptualVolumesSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTEquivalentConceptualVolumesSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTEquivalentConceptualVolumesSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTEquivalentConceptualVolumesSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTEquivalentConceptualVolumesSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTEquivalentConceptualVolumesSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTEquivalentConceptualVolumesSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTEquivalentConceptualVolumesSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTEquivalentConceptualVolumesSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTEquivalentConceptualVolumesSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTEquivalentConceptualVolumesSequence::Item &DRTEquivalentConceptualVolumesSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTEquivalentConceptualVolumesSequence::Item &DRTEquivalentConceptualVolumesSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTEquivalentConceptualVolumesSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTEquivalentConceptualVolumesSequence::Item &DRTEquivalentConceptualVolumesSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTEquivalentConceptualVolumesSequence::Item &DRTEquivalentConceptualVolumesSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTEquivalentConceptualVolumesSequence::Item &DRTEquivalentConceptualVolumesSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTEquivalentConceptualVolumesSequence::Item &DRTEquivalentConceptualVolumesSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTEquivalentConceptualVolumesSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTEquivalentConceptualVolumesSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTEquivalentConceptualVolumesSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTEquivalentConceptualVolumesSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_EquivalentConceptualVolumesSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_EquivalentConceptualVolumesSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTEquivalentConceptualVolumesSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_EquivalentConceptualVolumesSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtes.cc b/dcmrt/libsrc/drtes.cc index 50eab423..da3937ce 100644 --- a/dcmrt/libsrc/drtes.cc +++ b/dcmrt/libsrc/drtes.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTExposureSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -26,6 +26,7 @@ DRTExposureSequence::Item::Item(const OFBool emptyDefaultItem) BeamLimitingDeviceSequence(emptyDefaultItem /*emptyDefaultSequence*/), BlockSequence(emptyDefaultItem /*emptyDefaultSequence*/), DiaphragmPosition(DCM_DiaphragmPosition), + EnhancedRTBeamLimitingOpeningSequence(emptyDefaultItem /*emptyDefaultSequence*/), ExposureTime(DCM_ExposureTime), ExposureTimeInms(DCM_ExposureTimeInms), GantryAngle(DCM_GantryAngle), @@ -55,6 +56,7 @@ DRTExposureSequence::Item::Item(const Item ©) BeamLimitingDeviceSequence(copy.BeamLimitingDeviceSequence), BlockSequence(copy.BlockSequence), DiaphragmPosition(copy.DiaphragmPosition), + EnhancedRTBeamLimitingOpeningSequence(copy.EnhancedRTBeamLimitingOpeningSequence), ExposureTime(copy.ExposureTime), ExposureTimeInms(copy.ExposureTimeInms), GantryAngle(copy.GantryAngle), @@ -92,6 +94,7 @@ DRTExposureSequence::Item &DRTExposureSequence::Item::operator=(const Item © BeamLimitingDeviceSequence = copy.BeamLimitingDeviceSequence; BlockSequence = copy.BlockSequence; DiaphragmPosition = copy.DiaphragmPosition; + EnhancedRTBeamLimitingOpeningSequence = copy.EnhancedRTBeamLimitingOpeningSequence; ExposureTime = copy.ExposureTime; ExposureTimeInms = copy.ExposureTimeInms; GantryAngle = copy.GantryAngle; @@ -130,6 +133,7 @@ void DRTExposureSequence::Item::clear() MetersetExposure.clear(); DiaphragmPosition.clear(); BeamLimitingDeviceSequence.clear(); + EnhancedRTBeamLimitingOpeningSequence.clear(); GantryAngle.clear(); GantryPitchAngle.clear(); BeamLimitingDeviceAngle.clear(); @@ -159,6 +163,7 @@ OFBool DRTExposureSequence::Item::isEmpty() MetersetExposure.isEmpty() && DiaphragmPosition.isEmpty() && BeamLimitingDeviceSequence.isEmpty() && + EnhancedRTBeamLimitingOpeningSequence.isEmpty() && GantryAngle.isEmpty() && GantryPitchAngle.isEmpty() && BeamLimitingDeviceAngle.isEmpty() && @@ -198,6 +203,7 @@ OFCondition DRTExposureSequence::Item::read(DcmItem &item) getAndCheckElementFromDataset(item, MetersetExposure, "1", "2C", "ExposureSequence"); getAndCheckElementFromDataset(item, DiaphragmPosition, "4", "3", "ExposureSequence"); BeamLimitingDeviceSequence.read(item, "1-n", "3", "ExposureSequence"); + EnhancedRTBeamLimitingOpeningSequence.read(item, "1-n", "2C", "ExposureSequence"); getAndCheckElementFromDataset(item, GantryAngle, "1", "3", "ExposureSequence"); getAndCheckElementFromDataset(item, GantryPitchAngle, "1", "3", "ExposureSequence"); getAndCheckElementFromDataset(item, BeamLimitingDeviceAngle, "1", "3", "ExposureSequence"); @@ -233,6 +239,7 @@ OFCondition DRTExposureSequence::Item::write(DcmItem &item) addElementToDataset(result, item, new DcmDecimalString(MetersetExposure), "1", "2C", "ExposureSequence"); addElementToDataset(result, item, new DcmDecimalString(DiaphragmPosition), "4", "3", "ExposureSequence"); if (result.good()) result = BeamLimitingDeviceSequence.write(item, "1-n", "3", "ExposureSequence"); + if (result.good()) result = EnhancedRTBeamLimitingOpeningSequence.write(item, "1-n", "2C", "ExposureSequence"); addElementToDataset(result, item, new DcmDecimalString(GantryAngle), "1", "3", "ExposureSequence"); addElementToDataset(result, item, new DcmFloatingPointSingle(GantryPitchAngle), "1", "3", "ExposureSequence"); addElementToDataset(result, item, new DcmDecimalString(BeamLimitingDeviceAngle), "1", "3", "ExposureSequence"); @@ -877,10 +884,12 @@ OFCondition DRTExposureSequence::gotoFirstItem() OFCondition DRTExposureSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtfbdds.cc b/dcmrt/libsrc/drtfbdds.cc new file mode 100644 index 00000000..a5459e5a --- /dev/null +++ b/dcmrt/libsrc/drtfbdds.cc @@ -0,0 +1,728 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTFixedRTBeamDelimiterDeviceSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtfbdds.h" + + +// --- item class --- + +DRTFixedRTBeamDelimiterDeviceSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + CenterOfCircularOutline(DCM_CenterOfCircularOutline), + DiameterOfCircularOutline(DCM_DiameterOfCircularOutline), + NumberOfPolygonalVertices(DCM_NumberOfPolygonalVertices), + OutlineLeftVerticalEdge(DCM_OutlineLeftVerticalEdge), + OutlineLowerHorizontalEdge(DCM_OutlineLowerHorizontalEdge), + OutlineRightVerticalEdge(DCM_OutlineRightVerticalEdge), + OutlineShapeType(DCM_OutlineShapeType), + OutlineUpperHorizontalEdge(DCM_OutlineUpperHorizontalEdge), + VerticesOfThePolygonalOutline(DCM_VerticesOfThePolygonalOutline) +{ +} + + +DRTFixedRTBeamDelimiterDeviceSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + CenterOfCircularOutline(copy.CenterOfCircularOutline), + DiameterOfCircularOutline(copy.DiameterOfCircularOutline), + NumberOfPolygonalVertices(copy.NumberOfPolygonalVertices), + OutlineLeftVerticalEdge(copy.OutlineLeftVerticalEdge), + OutlineLowerHorizontalEdge(copy.OutlineLowerHorizontalEdge), + OutlineRightVerticalEdge(copy.OutlineRightVerticalEdge), + OutlineShapeType(copy.OutlineShapeType), + OutlineUpperHorizontalEdge(copy.OutlineUpperHorizontalEdge), + VerticesOfThePolygonalOutline(copy.VerticesOfThePolygonalOutline) +{ +} + + +DRTFixedRTBeamDelimiterDeviceSequence::Item::~Item() +{ +} + + +DRTFixedRTBeamDelimiterDeviceSequence::Item &DRTFixedRTBeamDelimiterDeviceSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + CenterOfCircularOutline = copy.CenterOfCircularOutline; + DiameterOfCircularOutline = copy.DiameterOfCircularOutline; + NumberOfPolygonalVertices = copy.NumberOfPolygonalVertices; + OutlineLeftVerticalEdge = copy.OutlineLeftVerticalEdge; + OutlineLowerHorizontalEdge = copy.OutlineLowerHorizontalEdge; + OutlineRightVerticalEdge = copy.OutlineRightVerticalEdge; + OutlineShapeType = copy.OutlineShapeType; + OutlineUpperHorizontalEdge = copy.OutlineUpperHorizontalEdge; + VerticesOfThePolygonalOutline = copy.VerticesOfThePolygonalOutline; + } + return *this; +} + + +void DRTFixedRTBeamDelimiterDeviceSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + OutlineShapeType.clear(); + OutlineLeftVerticalEdge.clear(); + OutlineRightVerticalEdge.clear(); + OutlineUpperHorizontalEdge.clear(); + OutlineLowerHorizontalEdge.clear(); + CenterOfCircularOutline.clear(); + DiameterOfCircularOutline.clear(); + NumberOfPolygonalVertices.clear(); + VerticesOfThePolygonalOutline.clear(); + } +} + + +OFBool DRTFixedRTBeamDelimiterDeviceSequence::Item::isEmpty() +{ + return OutlineShapeType.isEmpty() && + OutlineLeftVerticalEdge.isEmpty() && + OutlineRightVerticalEdge.isEmpty() && + OutlineUpperHorizontalEdge.isEmpty() && + OutlineLowerHorizontalEdge.isEmpty() && + CenterOfCircularOutline.isEmpty() && + DiameterOfCircularOutline.isEmpty() && + NumberOfPolygonalVertices.isEmpty() && + VerticesOfThePolygonalOutline.isEmpty(); +} + + +OFBool DRTFixedRTBeamDelimiterDeviceSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, OutlineShapeType, "1", "1", "FixedRTBeamDelimiterDeviceSequence"); + getAndCheckElementFromDataset(item, OutlineLeftVerticalEdge, "1", "1C", "FixedRTBeamDelimiterDeviceSequence"); + getAndCheckElementFromDataset(item, OutlineRightVerticalEdge, "1", "1C", "FixedRTBeamDelimiterDeviceSequence"); + getAndCheckElementFromDataset(item, OutlineUpperHorizontalEdge, "1", "1C", "FixedRTBeamDelimiterDeviceSequence"); + getAndCheckElementFromDataset(item, OutlineLowerHorizontalEdge, "1", "1C", "FixedRTBeamDelimiterDeviceSequence"); + getAndCheckElementFromDataset(item, CenterOfCircularOutline, "2", "1C", "FixedRTBeamDelimiterDeviceSequence"); + getAndCheckElementFromDataset(item, DiameterOfCircularOutline, "1", "1C", "FixedRTBeamDelimiterDeviceSequence"); + getAndCheckElementFromDataset(item, NumberOfPolygonalVertices, "1", "1C", "FixedRTBeamDelimiterDeviceSequence"); + getAndCheckElementFromDataset(item, VerticesOfThePolygonalOutline, "1", "1C", "FixedRTBeamDelimiterDeviceSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmCodeString(OutlineShapeType), "1", "1", "FixedRTBeamDelimiterDeviceSequence"); + addElementToDataset(result, item, new DcmFloatingPointDouble(OutlineLeftVerticalEdge), "1", "1C", "FixedRTBeamDelimiterDeviceSequence"); + addElementToDataset(result, item, new DcmFloatingPointDouble(OutlineRightVerticalEdge), "1", "1C", "FixedRTBeamDelimiterDeviceSequence"); + addElementToDataset(result, item, new DcmFloatingPointDouble(OutlineUpperHorizontalEdge), "1", "1C", "FixedRTBeamDelimiterDeviceSequence"); + addElementToDataset(result, item, new DcmFloatingPointDouble(OutlineLowerHorizontalEdge), "1", "1C", "FixedRTBeamDelimiterDeviceSequence"); + addElementToDataset(result, item, new DcmFloatingPointDouble(CenterOfCircularOutline), "2", "1C", "FixedRTBeamDelimiterDeviceSequence"); + addElementToDataset(result, item, new DcmFloatingPointDouble(DiameterOfCircularOutline), "1", "1C", "FixedRTBeamDelimiterDeviceSequence"); + addElementToDataset(result, item, new DcmUnsignedLong(NumberOfPolygonalVertices), "1", "1C", "FixedRTBeamDelimiterDeviceSequence"); + addElementToDataset(result, item, new DcmOtherFloat(VerticesOfThePolygonalOutline), "1", "1C", "FixedRTBeamDelimiterDeviceSequence"); + } + return result; +} + + +OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::getCenterOfCircularOutline(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointDouble &, CenterOfCircularOutline).getFloat64(value, pos); +} + + +OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::getDiameterOfCircularOutline(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointDouble &, DiameterOfCircularOutline).getFloat64(value, pos); +} + + +OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::getNumberOfPolygonalVertices(Uint32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmUnsignedLong &, NumberOfPolygonalVertices).getUint32(value, pos); +} + + +OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::getOutlineLeftVerticalEdge(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointDouble &, OutlineLeftVerticalEdge).getFloat64(value, pos); +} + + +OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::getOutlineLowerHorizontalEdge(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointDouble &, OutlineLowerHorizontalEdge).getFloat64(value, pos); +} + + +OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::getOutlineRightVerticalEdge(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointDouble &, OutlineRightVerticalEdge).getFloat64(value, pos); +} + + +OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::getOutlineShapeType(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(OutlineShapeType, value, pos); +} + + +OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::getOutlineUpperHorizontalEdge(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointDouble &, OutlineUpperHorizontalEdge).getFloat64(value, pos); +} + + +OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::setCenterOfCircularOutline(const Float64 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return CenterOfCircularOutline.putFloat64(value, pos); +} + + +OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::setDiameterOfCircularOutline(const Float64 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return DiameterOfCircularOutline.putFloat64(value, pos); +} + + +OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::setNumberOfPolygonalVertices(const Uint32 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return NumberOfPolygonalVertices.putUint32(value, pos); +} + + +OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::setOutlineLeftVerticalEdge(const Float64 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OutlineLeftVerticalEdge.putFloat64(value, pos); +} + + +OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::setOutlineLowerHorizontalEdge(const Float64 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OutlineLowerHorizontalEdge.putFloat64(value, pos); +} + + +OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::setOutlineRightVerticalEdge(const Float64 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OutlineRightVerticalEdge.putFloat64(value, pos); +} + + +OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::setOutlineShapeType(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = OutlineShapeType.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::setOutlineUpperHorizontalEdge(const Float64 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OutlineUpperHorizontalEdge.putFloat64(value, pos); +} + + +// --- sequence class --- + +DRTFixedRTBeamDelimiterDeviceSequence::DRTFixedRTBeamDelimiterDeviceSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTFixedRTBeamDelimiterDeviceSequence::DRTFixedRTBeamDelimiterDeviceSequence(const DRTFixedRTBeamDelimiterDeviceSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTFixedRTBeamDelimiterDeviceSequence &DRTFixedRTBeamDelimiterDeviceSequence::operator=(const DRTFixedRTBeamDelimiterDeviceSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTFixedRTBeamDelimiterDeviceSequence::~DRTFixedRTBeamDelimiterDeviceSequence() +{ + clear(); +} + + +void DRTFixedRTBeamDelimiterDeviceSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTFixedRTBeamDelimiterDeviceSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTFixedRTBeamDelimiterDeviceSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTFixedRTBeamDelimiterDeviceSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTFixedRTBeamDelimiterDeviceSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTFixedRTBeamDelimiterDeviceSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTFixedRTBeamDelimiterDeviceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTFixedRTBeamDelimiterDeviceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTFixedRTBeamDelimiterDeviceSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTFixedRTBeamDelimiterDeviceSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTFixedRTBeamDelimiterDeviceSequence::Item &DRTFixedRTBeamDelimiterDeviceSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTFixedRTBeamDelimiterDeviceSequence::Item &DRTFixedRTBeamDelimiterDeviceSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTFixedRTBeamDelimiterDeviceSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTFixedRTBeamDelimiterDeviceSequence::Item &DRTFixedRTBeamDelimiterDeviceSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTFixedRTBeamDelimiterDeviceSequence::Item &DRTFixedRTBeamDelimiterDeviceSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTFixedRTBeamDelimiterDeviceSequence::Item &DRTFixedRTBeamDelimiterDeviceSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTFixedRTBeamDelimiterDeviceSequence::Item &DRTFixedRTBeamDelimiterDeviceSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTFixedRTBeamDelimiterDeviceSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTFixedRTBeamDelimiterDeviceSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTFixedRTBeamDelimiterDeviceSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTFixedRTBeamDelimiterDeviceSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_FixedRTBeamDelimiterDeviceSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_FixedRTBeamDelimiterDeviceSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTFixedRTBeamDelimiterDeviceSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_FixedRTBeamDelimiterDeviceSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtfds.cc b/dcmrt/libsrc/drtfds.cc index 91188714..2944813c 100644 --- a/dcmrt/libsrc/drtfds.cc +++ b/dcmrt/libsrc/drtfds.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTFixationDeviceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -409,10 +409,12 @@ OFCondition DRTFixationDeviceSequence::gotoFirstItem() OFCondition DRTFixationDeviceSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtfes.cc b/dcmrt/libsrc/drtfes.cc index f1e4e01c..af9a2dab 100644 --- a/dcmrt/libsrc/drtfes.cc +++ b/dcmrt/libsrc/drtfes.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTFrameExtractionSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -318,10 +318,12 @@ OFCondition DRTFrameExtractionSequence::gotoFirstItem() OFCondition DRTFrameExtractionSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtfgs.cc b/dcmrt/libsrc/drtfgs.cc index d0f1d7be..b4ba6df2 100644 --- a/dcmrt/libsrc/drtfgs.cc +++ b/dcmrt/libsrc/drtfgs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTFractionGroupSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -22,6 +22,7 @@ DRTFractionGroupSequence::Item::Item(const OFBool emptyDefaultItem) : EmptyDefaultItem(emptyDefaultItem), BeamDoseMeaning(DCM_BeamDoseMeaning), + DefinitionSourceSequence(emptyDefaultItem /*emptyDefaultSequence*/), FractionGroupDescription(DCM_FractionGroupDescription), FractionGroupNumber(DCM_FractionGroupNumber), FractionPattern(DCM_FractionPattern), @@ -41,6 +42,7 @@ DRTFractionGroupSequence::Item::Item(const OFBool emptyDefaultItem) DRTFractionGroupSequence::Item::Item(const Item ©) : EmptyDefaultItem(copy.EmptyDefaultItem), BeamDoseMeaning(copy.BeamDoseMeaning), + DefinitionSourceSequence(copy.DefinitionSourceSequence), FractionGroupDescription(copy.FractionGroupDescription), FractionGroupNumber(copy.FractionGroupNumber), FractionPattern(copy.FractionPattern), @@ -68,6 +70,7 @@ DRTFractionGroupSequence::Item &DRTFractionGroupSequence::Item::operator=(const { EmptyDefaultItem = copy.EmptyDefaultItem; BeamDoseMeaning = copy.BeamDoseMeaning; + DefinitionSourceSequence = copy.DefinitionSourceSequence; FractionGroupDescription = copy.FractionGroupDescription; FractionGroupNumber = copy.FractionGroupNumber; FractionPattern = copy.FractionPattern; @@ -92,6 +95,7 @@ void DRTFractionGroupSequence::Item::clear() /* clear all DICOM attributes */ FractionGroupNumber.clear(); FractionGroupDescription.clear(); + DefinitionSourceSequence.clear(); ReferencedDoseSequence.clear(); ReferencedDoseReferenceSequence.clear(); NumberOfFractionsPlanned.clear(); @@ -111,6 +115,7 @@ OFBool DRTFractionGroupSequence::Item::isEmpty() { return FractionGroupNumber.isEmpty() && FractionGroupDescription.isEmpty() && + DefinitionSourceSequence.isEmpty() && ReferencedDoseSequence.isEmpty() && ReferencedDoseReferenceSequence.isEmpty() && NumberOfFractionsPlanned.isEmpty() && @@ -140,6 +145,7 @@ OFCondition DRTFractionGroupSequence::Item::read(DcmItem &item) clear(); getAndCheckElementFromDataset(item, FractionGroupNumber, "1", "1", "FractionGroupSequence"); getAndCheckElementFromDataset(item, FractionGroupDescription, "1", "3", "FractionGroupSequence"); + DefinitionSourceSequence.read(item, "1-n", "3", "FractionGroupSequence"); ReferencedDoseSequence.read(item, "1-n", "3", "FractionGroupSequence"); ReferencedDoseReferenceSequence.read(item, "1-n", "3", "FractionGroupSequence"); getAndCheckElementFromDataset(item, NumberOfFractionsPlanned, "1", "2", "FractionGroupSequence"); @@ -165,6 +171,7 @@ OFCondition DRTFractionGroupSequence::Item::write(DcmItem &item) result = EC_Normal; addElementToDataset(result, item, new DcmIntegerString(FractionGroupNumber), "1", "1", "FractionGroupSequence"); addElementToDataset(result, item, new DcmLongString(FractionGroupDescription), "1", "3", "FractionGroupSequence"); + if (result.good()) result = DefinitionSourceSequence.write(item, "1-n", "3", "FractionGroupSequence"); if (result.good()) result = ReferencedDoseSequence.write(item, "1-n", "3", "FractionGroupSequence"); if (result.good()) result = ReferencedDoseReferenceSequence.write(item, "1-n", "3", "FractionGroupSequence"); addElementToDataset(result, item, new DcmIntegerString(NumberOfFractionsPlanned), "1", "2", "FractionGroupSequence"); @@ -557,10 +564,12 @@ OFCondition DRTFractionGroupSequence::gotoFirstItem() OFCondition DRTFractionGroupSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtfgss.cc b/dcmrt/libsrc/drtfgss.cc index c8864be2..6348d5a1 100644 --- a/dcmrt/libsrc/drtfgss.cc +++ b/dcmrt/libsrc/drtfgss.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTFractionGroupSummarySequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -364,10 +364,12 @@ OFCondition DRTFractionGroupSummarySequence::gotoFirstItem() OFCondition DRTFractionGroupSummarySequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtfms.cc b/dcmrt/libsrc/drtfms.cc index 7ff101ae..0ce2f537 100644 --- a/dcmrt/libsrc/drtfms.cc +++ b/dcmrt/libsrc/drtfms.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTFluenceMapSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -281,10 +281,12 @@ OFCondition DRTFluenceMapSequence::gotoFirstItem() OFCondition DRTFluenceMapSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtfsss.cc b/dcmrt/libsrc/drtfsss.cc index d5dfc7e2..14956a43 100644 --- a/dcmrt/libsrc/drtfsss.cc +++ b/dcmrt/libsrc/drtfsss.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTFractionStatusSummarySequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -339,10 +339,12 @@ OFCondition DRTFractionStatusSummarySequence::gotoFirstItem() OFCondition DRTFractionStatusSummarySequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtgas.cc b/dcmrt/libsrc/drtgas.cc deleted file mode 100644 index aa4dc17e..00000000 --- a/dcmrt/libsrc/drtgas.cc +++ /dev/null @@ -1,694 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Source file for class DRTGeneralAccessorySequence - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/dcmrt/seq/drtgas.h" - - -// --- item class --- - -DRTGeneralAccessorySequence::Item::Item(const OFBool emptyDefaultItem) - : EmptyDefaultItem(emptyDefaultItem), - AccessoryCode(DCM_AccessoryCode), - GeneralAccessoryDescription(DCM_GeneralAccessoryDescription), - GeneralAccessoryID(DCM_GeneralAccessoryID), - GeneralAccessoryNumber(DCM_GeneralAccessoryNumber), - GeneralAccessoryType(DCM_GeneralAccessoryType), - SourceToGeneralAccessoryDistance(DCM_SourceToGeneralAccessoryDistance) -{ -} - - -DRTGeneralAccessorySequence::Item::Item(const Item ©) - : EmptyDefaultItem(copy.EmptyDefaultItem), - AccessoryCode(copy.AccessoryCode), - GeneralAccessoryDescription(copy.GeneralAccessoryDescription), - GeneralAccessoryID(copy.GeneralAccessoryID), - GeneralAccessoryNumber(copy.GeneralAccessoryNumber), - GeneralAccessoryType(copy.GeneralAccessoryType), - SourceToGeneralAccessoryDistance(copy.SourceToGeneralAccessoryDistance) -{ -} - - -DRTGeneralAccessorySequence::Item::~Item() -{ -} - - -DRTGeneralAccessorySequence::Item &DRTGeneralAccessorySequence::Item::operator=(const Item ©) -{ - if (this != ©) - { - EmptyDefaultItem = copy.EmptyDefaultItem; - AccessoryCode = copy.AccessoryCode; - GeneralAccessoryDescription = copy.GeneralAccessoryDescription; - GeneralAccessoryID = copy.GeneralAccessoryID; - GeneralAccessoryNumber = copy.GeneralAccessoryNumber; - GeneralAccessoryType = copy.GeneralAccessoryType; - SourceToGeneralAccessoryDistance = copy.SourceToGeneralAccessoryDistance; - } - return *this; -} - - -void DRTGeneralAccessorySequence::Item::clear() -{ - if (!EmptyDefaultItem) - { - /* clear all DICOM attributes */ - GeneralAccessoryNumber.clear(); - GeneralAccessoryID.clear(); - GeneralAccessoryDescription.clear(); - GeneralAccessoryType.clear(); - AccessoryCode.clear(); - SourceToGeneralAccessoryDistance.clear(); - } -} - - -OFBool DRTGeneralAccessorySequence::Item::isEmpty() -{ - return GeneralAccessoryNumber.isEmpty() && - GeneralAccessoryID.isEmpty() && - GeneralAccessoryDescription.isEmpty() && - GeneralAccessoryType.isEmpty() && - AccessoryCode.isEmpty() && - SourceToGeneralAccessoryDistance.isEmpty(); -} - - -OFBool DRTGeneralAccessorySequence::Item::isValid() const -{ - return !EmptyDefaultItem; -} - - -OFCondition DRTGeneralAccessorySequence::Item::read(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - /* re-initialize object */ - clear(); - getAndCheckElementFromDataset(item, GeneralAccessoryNumber, "1", "1", "GeneralAccessorySequence"); - getAndCheckElementFromDataset(item, GeneralAccessoryID, "1", "1", "GeneralAccessorySequence"); - getAndCheckElementFromDataset(item, GeneralAccessoryDescription, "1", "3", "GeneralAccessorySequence"); - getAndCheckElementFromDataset(item, GeneralAccessoryType, "1", "3", "GeneralAccessorySequence"); - getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "GeneralAccessorySequence"); - getAndCheckElementFromDataset(item, SourceToGeneralAccessoryDistance, "1", "3", "GeneralAccessorySequence"); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTGeneralAccessorySequence::Item::write(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = EC_Normal; - addElementToDataset(result, item, new DcmIntegerString(GeneralAccessoryNumber), "1", "1", "GeneralAccessorySequence"); - addElementToDataset(result, item, new DcmShortString(GeneralAccessoryID), "1", "1", "GeneralAccessorySequence"); - addElementToDataset(result, item, new DcmShortText(GeneralAccessoryDescription), "1", "3", "GeneralAccessorySequence"); - addElementToDataset(result, item, new DcmCodeString(GeneralAccessoryType), "1", "3", "GeneralAccessorySequence"); - addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "GeneralAccessorySequence"); - addElementToDataset(result, item, new DcmFloatingPointSingle(SourceToGeneralAccessoryDistance), "1", "3", "GeneralAccessorySequence"); - } - return result; -} - - -OFCondition DRTGeneralAccessorySequence::Item::getAccessoryCode(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(AccessoryCode, value, pos); -} - - -OFCondition DRTGeneralAccessorySequence::Item::getGeneralAccessoryDescription(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(GeneralAccessoryDescription, value, pos); -} - - -OFCondition DRTGeneralAccessorySequence::Item::getGeneralAccessoryID(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(GeneralAccessoryID, value, pos); -} - - -OFCondition DRTGeneralAccessorySequence::Item::getGeneralAccessoryNumber(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(GeneralAccessoryNumber, value, pos); -} - - -OFCondition DRTGeneralAccessorySequence::Item::getGeneralAccessoryNumber(Sint32 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmIntegerString &, GeneralAccessoryNumber).getSint32(value, pos); -} - - -OFCondition DRTGeneralAccessorySequence::Item::getGeneralAccessoryType(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(GeneralAccessoryType, value, pos); -} - - -OFCondition DRTGeneralAccessorySequence::Item::getSourceToGeneralAccessoryDistance(Float32 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmFloatingPointSingle &, SourceToGeneralAccessoryDistance).getFloat32(value, pos); -} - - -OFCondition DRTGeneralAccessorySequence::Item::setAccessoryCode(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = AccessoryCode.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTGeneralAccessorySequence::Item::setGeneralAccessoryDescription(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal; - if (result.good()) - result = GeneralAccessoryDescription.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTGeneralAccessorySequence::Item::setGeneralAccessoryID(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = GeneralAccessoryID.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTGeneralAccessorySequence::Item::setGeneralAccessoryNumber(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = GeneralAccessoryNumber.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTGeneralAccessorySequence::Item::setGeneralAccessoryType(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = GeneralAccessoryType.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTGeneralAccessorySequence::Item::setSourceToGeneralAccessoryDistance(const Float32 value, const unsigned long pos) -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return SourceToGeneralAccessoryDistance.putFloat32(value, pos); -} - - -// --- sequence class --- - -DRTGeneralAccessorySequence::DRTGeneralAccessorySequence(const OFBool emptyDefaultSequence) - : EmptyDefaultSequence(emptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - CurrentItem = SequenceOfItems.end(); -} - - -DRTGeneralAccessorySequence::DRTGeneralAccessorySequence(const DRTGeneralAccessorySequence ©) - : EmptyDefaultSequence(copy.EmptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); -} - - -DRTGeneralAccessorySequence &DRTGeneralAccessorySequence::operator=(const DRTGeneralAccessorySequence ©) -{ - if (this != ©) - { - clear(); - EmptyDefaultSequence = copy.EmptyDefaultSequence; - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); - } - return *this; -} - - -DRTGeneralAccessorySequence::~DRTGeneralAccessorySequence() -{ - clear(); -} - - -void DRTGeneralAccessorySequence::clear() -{ - if (!EmptyDefaultSequence) - { - CurrentItem = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* delete all items and free memory */ - while (CurrentItem != last) - { - delete (*CurrentItem); - CurrentItem = SequenceOfItems.erase(CurrentItem); - } - /* make sure that the list is empty */ - SequenceOfItems.clear(); - CurrentItem = SequenceOfItems.end(); - } -} - - -OFBool DRTGeneralAccessorySequence::isEmpty() -{ - return SequenceOfItems.empty(); -} - - -OFBool DRTGeneralAccessorySequence::isValid() const -{ - return !EmptyDefaultSequence; -} - - -size_t DRTGeneralAccessorySequence::getNumberOfItems() const -{ - return SequenceOfItems.size(); -} - - -OFCondition DRTGeneralAccessorySequence::gotoFirstItem() -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - CurrentItem = SequenceOfItems.begin(); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTGeneralAccessorySequence::gotoNextItem() -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - ++CurrentItem; - result = EC_Normal; - } - return result; -} - - -OFCondition DRTGeneralAccessorySequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTGeneralAccessorySequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTGeneralAccessorySequence::gotoItem(const size_t num) -{ - return gotoItem(num, CurrentItem); -} - - -OFCondition DRTGeneralAccessorySequence::getCurrentItem(Item *&item) const -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - item = *CurrentItem; - result = EC_Normal; - } - return result; -} - - -DRTGeneralAccessorySequence::Item &DRTGeneralAccessorySequence::getCurrentItem() -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -const DRTGeneralAccessorySequence::Item &DRTGeneralAccessorySequence::getCurrentItem() const -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -OFCondition DRTGeneralAccessorySequence::getItem(const size_t num, Item *&item) -{ - OFListIterator(Item *) iterator; - OFCondition result = gotoItem(num, iterator); - if (result.good()) - item = *iterator; - return result; -} - - -DRTGeneralAccessorySequence::Item &DRTGeneralAccessorySequence::getItem(const size_t num) -{ - OFListIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -const DRTGeneralAccessorySequence::Item &DRTGeneralAccessorySequence::getItem(const size_t num) const -{ - OFListConstIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -DRTGeneralAccessorySequence::Item &DRTGeneralAccessorySequence::operator[](const size_t num) -{ - return getItem(num); -} - - -const DRTGeneralAccessorySequence::Item &DRTGeneralAccessorySequence::operator[](const size_t num) const -{ - return getItem(num); -} - - -OFCondition DRTGeneralAccessorySequence::addItem(Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.push_back(item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } - return result; -} - - -OFCondition DRTGeneralAccessorySequence::insertItem(const size_t pos, Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - result = gotoItem(pos, iterator); - if (result.good()) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.insert(iterator, 1, item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } else - result = addItem(item); - } - return result; -} - - -OFCondition DRTGeneralAccessorySequence::removeItem(const size_t pos) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - if (gotoItem(pos, iterator).good()) - { - delete *iterator; - iterator = SequenceOfItems.erase(iterator); - result = EC_Normal; - } else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTGeneralAccessorySequence::read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - /* re-initialize object */ - clear(); - /* retrieve sequence element from dataset */ - DcmSequenceOfItems *sequence; - result = dataset.findAndGetSequence(DCM_GeneralAccessorySequence, sequence); - if (sequence != NULL) - { - if (checkElementValue(*sequence, card, type, result, moduleName)) - { - DcmStack stack; - OFBool first = OFTrue; - /* iterate over all sequence items */ - while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) - { - DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); - if (ditem != NULL) - { - Item *item = new Item(); - if (item != NULL) - { - result = item->read(*ditem); - if (result.good()) - { - /* append new item to the end of the list */ - SequenceOfItems.push_back(item); - first = OFFalse; - } - } else - result = EC_MemoryExhausted; - } else - result = EC_CorruptedData; - } - } - } else { - DcmSequenceOfItems element(DCM_GeneralAccessorySequence); - checkElementValue(element, card, type, result, moduleName); - } - } - return result; -} - - -OFCondition DRTGeneralAccessorySequence::write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - result = EC_MemoryExhausted; - DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_GeneralAccessorySequence); - if (sequence != NULL) - { - result = EC_Normal; - /* an empty optional sequence is not written */ - if ((type == "2") || !SequenceOfItems.empty()) - { - OFListIterator(Item *) iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* iterate over all sequence items */ - while (result.good() && (iterator != last)) - { - DcmItem *item = new DcmItem(); - if (item != NULL) - { - /* append new item to the end of the sequence */ - result = sequence->append(item); - if (result.good()) - { - result = (*iterator)->write(*item); - ++iterator; - } else - delete item; - } else - result = EC_MemoryExhausted; - } - if (result.good()) - { - /* insert sequence element into the dataset */ - result = dataset.insert(sequence, OFTrue /*replaceOld*/); - } - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - if (result.good()) - { - /* forget reference to sequence object (avoid deletion below) */ - sequence = NULL; - } - } - else if (type == "1") - { - /* empty type 1 sequence not allowed */ - result = RT_EC_InvalidValue; - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - } - /* delete sequence (if not inserted into the dataset) */ - delete sequence; - } - } - return result; -} - - -// end of source file diff --git a/dcmrt/libsrc/drtgas1.cc b/dcmrt/libsrc/drtgas1.cc new file mode 100644 index 00000000..f1992a08 --- /dev/null +++ b/dcmrt/libsrc/drtgas1.cc @@ -0,0 +1,696 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTGeneralAccessorySequenceInEquipmentSpecificationModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtgas1.h" + + +// --- item class --- + +DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + AccessoryCode(DCM_AccessoryCode), + GeneralAccessoryDescription(DCM_GeneralAccessoryDescription), + GeneralAccessoryID(DCM_GeneralAccessoryID), + GeneralAccessoryNumber(DCM_GeneralAccessoryNumber), + GeneralAccessoryType(DCM_GeneralAccessoryType), + SourceToGeneralAccessoryDistance(DCM_SourceToGeneralAccessoryDistance) +{ +} + + +DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + AccessoryCode(copy.AccessoryCode), + GeneralAccessoryDescription(copy.GeneralAccessoryDescription), + GeneralAccessoryID(copy.GeneralAccessoryID), + GeneralAccessoryNumber(copy.GeneralAccessoryNumber), + GeneralAccessoryType(copy.GeneralAccessoryType), + SourceToGeneralAccessoryDistance(copy.SourceToGeneralAccessoryDistance) +{ +} + + +DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::~Item() +{ +} + + +DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item &DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + AccessoryCode = copy.AccessoryCode; + GeneralAccessoryDescription = copy.GeneralAccessoryDescription; + GeneralAccessoryID = copy.GeneralAccessoryID; + GeneralAccessoryNumber = copy.GeneralAccessoryNumber; + GeneralAccessoryType = copy.GeneralAccessoryType; + SourceToGeneralAccessoryDistance = copy.SourceToGeneralAccessoryDistance; + } + return *this; +} + + +void DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + GeneralAccessoryNumber.clear(); + GeneralAccessoryID.clear(); + GeneralAccessoryDescription.clear(); + GeneralAccessoryType.clear(); + AccessoryCode.clear(); + SourceToGeneralAccessoryDistance.clear(); + } +} + + +OFBool DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::isEmpty() +{ + return GeneralAccessoryNumber.isEmpty() && + GeneralAccessoryID.isEmpty() && + GeneralAccessoryDescription.isEmpty() && + GeneralAccessoryType.isEmpty() && + AccessoryCode.isEmpty() && + SourceToGeneralAccessoryDistance.isEmpty(); +} + + +OFBool DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, GeneralAccessoryNumber, "1", "1", "GeneralAccessorySequence"); + getAndCheckElementFromDataset(item, GeneralAccessoryID, "1", "1", "GeneralAccessorySequence"); + getAndCheckElementFromDataset(item, GeneralAccessoryDescription, "1", "3", "GeneralAccessorySequence"); + getAndCheckElementFromDataset(item, GeneralAccessoryType, "1", "3", "GeneralAccessorySequence"); + getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "GeneralAccessorySequence"); + getAndCheckElementFromDataset(item, SourceToGeneralAccessoryDistance, "1", "3", "GeneralAccessorySequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmIntegerString(GeneralAccessoryNumber), "1", "1", "GeneralAccessorySequence"); + addElementToDataset(result, item, new DcmShortString(GeneralAccessoryID), "1", "1", "GeneralAccessorySequence"); + addElementToDataset(result, item, new DcmShortText(GeneralAccessoryDescription), "1", "3", "GeneralAccessorySequence"); + addElementToDataset(result, item, new DcmCodeString(GeneralAccessoryType), "1", "3", "GeneralAccessorySequence"); + addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "GeneralAccessorySequence"); + addElementToDataset(result, item, new DcmFloatingPointSingle(SourceToGeneralAccessoryDistance), "1", "3", "GeneralAccessorySequence"); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::getAccessoryCode(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(AccessoryCode, value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::getGeneralAccessoryDescription(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(GeneralAccessoryDescription, value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::getGeneralAccessoryID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(GeneralAccessoryID, value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::getGeneralAccessoryNumber(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(GeneralAccessoryNumber, value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::getGeneralAccessoryNumber(Sint32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmIntegerString &, GeneralAccessoryNumber).getSint32(value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::getGeneralAccessoryType(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(GeneralAccessoryType, value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::getSourceToGeneralAccessoryDistance(Float32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointSingle &, SourceToGeneralAccessoryDistance).getFloat32(value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::setAccessoryCode(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = AccessoryCode.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::setGeneralAccessoryDescription(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal; + if (result.good()) + result = GeneralAccessoryDescription.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::setGeneralAccessoryID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = GeneralAccessoryID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::setGeneralAccessoryNumber(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = GeneralAccessoryNumber.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::setGeneralAccessoryType(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = GeneralAccessoryType.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::setSourceToGeneralAccessoryDistance(const Float32 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return SourceToGeneralAccessoryDistance.putFloat32(value, pos); +} + + +// --- sequence class --- + +DRTGeneralAccessorySequenceInEquipmentSpecificationModule::DRTGeneralAccessorySequenceInEquipmentSpecificationModule(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTGeneralAccessorySequenceInEquipmentSpecificationModule::DRTGeneralAccessorySequenceInEquipmentSpecificationModule(const DRTGeneralAccessorySequenceInEquipmentSpecificationModule ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTGeneralAccessorySequenceInEquipmentSpecificationModule &DRTGeneralAccessorySequenceInEquipmentSpecificationModule::operator=(const DRTGeneralAccessorySequenceInEquipmentSpecificationModule ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTGeneralAccessorySequenceInEquipmentSpecificationModule::~DRTGeneralAccessorySequenceInEquipmentSpecificationModule() +{ + clear(); +} + + +void DRTGeneralAccessorySequenceInEquipmentSpecificationModule::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTGeneralAccessorySequenceInEquipmentSpecificationModule::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTGeneralAccessorySequenceInEquipmentSpecificationModule::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTGeneralAccessorySequenceInEquipmentSpecificationModule::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item &DRTGeneralAccessorySequenceInEquipmentSpecificationModule::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item &DRTGeneralAccessorySequenceInEquipmentSpecificationModule::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item &DRTGeneralAccessorySequenceInEquipmentSpecificationModule::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item &DRTGeneralAccessorySequenceInEquipmentSpecificationModule::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item &DRTGeneralAccessorySequenceInEquipmentSpecificationModule::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item &DRTGeneralAccessorySequenceInEquipmentSpecificationModule::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_GeneralAccessorySequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_GeneralAccessorySequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_GeneralAccessorySequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtgas2.cc b/dcmrt/libsrc/drtgas2.cc new file mode 100644 index 00000000..dda4ecf5 --- /dev/null +++ b/dcmrt/libsrc/drtgas2.cc @@ -0,0 +1,696 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTGeneralAccessorySequenceInRTBeamsModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtgas2.h" + + +// --- item class --- + +DRTGeneralAccessorySequenceInRTBeamsModule::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + AccessoryCode(DCM_AccessoryCode), + GeneralAccessoryDescription(DCM_GeneralAccessoryDescription), + GeneralAccessoryID(DCM_GeneralAccessoryID), + GeneralAccessoryNumber(DCM_GeneralAccessoryNumber), + GeneralAccessoryType(DCM_GeneralAccessoryType), + SourceToGeneralAccessoryDistance(DCM_SourceToGeneralAccessoryDistance) +{ +} + + +DRTGeneralAccessorySequenceInRTBeamsModule::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + AccessoryCode(copy.AccessoryCode), + GeneralAccessoryDescription(copy.GeneralAccessoryDescription), + GeneralAccessoryID(copy.GeneralAccessoryID), + GeneralAccessoryNumber(copy.GeneralAccessoryNumber), + GeneralAccessoryType(copy.GeneralAccessoryType), + SourceToGeneralAccessoryDistance(copy.SourceToGeneralAccessoryDistance) +{ +} + + +DRTGeneralAccessorySequenceInRTBeamsModule::Item::~Item() +{ +} + + +DRTGeneralAccessorySequenceInRTBeamsModule::Item &DRTGeneralAccessorySequenceInRTBeamsModule::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + AccessoryCode = copy.AccessoryCode; + GeneralAccessoryDescription = copy.GeneralAccessoryDescription; + GeneralAccessoryID = copy.GeneralAccessoryID; + GeneralAccessoryNumber = copy.GeneralAccessoryNumber; + GeneralAccessoryType = copy.GeneralAccessoryType; + SourceToGeneralAccessoryDistance = copy.SourceToGeneralAccessoryDistance; + } + return *this; +} + + +void DRTGeneralAccessorySequenceInRTBeamsModule::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + GeneralAccessoryNumber.clear(); + GeneralAccessoryID.clear(); + GeneralAccessoryDescription.clear(); + GeneralAccessoryType.clear(); + AccessoryCode.clear(); + SourceToGeneralAccessoryDistance.clear(); + } +} + + +OFBool DRTGeneralAccessorySequenceInRTBeamsModule::Item::isEmpty() +{ + return GeneralAccessoryNumber.isEmpty() && + GeneralAccessoryID.isEmpty() && + GeneralAccessoryDescription.isEmpty() && + GeneralAccessoryType.isEmpty() && + AccessoryCode.isEmpty() && + SourceToGeneralAccessoryDistance.isEmpty(); +} + + +OFBool DRTGeneralAccessorySequenceInRTBeamsModule::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, GeneralAccessoryNumber, "1", "1", "GeneralAccessorySequence"); + getAndCheckElementFromDataset(item, GeneralAccessoryID, "1", "1", "GeneralAccessorySequence"); + getAndCheckElementFromDataset(item, GeneralAccessoryDescription, "1", "3", "GeneralAccessorySequence"); + getAndCheckElementFromDataset(item, GeneralAccessoryType, "1", "3", "GeneralAccessorySequence"); + getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "GeneralAccessorySequence"); + getAndCheckElementFromDataset(item, SourceToGeneralAccessoryDistance, "1", "3", "GeneralAccessorySequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmIntegerString(GeneralAccessoryNumber), "1", "1", "GeneralAccessorySequence"); + addElementToDataset(result, item, new DcmShortString(GeneralAccessoryID), "1", "1", "GeneralAccessorySequence"); + addElementToDataset(result, item, new DcmShortText(GeneralAccessoryDescription), "1", "3", "GeneralAccessorySequence"); + addElementToDataset(result, item, new DcmCodeString(GeneralAccessoryType), "1", "3", "GeneralAccessorySequence"); + addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "GeneralAccessorySequence"); + addElementToDataset(result, item, new DcmFloatingPointSingle(SourceToGeneralAccessoryDistance), "1", "3", "GeneralAccessorySequence"); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::Item::getAccessoryCode(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(AccessoryCode, value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::Item::getGeneralAccessoryDescription(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(GeneralAccessoryDescription, value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::Item::getGeneralAccessoryID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(GeneralAccessoryID, value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::Item::getGeneralAccessoryNumber(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(GeneralAccessoryNumber, value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::Item::getGeneralAccessoryNumber(Sint32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmIntegerString &, GeneralAccessoryNumber).getSint32(value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::Item::getGeneralAccessoryType(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(GeneralAccessoryType, value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::Item::getSourceToGeneralAccessoryDistance(Float32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointSingle &, SourceToGeneralAccessoryDistance).getFloat32(value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::Item::setAccessoryCode(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = AccessoryCode.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::Item::setGeneralAccessoryDescription(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal; + if (result.good()) + result = GeneralAccessoryDescription.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::Item::setGeneralAccessoryID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = GeneralAccessoryID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::Item::setGeneralAccessoryNumber(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = GeneralAccessoryNumber.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::Item::setGeneralAccessoryType(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = GeneralAccessoryType.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::Item::setSourceToGeneralAccessoryDistance(const Float32 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return SourceToGeneralAccessoryDistance.putFloat32(value, pos); +} + + +// --- sequence class --- + +DRTGeneralAccessorySequenceInRTBeamsModule::DRTGeneralAccessorySequenceInRTBeamsModule(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTGeneralAccessorySequenceInRTBeamsModule::DRTGeneralAccessorySequenceInRTBeamsModule(const DRTGeneralAccessorySequenceInRTBeamsModule ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTGeneralAccessorySequenceInRTBeamsModule &DRTGeneralAccessorySequenceInRTBeamsModule::operator=(const DRTGeneralAccessorySequenceInRTBeamsModule ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTGeneralAccessorySequenceInRTBeamsModule::~DRTGeneralAccessorySequenceInRTBeamsModule() +{ + clear(); +} + + +void DRTGeneralAccessorySequenceInRTBeamsModule::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTGeneralAccessorySequenceInRTBeamsModule::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTGeneralAccessorySequenceInRTBeamsModule::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTGeneralAccessorySequenceInRTBeamsModule::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTGeneralAccessorySequenceInRTBeamsModule::Item &DRTGeneralAccessorySequenceInRTBeamsModule::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTGeneralAccessorySequenceInRTBeamsModule::Item &DRTGeneralAccessorySequenceInRTBeamsModule::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTGeneralAccessorySequenceInRTBeamsModule::Item &DRTGeneralAccessorySequenceInRTBeamsModule::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTGeneralAccessorySequenceInRTBeamsModule::Item &DRTGeneralAccessorySequenceInRTBeamsModule::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTGeneralAccessorySequenceInRTBeamsModule::Item &DRTGeneralAccessorySequenceInRTBeamsModule::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTGeneralAccessorySequenceInRTBeamsModule::Item &DRTGeneralAccessorySequenceInRTBeamsModule::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_GeneralAccessorySequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_GeneralAccessorySequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_GeneralAccessorySequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtgas3.cc b/dcmrt/libsrc/drtgas3.cc new file mode 100644 index 00000000..16f55550 --- /dev/null +++ b/dcmrt/libsrc/drtgas3.cc @@ -0,0 +1,696 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtgas3.h" + + +// --- item class --- + +DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + AccessoryCode(DCM_AccessoryCode), + GeneralAccessoryDescription(DCM_GeneralAccessoryDescription), + GeneralAccessoryID(DCM_GeneralAccessoryID), + GeneralAccessoryNumber(DCM_GeneralAccessoryNumber), + GeneralAccessoryType(DCM_GeneralAccessoryType), + SourceToGeneralAccessoryDistance(DCM_SourceToGeneralAccessoryDistance) +{ +} + + +DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + AccessoryCode(copy.AccessoryCode), + GeneralAccessoryDescription(copy.GeneralAccessoryDescription), + GeneralAccessoryID(copy.GeneralAccessoryID), + GeneralAccessoryNumber(copy.GeneralAccessoryNumber), + GeneralAccessoryType(copy.GeneralAccessoryType), + SourceToGeneralAccessoryDistance(copy.SourceToGeneralAccessoryDistance) +{ +} + + +DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::~Item() +{ +} + + +DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item &DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + AccessoryCode = copy.AccessoryCode; + GeneralAccessoryDescription = copy.GeneralAccessoryDescription; + GeneralAccessoryID = copy.GeneralAccessoryID; + GeneralAccessoryNumber = copy.GeneralAccessoryNumber; + GeneralAccessoryType = copy.GeneralAccessoryType; + SourceToGeneralAccessoryDistance = copy.SourceToGeneralAccessoryDistance; + } + return *this; +} + + +void DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + GeneralAccessoryNumber.clear(); + GeneralAccessoryID.clear(); + GeneralAccessoryDescription.clear(); + GeneralAccessoryType.clear(); + AccessoryCode.clear(); + SourceToGeneralAccessoryDistance.clear(); + } +} + + +OFBool DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::isEmpty() +{ + return GeneralAccessoryNumber.isEmpty() && + GeneralAccessoryID.isEmpty() && + GeneralAccessoryDescription.isEmpty() && + GeneralAccessoryType.isEmpty() && + AccessoryCode.isEmpty() && + SourceToGeneralAccessoryDistance.isEmpty(); +} + + +OFBool DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, GeneralAccessoryNumber, "1", "1", "GeneralAccessorySequence"); + getAndCheckElementFromDataset(item, GeneralAccessoryID, "1", "1", "GeneralAccessorySequence"); + getAndCheckElementFromDataset(item, GeneralAccessoryDescription, "1", "3", "GeneralAccessorySequence"); + getAndCheckElementFromDataset(item, GeneralAccessoryType, "1", "3", "GeneralAccessorySequence"); + getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "GeneralAccessorySequence"); + getAndCheckElementFromDataset(item, SourceToGeneralAccessoryDistance, "1", "3", "GeneralAccessorySequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmIntegerString(GeneralAccessoryNumber), "1", "1", "GeneralAccessorySequence"); + addElementToDataset(result, item, new DcmShortString(GeneralAccessoryID), "1", "1", "GeneralAccessorySequence"); + addElementToDataset(result, item, new DcmShortText(GeneralAccessoryDescription), "1", "3", "GeneralAccessorySequence"); + addElementToDataset(result, item, new DcmCodeString(GeneralAccessoryType), "1", "3", "GeneralAccessorySequence"); + addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "GeneralAccessorySequence"); + addElementToDataset(result, item, new DcmFloatingPointSingle(SourceToGeneralAccessoryDistance), "1", "3", "GeneralAccessorySequence"); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::getAccessoryCode(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(AccessoryCode, value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::getGeneralAccessoryDescription(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(GeneralAccessoryDescription, value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::getGeneralAccessoryID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(GeneralAccessoryID, value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::getGeneralAccessoryNumber(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(GeneralAccessoryNumber, value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::getGeneralAccessoryNumber(Sint32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmIntegerString &, GeneralAccessoryNumber).getSint32(value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::getGeneralAccessoryType(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(GeneralAccessoryType, value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::getSourceToGeneralAccessoryDistance(Float32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointSingle &, SourceToGeneralAccessoryDistance).getFloat32(value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::setAccessoryCode(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = AccessoryCode.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::setGeneralAccessoryDescription(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal; + if (result.good()) + result = GeneralAccessoryDescription.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::setGeneralAccessoryID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = GeneralAccessoryID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::setGeneralAccessoryNumber(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = GeneralAccessoryNumber.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::setGeneralAccessoryType(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = GeneralAccessoryType.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::setSourceToGeneralAccessoryDistance(const Float32 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return SourceToGeneralAccessoryDistance.putFloat32(value, pos); +} + + +// --- sequence class --- + +DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule(const DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule &DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::operator=(const DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::~DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule() +{ + clear(); +} + + +void DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item &DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item &DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item &DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item &DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item &DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item &DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_GeneralAccessorySequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_GeneralAccessorySequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_GeneralAccessorySequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtgas4.cc b/dcmrt/libsrc/drtgas4.cc new file mode 100644 index 00000000..c753adba --- /dev/null +++ b/dcmrt/libsrc/drtgas4.cc @@ -0,0 +1,696 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTGeneralAccessorySequenceInRTImageModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtgas4.h" + + +// --- item class --- + +DRTGeneralAccessorySequenceInRTImageModule::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + AccessoryCode(DCM_AccessoryCode), + GeneralAccessoryDescription(DCM_GeneralAccessoryDescription), + GeneralAccessoryID(DCM_GeneralAccessoryID), + GeneralAccessoryNumber(DCM_GeneralAccessoryNumber), + GeneralAccessoryType(DCM_GeneralAccessoryType), + SourceToGeneralAccessoryDistance(DCM_SourceToGeneralAccessoryDistance) +{ +} + + +DRTGeneralAccessorySequenceInRTImageModule::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + AccessoryCode(copy.AccessoryCode), + GeneralAccessoryDescription(copy.GeneralAccessoryDescription), + GeneralAccessoryID(copy.GeneralAccessoryID), + GeneralAccessoryNumber(copy.GeneralAccessoryNumber), + GeneralAccessoryType(copy.GeneralAccessoryType), + SourceToGeneralAccessoryDistance(copy.SourceToGeneralAccessoryDistance) +{ +} + + +DRTGeneralAccessorySequenceInRTImageModule::Item::~Item() +{ +} + + +DRTGeneralAccessorySequenceInRTImageModule::Item &DRTGeneralAccessorySequenceInRTImageModule::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + AccessoryCode = copy.AccessoryCode; + GeneralAccessoryDescription = copy.GeneralAccessoryDescription; + GeneralAccessoryID = copy.GeneralAccessoryID; + GeneralAccessoryNumber = copy.GeneralAccessoryNumber; + GeneralAccessoryType = copy.GeneralAccessoryType; + SourceToGeneralAccessoryDistance = copy.SourceToGeneralAccessoryDistance; + } + return *this; +} + + +void DRTGeneralAccessorySequenceInRTImageModule::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + GeneralAccessoryNumber.clear(); + GeneralAccessoryID.clear(); + GeneralAccessoryDescription.clear(); + GeneralAccessoryType.clear(); + AccessoryCode.clear(); + SourceToGeneralAccessoryDistance.clear(); + } +} + + +OFBool DRTGeneralAccessorySequenceInRTImageModule::Item::isEmpty() +{ + return GeneralAccessoryNumber.isEmpty() && + GeneralAccessoryID.isEmpty() && + GeneralAccessoryDescription.isEmpty() && + GeneralAccessoryType.isEmpty() && + AccessoryCode.isEmpty() && + SourceToGeneralAccessoryDistance.isEmpty(); +} + + +OFBool DRTGeneralAccessorySequenceInRTImageModule::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTGeneralAccessorySequenceInRTImageModule::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, GeneralAccessoryNumber, "1", "1", "GeneralAccessorySequence"); + getAndCheckElementFromDataset(item, GeneralAccessoryID, "1", "1", "GeneralAccessorySequence"); + getAndCheckElementFromDataset(item, GeneralAccessoryDescription, "1", "3", "GeneralAccessorySequence"); + getAndCheckElementFromDataset(item, GeneralAccessoryType, "1", "3", "GeneralAccessorySequence"); + getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "GeneralAccessorySequence"); + getAndCheckElementFromDataset(item, SourceToGeneralAccessoryDistance, "1", "3", "GeneralAccessorySequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTImageModule::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmIntegerString(GeneralAccessoryNumber), "1", "1", "GeneralAccessorySequence"); + addElementToDataset(result, item, new DcmShortString(GeneralAccessoryID), "1", "1", "GeneralAccessorySequence"); + addElementToDataset(result, item, new DcmShortText(GeneralAccessoryDescription), "1", "3", "GeneralAccessorySequence"); + addElementToDataset(result, item, new DcmCodeString(GeneralAccessoryType), "1", "3", "GeneralAccessorySequence"); + addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "GeneralAccessorySequence"); + addElementToDataset(result, item, new DcmFloatingPointSingle(SourceToGeneralAccessoryDistance), "1", "3", "GeneralAccessorySequence"); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTImageModule::Item::getAccessoryCode(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(AccessoryCode, value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInRTImageModule::Item::getGeneralAccessoryDescription(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(GeneralAccessoryDescription, value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInRTImageModule::Item::getGeneralAccessoryID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(GeneralAccessoryID, value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInRTImageModule::Item::getGeneralAccessoryNumber(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(GeneralAccessoryNumber, value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInRTImageModule::Item::getGeneralAccessoryNumber(Sint32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmIntegerString &, GeneralAccessoryNumber).getSint32(value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInRTImageModule::Item::getGeneralAccessoryType(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(GeneralAccessoryType, value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInRTImageModule::Item::getSourceToGeneralAccessoryDistance(Float32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointSingle &, SourceToGeneralAccessoryDistance).getFloat32(value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInRTImageModule::Item::setAccessoryCode(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = AccessoryCode.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTImageModule::Item::setGeneralAccessoryDescription(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal; + if (result.good()) + result = GeneralAccessoryDescription.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTImageModule::Item::setGeneralAccessoryID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = GeneralAccessoryID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTImageModule::Item::setGeneralAccessoryNumber(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = GeneralAccessoryNumber.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTImageModule::Item::setGeneralAccessoryType(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = GeneralAccessoryType.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTImageModule::Item::setSourceToGeneralAccessoryDistance(const Float32 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return SourceToGeneralAccessoryDistance.putFloat32(value, pos); +} + + +// --- sequence class --- + +DRTGeneralAccessorySequenceInRTImageModule::DRTGeneralAccessorySequenceInRTImageModule(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTGeneralAccessorySequenceInRTImageModule::DRTGeneralAccessorySequenceInRTImageModule(const DRTGeneralAccessorySequenceInRTImageModule ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTGeneralAccessorySequenceInRTImageModule &DRTGeneralAccessorySequenceInRTImageModule::operator=(const DRTGeneralAccessorySequenceInRTImageModule ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTGeneralAccessorySequenceInRTImageModule::~DRTGeneralAccessorySequenceInRTImageModule() +{ + clear(); +} + + +void DRTGeneralAccessorySequenceInRTImageModule::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTGeneralAccessorySequenceInRTImageModule::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTGeneralAccessorySequenceInRTImageModule::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTGeneralAccessorySequenceInRTImageModule::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTGeneralAccessorySequenceInRTImageModule::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTImageModule::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTImageModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTImageModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTImageModule::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTGeneralAccessorySequenceInRTImageModule::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTGeneralAccessorySequenceInRTImageModule::Item &DRTGeneralAccessorySequenceInRTImageModule::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTGeneralAccessorySequenceInRTImageModule::Item &DRTGeneralAccessorySequenceInRTImageModule::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTGeneralAccessorySequenceInRTImageModule::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTGeneralAccessorySequenceInRTImageModule::Item &DRTGeneralAccessorySequenceInRTImageModule::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTGeneralAccessorySequenceInRTImageModule::Item &DRTGeneralAccessorySequenceInRTImageModule::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTGeneralAccessorySequenceInRTImageModule::Item &DRTGeneralAccessorySequenceInRTImageModule::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTGeneralAccessorySequenceInRTImageModule::Item &DRTGeneralAccessorySequenceInRTImageModule::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTGeneralAccessorySequenceInRTImageModule::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTImageModule::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTImageModule::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTImageModule::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_GeneralAccessorySequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_GeneralAccessorySequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTImageModule::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_GeneralAccessorySequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtgas5.cc b/dcmrt/libsrc/drtgas5.cc new file mode 100644 index 00000000..432f64d5 --- /dev/null +++ b/dcmrt/libsrc/drtgas5.cc @@ -0,0 +1,709 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTGeneralAccessorySequenceInRTIonBeamsModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtgas5.h" + + +// --- item class --- + +DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + AccessoryCode(DCM_AccessoryCode), + GeneralAccessoryDescription(DCM_GeneralAccessoryDescription), + GeneralAccessoryID(DCM_GeneralAccessoryID), + GeneralAccessoryNumber(DCM_GeneralAccessoryNumber), + GeneralAccessoryType(DCM_GeneralAccessoryType), + IsocenterToGeneralAccessoryDistance(DCM_IsocenterToGeneralAccessoryDistance) +{ +} + + +DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + AccessoryCode(copy.AccessoryCode), + GeneralAccessoryDescription(copy.GeneralAccessoryDescription), + GeneralAccessoryID(copy.GeneralAccessoryID), + GeneralAccessoryNumber(copy.GeneralAccessoryNumber), + GeneralAccessoryType(copy.GeneralAccessoryType), + IsocenterToGeneralAccessoryDistance(copy.IsocenterToGeneralAccessoryDistance) +{ +} + + +DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::~Item() +{ +} + + +DRTGeneralAccessorySequenceInRTIonBeamsModule::Item &DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + AccessoryCode = copy.AccessoryCode; + GeneralAccessoryDescription = copy.GeneralAccessoryDescription; + GeneralAccessoryID = copy.GeneralAccessoryID; + GeneralAccessoryNumber = copy.GeneralAccessoryNumber; + GeneralAccessoryType = copy.GeneralAccessoryType; + IsocenterToGeneralAccessoryDistance = copy.IsocenterToGeneralAccessoryDistance; + } + return *this; +} + + +void DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + GeneralAccessoryNumber.clear(); + GeneralAccessoryID.clear(); + GeneralAccessoryDescription.clear(); + GeneralAccessoryType.clear(); + AccessoryCode.clear(); + IsocenterToGeneralAccessoryDistance.clear(); + } +} + + +OFBool DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::isEmpty() +{ + return GeneralAccessoryNumber.isEmpty() && + GeneralAccessoryID.isEmpty() && + GeneralAccessoryDescription.isEmpty() && + GeneralAccessoryType.isEmpty() && + AccessoryCode.isEmpty() && + IsocenterToGeneralAccessoryDistance.isEmpty(); +} + + +OFBool DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, GeneralAccessoryNumber, "1", "1", "GeneralAccessorySequence"); + getAndCheckElementFromDataset(item, GeneralAccessoryID, "1", "1", "GeneralAccessorySequence"); + getAndCheckElementFromDataset(item, GeneralAccessoryDescription, "1", "3", "GeneralAccessorySequence"); + getAndCheckElementFromDataset(item, GeneralAccessoryType, "1", "3", "GeneralAccessorySequence"); + getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "GeneralAccessorySequence"); + getAndCheckElementFromDataset(item, IsocenterToGeneralAccessoryDistance, "1", "3", "GeneralAccessorySequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmIntegerString(GeneralAccessoryNumber), "1", "1", "GeneralAccessorySequence"); + addElementToDataset(result, item, new DcmShortString(GeneralAccessoryID), "1", "1", "GeneralAccessorySequence"); + addElementToDataset(result, item, new DcmShortText(GeneralAccessoryDescription), "1", "3", "GeneralAccessorySequence"); + addElementToDataset(result, item, new DcmCodeString(GeneralAccessoryType), "1", "3", "GeneralAccessorySequence"); + addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "GeneralAccessorySequence"); + addElementToDataset(result, item, new DcmDecimalString(IsocenterToGeneralAccessoryDistance), "1", "3", "GeneralAccessorySequence"); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::getAccessoryCode(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(AccessoryCode, value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::getGeneralAccessoryDescription(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(GeneralAccessoryDescription, value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::getGeneralAccessoryID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(GeneralAccessoryID, value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::getGeneralAccessoryNumber(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(GeneralAccessoryNumber, value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::getGeneralAccessoryNumber(Sint32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmIntegerString &, GeneralAccessoryNumber).getSint32(value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::getGeneralAccessoryType(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(GeneralAccessoryType, value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::getIsocenterToGeneralAccessoryDistance(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(IsocenterToGeneralAccessoryDistance, value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::getIsocenterToGeneralAccessoryDistance(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, IsocenterToGeneralAccessoryDistance).getFloat64(value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::setAccessoryCode(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = AccessoryCode.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::setGeneralAccessoryDescription(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal; + if (result.good()) + result = GeneralAccessoryDescription.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::setGeneralAccessoryID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = GeneralAccessoryID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::setGeneralAccessoryNumber(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = GeneralAccessoryNumber.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::setGeneralAccessoryType(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = GeneralAccessoryType.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::setIsocenterToGeneralAccessoryDistance(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = IsocenterToGeneralAccessoryDistance.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTGeneralAccessorySequenceInRTIonBeamsModule::DRTGeneralAccessorySequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTGeneralAccessorySequenceInRTIonBeamsModule::DRTGeneralAccessorySequenceInRTIonBeamsModule(const DRTGeneralAccessorySequenceInRTIonBeamsModule ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTGeneralAccessorySequenceInRTIonBeamsModule &DRTGeneralAccessorySequenceInRTIonBeamsModule::operator=(const DRTGeneralAccessorySequenceInRTIonBeamsModule ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTGeneralAccessorySequenceInRTIonBeamsModule::~DRTGeneralAccessorySequenceInRTIonBeamsModule() +{ + clear(); +} + + +void DRTGeneralAccessorySequenceInRTIonBeamsModule::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTGeneralAccessorySequenceInRTIonBeamsModule::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTGeneralAccessorySequenceInRTIonBeamsModule::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTGeneralAccessorySequenceInRTIonBeamsModule::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTGeneralAccessorySequenceInRTIonBeamsModule::Item &DRTGeneralAccessorySequenceInRTIonBeamsModule::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTGeneralAccessorySequenceInRTIonBeamsModule::Item &DRTGeneralAccessorySequenceInRTIonBeamsModule::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTGeneralAccessorySequenceInRTIonBeamsModule::Item &DRTGeneralAccessorySequenceInRTIonBeamsModule::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTGeneralAccessorySequenceInRTIonBeamsModule::Item &DRTGeneralAccessorySequenceInRTIonBeamsModule::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTGeneralAccessorySequenceInRTIonBeamsModule::Item &DRTGeneralAccessorySequenceInRTIonBeamsModule::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTGeneralAccessorySequenceInRTIonBeamsModule::Item &DRTGeneralAccessorySequenceInRTIonBeamsModule::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_GeneralAccessorySequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_GeneralAccessorySequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_GeneralAccessorySequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtgas6.cc b/dcmrt/libsrc/drtgas6.cc new file mode 100644 index 00000000..755d7040 --- /dev/null +++ b/dcmrt/libsrc/drtgas6.cc @@ -0,0 +1,671 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtgas6.h" + + +// --- item class --- + +DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + AccessoryCode(DCM_AccessoryCode), + GeneralAccessoryDescription(DCM_GeneralAccessoryDescription), + GeneralAccessoryID(DCM_GeneralAccessoryID), + GeneralAccessoryNumber(DCM_GeneralAccessoryNumber), + GeneralAccessoryType(DCM_GeneralAccessoryType) +{ +} + + +DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + AccessoryCode(copy.AccessoryCode), + GeneralAccessoryDescription(copy.GeneralAccessoryDescription), + GeneralAccessoryID(copy.GeneralAccessoryID), + GeneralAccessoryNumber(copy.GeneralAccessoryNumber), + GeneralAccessoryType(copy.GeneralAccessoryType) +{ +} + + +DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::~Item() +{ +} + + +DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item &DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + AccessoryCode = copy.AccessoryCode; + GeneralAccessoryDescription = copy.GeneralAccessoryDescription; + GeneralAccessoryID = copy.GeneralAccessoryID; + GeneralAccessoryNumber = copy.GeneralAccessoryNumber; + GeneralAccessoryType = copy.GeneralAccessoryType; + } + return *this; +} + + +void DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + GeneralAccessoryNumber.clear(); + GeneralAccessoryID.clear(); + GeneralAccessoryDescription.clear(); + GeneralAccessoryType.clear(); + AccessoryCode.clear(); + } +} + + +OFBool DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::isEmpty() +{ + return GeneralAccessoryNumber.isEmpty() && + GeneralAccessoryID.isEmpty() && + GeneralAccessoryDescription.isEmpty() && + GeneralAccessoryType.isEmpty() && + AccessoryCode.isEmpty(); +} + + +OFBool DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, GeneralAccessoryNumber, "1", "1", "GeneralAccessorySequence"); + getAndCheckElementFromDataset(item, GeneralAccessoryID, "1", "1", "GeneralAccessorySequence"); + getAndCheckElementFromDataset(item, GeneralAccessoryDescription, "1", "3", "GeneralAccessorySequence"); + getAndCheckElementFromDataset(item, GeneralAccessoryType, "1", "3", "GeneralAccessorySequence"); + getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "GeneralAccessorySequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmIntegerString(GeneralAccessoryNumber), "1", "1", "GeneralAccessorySequence"); + addElementToDataset(result, item, new DcmShortString(GeneralAccessoryID), "1", "1", "GeneralAccessorySequence"); + addElementToDataset(result, item, new DcmShortText(GeneralAccessoryDescription), "1", "3", "GeneralAccessorySequence"); + addElementToDataset(result, item, new DcmCodeString(GeneralAccessoryType), "1", "3", "GeneralAccessorySequence"); + addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "GeneralAccessorySequence"); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::getAccessoryCode(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(AccessoryCode, value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::getGeneralAccessoryDescription(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(GeneralAccessoryDescription, value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::getGeneralAccessoryID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(GeneralAccessoryID, value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::getGeneralAccessoryNumber(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(GeneralAccessoryNumber, value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::getGeneralAccessoryNumber(Sint32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmIntegerString &, GeneralAccessoryNumber).getSint32(value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::getGeneralAccessoryType(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(GeneralAccessoryType, value, pos); +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::setAccessoryCode(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = AccessoryCode.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::setGeneralAccessoryDescription(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal; + if (result.good()) + result = GeneralAccessoryDescription.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::setGeneralAccessoryID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = GeneralAccessoryID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::setGeneralAccessoryNumber(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = GeneralAccessoryNumber.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::setGeneralAccessoryType(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = GeneralAccessoryType.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule(const DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule &DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::operator=(const DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::~DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule() +{ + clear(); +} + + +void DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item &DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item &DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item &DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item &DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item &DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item &DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_GeneralAccessorySequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_GeneralAccessorySequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_GeneralAccessorySequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtgmcs.cc b/dcmrt/libsrc/drtgmcs.cc index 99ba839c..b5529b43 100644 --- a/dcmrt/libsrc/drtgmcs.cc +++ b/dcmrt/libsrc/drtgmcs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTGeneticModificationsCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -656,10 +656,12 @@ OFCondition DRTGeneticModificationsCodeSequence::gotoFirstItem() OFCondition DRTGeneticModificationsCodeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtgms.cc b/dcmrt/libsrc/drtgms.cc index 84d56347..a30961e0 100644 --- a/dcmrt/libsrc/drtgms.cc +++ b/dcmrt/libsrc/drtgms.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTGeneticModificationsSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -279,10 +279,12 @@ OFCondition DRTGeneticModificationsSequence::gotoFirstItem() OFCondition DRTGeneticModificationsSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtgpis.cc b/dcmrt/libsrc/drtgpis.cc index c9cc891a..e82dbd07 100644 --- a/dcmrt/libsrc/drtgpis.cc +++ b/dcmrt/libsrc/drtgpis.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTGroupOfPatientsIdentificationSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -333,10 +333,12 @@ OFCondition DRTGroupOfPatientsIdentificationSequence::gotoFirstItem() OFCondition DRTGroupOfPatientsIdentificationSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drthsdrs.cc b/dcmrt/libsrc/drthsdrs.cc index 97b558e6..e610de4f 100644 --- a/dcmrt/libsrc/drthsdrs.cc +++ b/dcmrt/libsrc/drthsdrs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTHL7StructuredDocumentReferenceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -330,10 +330,12 @@ OFCondition DRTHL7StructuredDocumentReferenceSequence::gotoFirstItem() OFCondition DRTHL7StructuredDocumentReferenceSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtiais.cc b/dcmrt/libsrc/drtiais.cc index fb686b6e..70eb857e 100644 --- a/dcmrt/libsrc/drtiais.cc +++ b/dcmrt/libsrc/drtiais.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTIssuerOfAdmissionIDSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -301,10 +301,12 @@ OFCondition DRTIssuerOfAdmissionIDSequence::gotoFirstItem() OFCondition DRTIssuerOfAdmissionIDSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtians.cc b/dcmrt/libsrc/drtians.cc index 3ad028dc..f0d5d9a3 100644 --- a/dcmrt/libsrc/drtians.cc +++ b/dcmrt/libsrc/drtians.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTIssuerOfAccessionNumberSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -301,10 +301,12 @@ OFCondition DRTIssuerOfAccessionNumberSequence::gotoFirstItem() OFCondition DRTIssuerOfAccessionNumberSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtiblds.cc b/dcmrt/libsrc/drtiblds.cc index 5f3e32f5..d8a734a9 100644 --- a/dcmrt/libsrc/drtiblds.cc +++ b/dcmrt/libsrc/drtiblds.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTIonBeamLimitingDeviceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -353,10 +353,12 @@ OFCondition DRTIonBeamLimitingDeviceSequence::gotoFirstItem() OFCondition DRTIonBeamLimitingDeviceSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtibls.cc b/dcmrt/libsrc/drtibls.cc index acf50a19..229077b6 100644 --- a/dcmrt/libsrc/drtibls.cc +++ b/dcmrt/libsrc/drtibls.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTIonBlockSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -648,10 +648,12 @@ OFCondition DRTIonBlockSequence::gotoFirstItem() OFCondition DRTIonBlockSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtibs.cc b/dcmrt/libsrc/drtibs.cc index feca160d..d61d4e8b 100644 --- a/dcmrt/libsrc/drtibs.cc +++ b/dcmrt/libsrc/drtibs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTIonBeamSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -28,6 +28,7 @@ DRTIonBeamSequence::Item::Item(const OFBool emptyDefaultItem) BeamType(DCM_BeamType), DepthDoseParametersSequence(emptyDefaultItem /*emptyDefaultSequence*/), DeviceSerialNumber(DCM_DeviceSerialNumber), + EntityLongLabel(DCM_EntityLongLabel), FinalCumulativeMetersetWeight(DCM_FinalCumulativeMetersetWeight), FixationEye(DCM_FixationEye), FixationLightAzimuthalAngle(DCM_FixationLightAzimuthalAngle), @@ -36,6 +37,7 @@ DRTIonBeamSequence::Item::Item(const OFBool emptyDefaultItem) InstitutionAddress(DCM_InstitutionAddress), InstitutionName(DCM_InstitutionName), InstitutionalDepartmentName(DCM_InstitutionalDepartmentName), + InstitutionalDepartmentTypeCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), IonBeamLimitingDeviceSequence(emptyDefaultItem /*emptyDefaultSequence*/), IonBlockSequence(emptyDefaultItem /*emptyDefaultSequence*/), IonControlPointSequence(emptyDefaultItem /*emptyDefaultSequence*/), @@ -89,6 +91,7 @@ DRTIonBeamSequence::Item::Item(const Item ©) BeamType(copy.BeamType), DepthDoseParametersSequence(copy.DepthDoseParametersSequence), DeviceSerialNumber(copy.DeviceSerialNumber), + EntityLongLabel(copy.EntityLongLabel), FinalCumulativeMetersetWeight(copy.FinalCumulativeMetersetWeight), FixationEye(copy.FixationEye), FixationLightAzimuthalAngle(copy.FixationLightAzimuthalAngle), @@ -97,6 +100,7 @@ DRTIonBeamSequence::Item::Item(const Item ©) InstitutionAddress(copy.InstitutionAddress), InstitutionName(copy.InstitutionName), InstitutionalDepartmentName(copy.InstitutionalDepartmentName), + InstitutionalDepartmentTypeCodeSequence(copy.InstitutionalDepartmentTypeCodeSequence), IonBeamLimitingDeviceSequence(copy.IonBeamLimitingDeviceSequence), IonBlockSequence(copy.IonBlockSequence), IonControlPointSequence(copy.IonControlPointSequence), @@ -158,6 +162,7 @@ DRTIonBeamSequence::Item &DRTIonBeamSequence::Item::operator=(const Item ©) BeamType = copy.BeamType; DepthDoseParametersSequence = copy.DepthDoseParametersSequence; DeviceSerialNumber = copy.DeviceSerialNumber; + EntityLongLabel = copy.EntityLongLabel; FinalCumulativeMetersetWeight = copy.FinalCumulativeMetersetWeight; FixationEye = copy.FixationEye; FixationLightAzimuthalAngle = copy.FixationLightAzimuthalAngle; @@ -166,6 +171,7 @@ DRTIonBeamSequence::Item &DRTIonBeamSequence::Item::operator=(const Item ©) InstitutionAddress = copy.InstitutionAddress; InstitutionName = copy.InstitutionName; InstitutionalDepartmentName = copy.InstitutionalDepartmentName; + InstitutionalDepartmentTypeCodeSequence = copy.InstitutionalDepartmentTypeCodeSequence; IonBeamLimitingDeviceSequence = copy.IonBeamLimitingDeviceSequence; IonBlockSequence = copy.IonBlockSequence; IonControlPointSequence = copy.IonControlPointSequence; @@ -218,6 +224,7 @@ void DRTIonBeamSequence::Item::clear() /* clear all DICOM attributes */ BeamNumber.clear(); BeamName.clear(); + EntityLongLabel.clear(); BeamDescription.clear(); BeamType.clear(); RadiationType.clear(); @@ -231,6 +238,7 @@ void DRTIonBeamSequence::Item::clear() InstitutionName.clear(); InstitutionAddress.clear(); InstitutionalDepartmentName.clear(); + InstitutionalDepartmentTypeCodeSequence.clear(); ManufacturerModelName.clear(); DeviceSerialNumber.clear(); PrimaryDosimeterUnit.clear(); @@ -279,6 +287,7 @@ OFBool DRTIonBeamSequence::Item::isEmpty() { return BeamNumber.isEmpty() && BeamName.isEmpty() && + EntityLongLabel.isEmpty() && BeamDescription.isEmpty() && BeamType.isEmpty() && RadiationType.isEmpty() && @@ -292,6 +301,7 @@ OFBool DRTIonBeamSequence::Item::isEmpty() InstitutionName.isEmpty() && InstitutionAddress.isEmpty() && InstitutionalDepartmentName.isEmpty() && + InstitutionalDepartmentTypeCodeSequence.isEmpty() && ManufacturerModelName.isEmpty() && DeviceSerialNumber.isEmpty() && PrimaryDosimeterUnit.isEmpty() && @@ -350,6 +360,7 @@ OFCondition DRTIonBeamSequence::Item::read(DcmItem &item) clear(); getAndCheckElementFromDataset(item, BeamNumber, "1", "1", "IonBeamSequence"); getAndCheckElementFromDataset(item, BeamName, "1", "1", "IonBeamSequence"); + getAndCheckElementFromDataset(item, EntityLongLabel, "1", "3", "IonBeamSequence"); getAndCheckElementFromDataset(item, BeamDescription, "1", "3", "IonBeamSequence"); getAndCheckElementFromDataset(item, BeamType, "1", "1", "IonBeamSequence"); getAndCheckElementFromDataset(item, RadiationType, "1", "1", "IonBeamSequence"); @@ -363,6 +374,7 @@ OFCondition DRTIonBeamSequence::Item::read(DcmItem &item) getAndCheckElementFromDataset(item, InstitutionName, "1", "3", "IonBeamSequence"); getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "IonBeamSequence"); getAndCheckElementFromDataset(item, InstitutionalDepartmentName, "1", "3", "IonBeamSequence"); + InstitutionalDepartmentTypeCodeSequence.read(item, "1-n", "3", "IonBeamSequence"); getAndCheckElementFromDataset(item, ManufacturerModelName, "1", "3", "IonBeamSequence"); getAndCheckElementFromDataset(item, DeviceSerialNumber, "1", "3", "IonBeamSequence"); getAndCheckElementFromDataset(item, PrimaryDosimeterUnit, "1", "1", "IonBeamSequence"); @@ -417,6 +429,7 @@ OFCondition DRTIonBeamSequence::Item::write(DcmItem &item) result = EC_Normal; addElementToDataset(result, item, new DcmIntegerString(BeamNumber), "1", "1", "IonBeamSequence"); addElementToDataset(result, item, new DcmLongString(BeamName), "1", "1", "IonBeamSequence"); + addElementToDataset(result, item, new DcmLongString(EntityLongLabel), "1", "3", "IonBeamSequence"); addElementToDataset(result, item, new DcmShortText(BeamDescription), "1", "3", "IonBeamSequence"); addElementToDataset(result, item, new DcmCodeString(BeamType), "1", "1", "IonBeamSequence"); addElementToDataset(result, item, new DcmCodeString(RadiationType), "1", "1", "IonBeamSequence"); @@ -430,6 +443,7 @@ OFCondition DRTIonBeamSequence::Item::write(DcmItem &item) addElementToDataset(result, item, new DcmLongString(InstitutionName), "1", "3", "IonBeamSequence"); addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "IonBeamSequence"); addElementToDataset(result, item, new DcmLongString(InstitutionalDepartmentName), "1", "3", "IonBeamSequence"); + if (result.good()) result = InstitutionalDepartmentTypeCodeSequence.write(item, "1-n", "3", "IonBeamSequence"); addElementToDataset(result, item, new DcmLongString(ManufacturerModelName), "1", "3", "IonBeamSequence"); addElementToDataset(result, item, new DcmLongString(DeviceSerialNumber), "1", "3", "IonBeamSequence"); addElementToDataset(result, item, new DcmCodeString(PrimaryDosimeterUnit), "1", "1", "IonBeamSequence"); @@ -529,6 +543,15 @@ OFCondition DRTIonBeamSequence::Item::getDeviceSerialNumber(OFString &value, con } +OFCondition DRTIonBeamSequence::Item::getEntityLongLabel(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(EntityLongLabel, value, pos); +} + + OFCondition DRTIonBeamSequence::Item::getFinalCumulativeMetersetWeight(OFString &value, const signed long pos) const { if (EmptyDefaultItem) @@ -1026,6 +1049,19 @@ OFCondition DRTIonBeamSequence::Item::setDeviceSerialNumber(const OFString &valu } +OFCondition DRTIonBeamSequence::Item::setEntityLongLabel(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = EntityLongLabel.putOFStringArray(value); + } + return result; +} + + OFCondition DRTIonBeamSequence::Item::setFinalCumulativeMetersetWeight(const OFString &value, const OFBool check) { OFCondition result = EC_IllegalCall; @@ -1577,10 +1613,12 @@ OFCondition DRTIonBeamSequence::gotoFirstItem() OFCondition DRTIonBeamSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drticpds.cc b/dcmrt/libsrc/drticpds.cc index c21f51de..9c67ebd3 100644 --- a/dcmrt/libsrc/drticpds.cc +++ b/dcmrt/libsrc/drticpds.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTIonControlPointDeliverySequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -50,6 +50,7 @@ DRTIonControlPointDeliverySequence::Item::Item(const OFBool emptyDefaultItem) ScanSpotPositionMap(DCM_ScanSpotPositionMap), ScanSpotPrescribedIndices(DCM_ScanSpotPrescribedIndices), ScanSpotReordered(DCM_ScanSpotReordered), + ScanSpotSizesDelivered(DCM_ScanSpotSizesDelivered), ScanSpotTimeOffset(DCM_ScanSpotTimeOffset), ScanSpotTuneID(DCM_ScanSpotTuneID), ScanningSpotSize(DCM_ScanningSpotSize), @@ -99,6 +100,7 @@ DRTIonControlPointDeliverySequence::Item::Item(const Item ©) ScanSpotPositionMap(copy.ScanSpotPositionMap), ScanSpotPrescribedIndices(copy.ScanSpotPrescribedIndices), ScanSpotReordered(copy.ScanSpotReordered), + ScanSpotSizesDelivered(copy.ScanSpotSizesDelivered), ScanSpotTimeOffset(copy.ScanSpotTimeOffset), ScanSpotTuneID(copy.ScanSpotTuneID), ScanningSpotSize(copy.ScanningSpotSize), @@ -156,6 +158,7 @@ DRTIonControlPointDeliverySequence::Item &DRTIonControlPointDeliverySequence::It ScanSpotPositionMap = copy.ScanSpotPositionMap; ScanSpotPrescribedIndices = copy.ScanSpotPrescribedIndices; ScanSpotReordered = copy.ScanSpotReordered; + ScanSpotSizesDelivered = copy.ScanSpotSizesDelivered; ScanSpotTimeOffset = copy.ScanSpotTimeOffset; ScanSpotTuneID = copy.ScanSpotTuneID; ScanningSpotSize = copy.ScanningSpotSize; @@ -206,6 +209,7 @@ void DRTIonControlPointDeliverySequence::Item::clear() ScanSpotMetersetsDelivered.clear(); ScanSpotTimeOffset.clear(); ScanningSpotSize.clear(); + ScanSpotSizesDelivered.clear(); NumberOfPaintings.clear(); ScanSpotReordered.clear(); ScanSpotPrescribedIndices.clear(); @@ -255,6 +259,7 @@ OFBool DRTIonControlPointDeliverySequence::Item::isEmpty() ScanSpotMetersetsDelivered.isEmpty() && ScanSpotTimeOffset.isEmpty() && ScanningSpotSize.isEmpty() && + ScanSpotSizesDelivered.isEmpty() && NumberOfPaintings.isEmpty() && ScanSpotReordered.isEmpty() && ScanSpotPrescribedIndices.isEmpty() && @@ -314,6 +319,7 @@ OFCondition DRTIonControlPointDeliverySequence::Item::read(DcmItem &item) getAndCheckElementFromDataset(item, ScanSpotMetersetsDelivered, "1-n", "1C", "IonControlPointDeliverySequence"); getAndCheckElementFromDataset(item, ScanSpotTimeOffset, "1-n", "3", "IonControlPointDeliverySequence"); getAndCheckElementFromDataset(item, ScanningSpotSize, "2", "3", "IonControlPointDeliverySequence"); + getAndCheckElementFromDataset(item, ScanSpotSizesDelivered, "2-2n", "3", "IonControlPointDeliverySequence"); getAndCheckElementFromDataset(item, NumberOfPaintings, "1", "1C", "IonControlPointDeliverySequence"); getAndCheckElementFromDataset(item, ScanSpotReordered, "1", "3", "IonControlPointDeliverySequence"); getAndCheckElementFromDataset(item, ScanSpotPrescribedIndices, "1-n", "1C", "IonControlPointDeliverySequence"); @@ -369,6 +375,7 @@ OFCondition DRTIonControlPointDeliverySequence::Item::write(DcmItem &item) addElementToDataset(result, item, new DcmFloatingPointSingle(ScanSpotMetersetsDelivered), "1-n", "1C", "IonControlPointDeliverySequence"); addElementToDataset(result, item, new DcmFloatingPointSingle(ScanSpotTimeOffset), "1-n", "3", "IonControlPointDeliverySequence"); addElementToDataset(result, item, new DcmFloatingPointSingle(ScanningSpotSize), "2", "3", "IonControlPointDeliverySequence"); + addElementToDataset(result, item, new DcmFloatingPointSingle(ScanSpotSizesDelivered), "2-2n", "3", "IonControlPointDeliverySequence"); addElementToDataset(result, item, new DcmIntegerString(NumberOfPaintings), "1", "1C", "IonControlPointDeliverySequence"); addElementToDataset(result, item, new DcmCodeString(ScanSpotReordered), "1", "3", "IonControlPointDeliverySequence"); addElementToDataset(result, item, new DcmIntegerString(ScanSpotPrescribedIndices), "1-n", "1C", "IonControlPointDeliverySequence"); @@ -688,6 +695,15 @@ OFCondition DRTIonControlPointDeliverySequence::Item::getScanSpotReordered(OFStr } +OFCondition DRTIonControlPointDeliverySequence::Item::getScanSpotSizesDelivered(Float32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointSingle &, ScanSpotSizesDelivered).getFloat32(value, pos); +} + + OFCondition DRTIonControlPointDeliverySequence::Item::getScanSpotTimeOffset(Float32 &value, const unsigned long pos) const { if (EmptyDefaultItem) @@ -1112,6 +1128,15 @@ OFCondition DRTIonControlPointDeliverySequence::Item::setScanSpotReordered(const } +OFCondition DRTIonControlPointDeliverySequence::Item::setScanSpotSizesDelivered(const Float32 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return ScanSpotSizesDelivered.putFloat32(value, pos); +} + + OFCondition DRTIonControlPointDeliverySequence::Item::setScanSpotTimeOffset(const Float32 value, const unsigned long pos) { if (EmptyDefaultItem) @@ -1398,10 +1423,12 @@ OFCondition DRTIonControlPointDeliverySequence::gotoFirstItem() OFCondition DRTIonControlPointDeliverySequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drticps.cc b/dcmrt/libsrc/drticps.cc index 8380160b..6f0cc1df 100644 --- a/dcmrt/libsrc/drticps.cc +++ b/dcmrt/libsrc/drticps.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTIonControlPointSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -1326,10 +1326,12 @@ OFCondition DRTIonControlPointSequence::gotoFirstItem() OFCondition DRTIonControlPointSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtics.cc b/dcmrt/libsrc/drtics.cc index f308acb7..3f017ab5 100644 --- a/dcmrt/libsrc/drtics.cc +++ b/dcmrt/libsrc/drtics.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTInstitutionCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -656,10 +656,12 @@ OFCondition DRTInstitutionCodeSequence::gotoFirstItem() OFCondition DRTInstitutionCodeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtidcs.cc b/dcmrt/libsrc/drtidcs.cc new file mode 100644 index 00000000..143317ce --- /dev/null +++ b/dcmrt/libsrc/drtidcs.cc @@ -0,0 +1,959 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTInstitutionalDepartmentTypeCodeSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtidcs.h" + + +// --- item class --- + +DRTInstitutionalDepartmentTypeCodeSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + CodeMeaning(DCM_CodeMeaning), + CodeValue(DCM_CodeValue), + CodingSchemeDesignator(DCM_CodingSchemeDesignator), + CodingSchemeVersion(DCM_CodingSchemeVersion), + ContextGroupExtensionCreatorUID(DCM_ContextGroupExtensionCreatorUID), + ContextGroupExtensionFlag(DCM_ContextGroupExtensionFlag), + ContextGroupLocalVersion(DCM_ContextGroupLocalVersion), + ContextGroupVersion(DCM_ContextGroupVersion), + ContextIdentifier(DCM_ContextIdentifier), + ContextUID(DCM_ContextUID), + EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), + LongCodeValue(DCM_LongCodeValue), + MappingResource(DCM_MappingResource), + MappingResourceName(DCM_MappingResourceName), + MappingResourceUID(DCM_MappingResourceUID), + URNCodeValue(DCM_URNCodeValue) +{ +} + + +DRTInstitutionalDepartmentTypeCodeSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + CodeMeaning(copy.CodeMeaning), + CodeValue(copy.CodeValue), + CodingSchemeDesignator(copy.CodingSchemeDesignator), + CodingSchemeVersion(copy.CodingSchemeVersion), + ContextGroupExtensionCreatorUID(copy.ContextGroupExtensionCreatorUID), + ContextGroupExtensionFlag(copy.ContextGroupExtensionFlag), + ContextGroupLocalVersion(copy.ContextGroupLocalVersion), + ContextGroupVersion(copy.ContextGroupVersion), + ContextIdentifier(copy.ContextIdentifier), + ContextUID(copy.ContextUID), + EquivalentCodeSequence(copy.EquivalentCodeSequence), + LongCodeValue(copy.LongCodeValue), + MappingResource(copy.MappingResource), + MappingResourceName(copy.MappingResourceName), + MappingResourceUID(copy.MappingResourceUID), + URNCodeValue(copy.URNCodeValue) +{ +} + + +DRTInstitutionalDepartmentTypeCodeSequence::Item::~Item() +{ +} + + +DRTInstitutionalDepartmentTypeCodeSequence::Item &DRTInstitutionalDepartmentTypeCodeSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + CodeMeaning = copy.CodeMeaning; + CodeValue = copy.CodeValue; + CodingSchemeDesignator = copy.CodingSchemeDesignator; + CodingSchemeVersion = copy.CodingSchemeVersion; + ContextGroupExtensionCreatorUID = copy.ContextGroupExtensionCreatorUID; + ContextGroupExtensionFlag = copy.ContextGroupExtensionFlag; + ContextGroupLocalVersion = copy.ContextGroupLocalVersion; + ContextGroupVersion = copy.ContextGroupVersion; + ContextIdentifier = copy.ContextIdentifier; + ContextUID = copy.ContextUID; + EquivalentCodeSequence = copy.EquivalentCodeSequence; + LongCodeValue = copy.LongCodeValue; + MappingResource = copy.MappingResource; + MappingResourceName = copy.MappingResourceName; + MappingResourceUID = copy.MappingResourceUID; + URNCodeValue = copy.URNCodeValue; + } + return *this; +} + + +void DRTInstitutionalDepartmentTypeCodeSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + CodeValue.clear(); + CodingSchemeDesignator.clear(); + CodingSchemeVersion.clear(); + CodeMeaning.clear(); + LongCodeValue.clear(); + URNCodeValue.clear(); + EquivalentCodeSequence.clear(); + ContextIdentifier.clear(); + ContextUID.clear(); + MappingResource.clear(); + MappingResourceUID.clear(); + MappingResourceName.clear(); + ContextGroupVersion.clear(); + ContextGroupExtensionFlag.clear(); + ContextGroupLocalVersion.clear(); + ContextGroupExtensionCreatorUID.clear(); + } +} + + +OFBool DRTInstitutionalDepartmentTypeCodeSequence::Item::isEmpty() +{ + return CodeValue.isEmpty() && + CodingSchemeDesignator.isEmpty() && + CodingSchemeVersion.isEmpty() && + CodeMeaning.isEmpty() && + LongCodeValue.isEmpty() && + URNCodeValue.isEmpty() && + EquivalentCodeSequence.isEmpty() && + ContextIdentifier.isEmpty() && + ContextUID.isEmpty() && + MappingResource.isEmpty() && + MappingResourceUID.isEmpty() && + MappingResourceName.isEmpty() && + ContextGroupVersion.isEmpty() && + ContextGroupExtensionFlag.isEmpty() && + ContextGroupLocalVersion.isEmpty() && + ContextGroupExtensionCreatorUID.isEmpty(); +} + + +OFBool DRTInstitutionalDepartmentTypeCodeSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "InstitutionalDepartmentTypeCodeSequence"); + getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "InstitutionalDepartmentTypeCodeSequence"); + getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "InstitutionalDepartmentTypeCodeSequence"); + getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "InstitutionalDepartmentTypeCodeSequence"); + getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "InstitutionalDepartmentTypeCodeSequence"); + getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "InstitutionalDepartmentTypeCodeSequence"); + EquivalentCodeSequence.read(item, "1-n", "3", "InstitutionalDepartmentTypeCodeSequence"); + getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "InstitutionalDepartmentTypeCodeSequence"); + getAndCheckElementFromDataset(item, ContextUID, "1", "3", "InstitutionalDepartmentTypeCodeSequence"); + getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "InstitutionalDepartmentTypeCodeSequence"); + getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "InstitutionalDepartmentTypeCodeSequence"); + getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "InstitutionalDepartmentTypeCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "InstitutionalDepartmentTypeCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "InstitutionalDepartmentTypeCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "InstitutionalDepartmentTypeCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "InstitutionalDepartmentTypeCodeSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "InstitutionalDepartmentTypeCodeSequence"); + addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "InstitutionalDepartmentTypeCodeSequence"); + addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "InstitutionalDepartmentTypeCodeSequence"); + addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "InstitutionalDepartmentTypeCodeSequence"); + addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "InstitutionalDepartmentTypeCodeSequence"); + addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "InstitutionalDepartmentTypeCodeSequence"); + if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "InstitutionalDepartmentTypeCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "InstitutionalDepartmentTypeCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "InstitutionalDepartmentTypeCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "InstitutionalDepartmentTypeCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "InstitutionalDepartmentTypeCodeSequence"); + addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "InstitutionalDepartmentTypeCodeSequence"); + addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "InstitutionalDepartmentTypeCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "InstitutionalDepartmentTypeCodeSequence"); + addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "InstitutionalDepartmentTypeCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "InstitutionalDepartmentTypeCodeSequence"); + } + return result; +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodeMeaning, value, pos); +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::getCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodeValue, value, pos); +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodingSchemeDesignator, value, pos); +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodingSchemeVersion, value, pos); +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupExtensionCreatorUID, value, pos); +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupExtensionFlag, value, pos); +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupLocalVersion, value, pos); +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupVersion, value, pos); +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextIdentifier, value, pos); +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::getContextUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextUID, value, pos); +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(LongCodeValue, value, pos); +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResource, value, pos); +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResourceName, value, pos); +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResourceUID, value, pos); +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(URNCodeValue, value, pos); +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodeMeaning.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::setCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodeValue.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodingSchemeDesignator.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodingSchemeVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupExtensionCreatorUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupExtensionFlag.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupLocalVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::setContextIdentifier(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextIdentifier.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::setContextUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = LongCodeValue.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResource.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResourceName.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResourceUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal; + if (result.good()) + result = URNCodeValue.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTInstitutionalDepartmentTypeCodeSequence::DRTInstitutionalDepartmentTypeCodeSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTInstitutionalDepartmentTypeCodeSequence::DRTInstitutionalDepartmentTypeCodeSequence(const DRTInstitutionalDepartmentTypeCodeSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTInstitutionalDepartmentTypeCodeSequence &DRTInstitutionalDepartmentTypeCodeSequence::operator=(const DRTInstitutionalDepartmentTypeCodeSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTInstitutionalDepartmentTypeCodeSequence::~DRTInstitutionalDepartmentTypeCodeSequence() +{ + clear(); +} + + +void DRTInstitutionalDepartmentTypeCodeSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTInstitutionalDepartmentTypeCodeSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTInstitutionalDepartmentTypeCodeSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTInstitutionalDepartmentTypeCodeSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTInstitutionalDepartmentTypeCodeSequence::Item &DRTInstitutionalDepartmentTypeCodeSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTInstitutionalDepartmentTypeCodeSequence::Item &DRTInstitutionalDepartmentTypeCodeSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTInstitutionalDepartmentTypeCodeSequence::Item &DRTInstitutionalDepartmentTypeCodeSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTInstitutionalDepartmentTypeCodeSequence::Item &DRTInstitutionalDepartmentTypeCodeSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTInstitutionalDepartmentTypeCodeSequence::Item &DRTInstitutionalDepartmentTypeCodeSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTInstitutionalDepartmentTypeCodeSequence::Item &DRTInstitutionalDepartmentTypeCodeSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_InstitutionalDepartmentTypeCodeSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_InstitutionalDepartmentTypeCodeSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTInstitutionalDepartmentTypeCodeSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_InstitutionalDepartmentTypeCodeSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtiis.cc b/dcmrt/libsrc/drtiis.cc index db2224bc..3008863c 100644 --- a/dcmrt/libsrc/drtiis.cc +++ b/dcmrt/libsrc/drtiis.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTIconImageSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -782,10 +782,12 @@ OFCondition DRTIconImageSequence::gotoFirstItem() OFCondition DRTIconImageSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtimage.cc b/dcmrt/libsrc/drtimage.cc index d34aba4d..62478c89 100644 --- a/dcmrt/libsrc/drtimage.cc +++ b/dcmrt/libsrc/drtimage.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTImageIOD * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -22,6 +22,7 @@ DRTImageIOD::DRTImageIOD() PatientID(DCM_PatientID), IssuerOfPatientID(DCM_IssuerOfPatientID), IssuerOfPatientIDQualifiersSequence(), + TypeOfPatientID(DCM_TypeOfPatientID), PatientBirthDate(DCM_PatientBirthDate), PatientBirthDateInAlternativeCalendar(DCM_PatientBirthDateInAlternativeCalendar), PatientDeathDateInAlternativeCalendar(DCM_PatientDeathDateInAlternativeCalendar), @@ -78,6 +79,7 @@ DRTImageIOD::DRTImageIOD() PhysiciansOfRecordIdentificationSequence(), NameOfPhysiciansReadingStudy(DCM_NameOfPhysiciansReadingStudy), PhysiciansReadingStudyIdentificationSequence(), + RequestingService(DCM_RequestingService), RequestingServiceCodeSequence(), ReferencedStudySequence(), ProcedureCodeSequence(), @@ -101,12 +103,15 @@ DRTImageIOD::DRTImageIOD() AdditionalPatientHistory(DCM_AdditionalPatientHistory), AdmissionID(DCM_AdmissionID), IssuerOfAdmissionIDSequence(), + ReasonForVisit(DCM_ReasonForVisit), + ReasonForVisitCodeSequence(), ServiceEpisodeID(DCM_ServiceEpisodeID), IssuerOfServiceEpisodeIDSequence(), ServiceEpisodeDescription(DCM_ServiceEpisodeDescription), PatientSexNeutered(DCM_PatientSexNeutered), ClinicalTrialTimePointID(DCM_ClinicalTrialTimePointID), ClinicalTrialTimePointDescription(DCM_ClinicalTrialTimePointDescription), + ClinicalTrialTimePointTypeCodeSequence(), LongitudinalTemporalOffsetFromEvent(DCM_LongitudinalTemporalOffsetFromEvent), LongitudinalTemporalEventType(DCM_LongitudinalTemporalEventType), ConsentForClinicalTrialUseSequence(), @@ -129,6 +134,7 @@ DRTImageIOD::DRTImageIOD() PerformedProcedureStepDescription(DCM_PerformedProcedureStepDescription), PerformedProtocolCodeSequence(), CommentsOnThePerformedProcedureStep(DCM_CommentsOnThePerformedProcedureStep), + TreatmentSessionUID(DCM_TreatmentSessionUID), ClinicalTrialCoordinatingCenterName(DCM_ClinicalTrialCoordinatingCenterName), ClinicalTrialSeriesID(DCM_ClinicalTrialSeriesID), ClinicalTrialSeriesDescription(DCM_ClinicalTrialSeriesDescription), @@ -139,24 +145,30 @@ DRTImageIOD::DRTImageIOD() InstitutionAddress(DCM_InstitutionAddress), StationName(DCM_StationName), InstitutionalDepartmentName(DCM_InstitutionalDepartmentName), + InstitutionalDepartmentTypeCodeSequence(), ManufacturerModelName(DCM_ManufacturerModelName), + ManufacturerDeviceClassUID(DCM_ManufacturerDeviceClassUID), DeviceSerialNumber(DCM_DeviceSerialNumber), SoftwareVersions(DCM_SoftwareVersions), GantryID(DCM_GantryID), UDISequence(), + DeviceUID(DCM_DeviceUID), SpatialResolution(DCM_SpatialResolution), DateOfLastCalibration(DCM_DateOfLastCalibration), TimeOfLastCalibration(DCM_TimeOfLastCalibration), PixelPaddingValue(DCM_PixelPaddingValue), - InstanceNumber(DCM_InstanceNumber), - PatientOrientation(DCM_PatientOrientation), - ContentDate(DCM_ContentDate), - ContentTime(DCM_ContentTime), + AcquisitionUID(DCM_AcquisitionUID), AcquisitionNumber(DCM_AcquisitionNumber), AcquisitionDate(DCM_AcquisitionDate), AcquisitionTime(DCM_AcquisitionTime), AcquisitionDateTime(DCM_AcquisitionDateTime), + AcquisitionDuration(DCM_AcquisitionDuration), ImagesInAcquisition(DCM_ImagesInAcquisition), + IrradiationEventUID(DCM_IrradiationEventUID), + InstanceNumber(DCM_InstanceNumber), + PatientOrientation(DCM_PatientOrientation), + ContentDate(DCM_ContentDate), + ContentTime(DCM_ContentTime), ImageComments(DCM_ImageComments), QualityControlImage(DCM_QualityControlImage), BurnedInAnnotation(DCM_BurnedInAnnotation), @@ -166,8 +178,10 @@ DRTImageIOD::DRTImageIOD() LossyImageCompressionMethod(DCM_LossyImageCompressionMethod), IconImageSequence(), PresentationLUTShape(DCM_PresentationLUTShape), - IrradiationEventUID(DCM_IrradiationEventUID), RealWorldValueMappingSequence(), + ImageLaterality(DCM_ImageLaterality), + AnatomicRegionSequence(), + PrimaryAnatomicStructureSequence(), ReferencedImageSequence(), ReferencedInstanceSequence(), DerivationDescription(DCM_DerivationDescription), @@ -191,6 +205,8 @@ DRTImageIOD::DRTImageIOD() PixelData(DCM_PixelData), PixelDataProviderURL(DCM_PixelDataProviderURL), PixelPaddingRangeLimit(DCM_PixelPaddingRangeLimit), + ExtendedOffsetTable(DCM_ExtendedOffsetTable), + ExtendedOffsetTableLengths(DCM_ExtendedOffsetTableLengths), ContrastBolusAgent(DCM_ContrastBolusAgent), ContrastBolusAgentSequence(), ContrastBolusRoute(DCM_ContrastBolusRoute), @@ -218,6 +234,7 @@ DRTImageIOD::DRTImageIOD() NumberOfFrames(DCM_NumberOfFrames), FrameIncrementPointer(DCM_FrameIncrementPointer), StereoPairsPresent(DCM_StereoPairsPresent), + EncapsulatedPixelDataValueTotalLength(DCM_EncapsulatedPixelDataValueTotalLength), DeviceSequence(), SamplesPerPixel(DCM_SamplesPerPixel), PhotometricInterpretation(DCM_PhotometricInterpretation), @@ -244,6 +261,8 @@ DRTImageIOD::DRTImageIOD() RadiationMachineSAD(DCM_RadiationMachineSAD), RadiationMachineSSD(DCM_RadiationMachineSSD), RTImageSID(DCM_RTImageSID), + EnhancedRTBeamLimitingDeviceDefinitionFlag(DCM_EnhancedRTBeamLimitingDeviceDefinitionFlag), + EnhancedRTBeamLimitingDeviceSequence(), SourceToReferenceObjectDistance(DCM_SourceToReferenceObjectDistance), ReferencedRTPlanSequence(), ReferencedBeamNumber(DCM_ReferencedBeamNumber), @@ -310,6 +329,10 @@ DRTImageIOD::DRTImageIOD() ConversionSourceAttributesSequence(), ContentQualification(DCM_ContentQualification), PrivateDataElementCharacteristicsSequence(), + InstanceOriginStatus(DCM_InstanceOriginStatus), + BarcodeValue(DCM_BarcodeValue), + ReferencedDefinedProtocolSequence(), + ReferencedPerformedProtocolSequence(), ReferencedSeriesSequence(), StudiesContainingOtherReferencedInstancesSequence(), FrameExtractionSequence() @@ -324,6 +347,7 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD ©) PatientID(copy.PatientID), IssuerOfPatientID(copy.IssuerOfPatientID), IssuerOfPatientIDQualifiersSequence(copy.IssuerOfPatientIDQualifiersSequence), + TypeOfPatientID(copy.TypeOfPatientID), PatientBirthDate(copy.PatientBirthDate), PatientBirthDateInAlternativeCalendar(copy.PatientBirthDateInAlternativeCalendar), PatientDeathDateInAlternativeCalendar(copy.PatientDeathDateInAlternativeCalendar), @@ -380,6 +404,7 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD ©) PhysiciansOfRecordIdentificationSequence(copy.PhysiciansOfRecordIdentificationSequence), NameOfPhysiciansReadingStudy(copy.NameOfPhysiciansReadingStudy), PhysiciansReadingStudyIdentificationSequence(copy.PhysiciansReadingStudyIdentificationSequence), + RequestingService(copy.RequestingService), RequestingServiceCodeSequence(copy.RequestingServiceCodeSequence), ReferencedStudySequence(copy.ReferencedStudySequence), ProcedureCodeSequence(copy.ProcedureCodeSequence), @@ -403,12 +428,15 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD ©) AdditionalPatientHistory(copy.AdditionalPatientHistory), AdmissionID(copy.AdmissionID), IssuerOfAdmissionIDSequence(copy.IssuerOfAdmissionIDSequence), + ReasonForVisit(copy.ReasonForVisit), + ReasonForVisitCodeSequence(copy.ReasonForVisitCodeSequence), ServiceEpisodeID(copy.ServiceEpisodeID), IssuerOfServiceEpisodeIDSequence(copy.IssuerOfServiceEpisodeIDSequence), ServiceEpisodeDescription(copy.ServiceEpisodeDescription), PatientSexNeutered(copy.PatientSexNeutered), ClinicalTrialTimePointID(copy.ClinicalTrialTimePointID), ClinicalTrialTimePointDescription(copy.ClinicalTrialTimePointDescription), + ClinicalTrialTimePointTypeCodeSequence(copy.ClinicalTrialTimePointTypeCodeSequence), LongitudinalTemporalOffsetFromEvent(copy.LongitudinalTemporalOffsetFromEvent), LongitudinalTemporalEventType(copy.LongitudinalTemporalEventType), ConsentForClinicalTrialUseSequence(copy.ConsentForClinicalTrialUseSequence), @@ -431,6 +459,7 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD ©) PerformedProcedureStepDescription(copy.PerformedProcedureStepDescription), PerformedProtocolCodeSequence(copy.PerformedProtocolCodeSequence), CommentsOnThePerformedProcedureStep(copy.CommentsOnThePerformedProcedureStep), + TreatmentSessionUID(copy.TreatmentSessionUID), ClinicalTrialCoordinatingCenterName(copy.ClinicalTrialCoordinatingCenterName), ClinicalTrialSeriesID(copy.ClinicalTrialSeriesID), ClinicalTrialSeriesDescription(copy.ClinicalTrialSeriesDescription), @@ -441,24 +470,30 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD ©) InstitutionAddress(copy.InstitutionAddress), StationName(copy.StationName), InstitutionalDepartmentName(copy.InstitutionalDepartmentName), + InstitutionalDepartmentTypeCodeSequence(copy.InstitutionalDepartmentTypeCodeSequence), ManufacturerModelName(copy.ManufacturerModelName), + ManufacturerDeviceClassUID(copy.ManufacturerDeviceClassUID), DeviceSerialNumber(copy.DeviceSerialNumber), SoftwareVersions(copy.SoftwareVersions), GantryID(copy.GantryID), UDISequence(copy.UDISequence), + DeviceUID(copy.DeviceUID), SpatialResolution(copy.SpatialResolution), DateOfLastCalibration(copy.DateOfLastCalibration), TimeOfLastCalibration(copy.TimeOfLastCalibration), PixelPaddingValue(copy.PixelPaddingValue), - InstanceNumber(copy.InstanceNumber), - PatientOrientation(copy.PatientOrientation), - ContentDate(copy.ContentDate), - ContentTime(copy.ContentTime), + AcquisitionUID(copy.AcquisitionUID), AcquisitionNumber(copy.AcquisitionNumber), AcquisitionDate(copy.AcquisitionDate), AcquisitionTime(copy.AcquisitionTime), AcquisitionDateTime(copy.AcquisitionDateTime), + AcquisitionDuration(copy.AcquisitionDuration), ImagesInAcquisition(copy.ImagesInAcquisition), + IrradiationEventUID(copy.IrradiationEventUID), + InstanceNumber(copy.InstanceNumber), + PatientOrientation(copy.PatientOrientation), + ContentDate(copy.ContentDate), + ContentTime(copy.ContentTime), ImageComments(copy.ImageComments), QualityControlImage(copy.QualityControlImage), BurnedInAnnotation(copy.BurnedInAnnotation), @@ -468,8 +503,10 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD ©) LossyImageCompressionMethod(copy.LossyImageCompressionMethod), IconImageSequence(copy.IconImageSequence), PresentationLUTShape(copy.PresentationLUTShape), - IrradiationEventUID(copy.IrradiationEventUID), RealWorldValueMappingSequence(copy.RealWorldValueMappingSequence), + ImageLaterality(copy.ImageLaterality), + AnatomicRegionSequence(copy.AnatomicRegionSequence), + PrimaryAnatomicStructureSequence(copy.PrimaryAnatomicStructureSequence), ReferencedImageSequence(copy.ReferencedImageSequence), ReferencedInstanceSequence(copy.ReferencedInstanceSequence), DerivationDescription(copy.DerivationDescription), @@ -493,6 +530,8 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD ©) PixelData(copy.PixelData), PixelDataProviderURL(copy.PixelDataProviderURL), PixelPaddingRangeLimit(copy.PixelPaddingRangeLimit), + ExtendedOffsetTable(copy.ExtendedOffsetTable), + ExtendedOffsetTableLengths(copy.ExtendedOffsetTableLengths), ContrastBolusAgent(copy.ContrastBolusAgent), ContrastBolusAgentSequence(copy.ContrastBolusAgentSequence), ContrastBolusRoute(copy.ContrastBolusRoute), @@ -520,6 +559,7 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD ©) NumberOfFrames(copy.NumberOfFrames), FrameIncrementPointer(copy.FrameIncrementPointer), StereoPairsPresent(copy.StereoPairsPresent), + EncapsulatedPixelDataValueTotalLength(copy.EncapsulatedPixelDataValueTotalLength), DeviceSequence(copy.DeviceSequence), SamplesPerPixel(copy.SamplesPerPixel), PhotometricInterpretation(copy.PhotometricInterpretation), @@ -546,6 +586,8 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD ©) RadiationMachineSAD(copy.RadiationMachineSAD), RadiationMachineSSD(copy.RadiationMachineSSD), RTImageSID(copy.RTImageSID), + EnhancedRTBeamLimitingDeviceDefinitionFlag(copy.EnhancedRTBeamLimitingDeviceDefinitionFlag), + EnhancedRTBeamLimitingDeviceSequence(copy.EnhancedRTBeamLimitingDeviceSequence), SourceToReferenceObjectDistance(copy.SourceToReferenceObjectDistance), ReferencedRTPlanSequence(copy.ReferencedRTPlanSequence), ReferencedBeamNumber(copy.ReferencedBeamNumber), @@ -612,6 +654,10 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD ©) ConversionSourceAttributesSequence(copy.ConversionSourceAttributesSequence), ContentQualification(copy.ContentQualification), PrivateDataElementCharacteristicsSequence(copy.PrivateDataElementCharacteristicsSequence), + InstanceOriginStatus(copy.InstanceOriginStatus), + BarcodeValue(copy.BarcodeValue), + ReferencedDefinedProtocolSequence(copy.ReferencedDefinedProtocolSequence), + ReferencedPerformedProtocolSequence(copy.ReferencedPerformedProtocolSequence), ReferencedSeriesSequence(copy.ReferencedSeriesSequence), StudiesContainingOtherReferencedInstancesSequence(copy.StudiesContainingOtherReferencedInstancesSequence), FrameExtractionSequence(copy.FrameExtractionSequence) @@ -632,6 +678,7 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD ©) PatientID = copy.PatientID; IssuerOfPatientID = copy.IssuerOfPatientID; IssuerOfPatientIDQualifiersSequence = copy.IssuerOfPatientIDQualifiersSequence; + TypeOfPatientID = copy.TypeOfPatientID; PatientBirthDate = copy.PatientBirthDate; PatientBirthDateInAlternativeCalendar = copy.PatientBirthDateInAlternativeCalendar; PatientDeathDateInAlternativeCalendar = copy.PatientDeathDateInAlternativeCalendar; @@ -688,6 +735,7 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD ©) PhysiciansOfRecordIdentificationSequence = copy.PhysiciansOfRecordIdentificationSequence; NameOfPhysiciansReadingStudy = copy.NameOfPhysiciansReadingStudy; PhysiciansReadingStudyIdentificationSequence = copy.PhysiciansReadingStudyIdentificationSequence; + RequestingService = copy.RequestingService; RequestingServiceCodeSequence = copy.RequestingServiceCodeSequence; ReferencedStudySequence = copy.ReferencedStudySequence; ProcedureCodeSequence = copy.ProcedureCodeSequence; @@ -711,12 +759,15 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD ©) AdditionalPatientHistory = copy.AdditionalPatientHistory; AdmissionID = copy.AdmissionID; IssuerOfAdmissionIDSequence = copy.IssuerOfAdmissionIDSequence; + ReasonForVisit = copy.ReasonForVisit; + ReasonForVisitCodeSequence = copy.ReasonForVisitCodeSequence; ServiceEpisodeID = copy.ServiceEpisodeID; IssuerOfServiceEpisodeIDSequence = copy.IssuerOfServiceEpisodeIDSequence; ServiceEpisodeDescription = copy.ServiceEpisodeDescription; PatientSexNeutered = copy.PatientSexNeutered; ClinicalTrialTimePointID = copy.ClinicalTrialTimePointID; ClinicalTrialTimePointDescription = copy.ClinicalTrialTimePointDescription; + ClinicalTrialTimePointTypeCodeSequence = copy.ClinicalTrialTimePointTypeCodeSequence; LongitudinalTemporalOffsetFromEvent = copy.LongitudinalTemporalOffsetFromEvent; LongitudinalTemporalEventType = copy.LongitudinalTemporalEventType; ConsentForClinicalTrialUseSequence = copy.ConsentForClinicalTrialUseSequence; @@ -739,6 +790,7 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD ©) PerformedProcedureStepDescription = copy.PerformedProcedureStepDescription; PerformedProtocolCodeSequence = copy.PerformedProtocolCodeSequence; CommentsOnThePerformedProcedureStep = copy.CommentsOnThePerformedProcedureStep; + TreatmentSessionUID = copy.TreatmentSessionUID; ClinicalTrialCoordinatingCenterName = copy.ClinicalTrialCoordinatingCenterName; ClinicalTrialSeriesID = copy.ClinicalTrialSeriesID; ClinicalTrialSeriesDescription = copy.ClinicalTrialSeriesDescription; @@ -749,24 +801,30 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD ©) InstitutionAddress = copy.InstitutionAddress; StationName = copy.StationName; InstitutionalDepartmentName = copy.InstitutionalDepartmentName; + InstitutionalDepartmentTypeCodeSequence = copy.InstitutionalDepartmentTypeCodeSequence; ManufacturerModelName = copy.ManufacturerModelName; + ManufacturerDeviceClassUID = copy.ManufacturerDeviceClassUID; DeviceSerialNumber = copy.DeviceSerialNumber; SoftwareVersions = copy.SoftwareVersions; GantryID = copy.GantryID; UDISequence = copy.UDISequence; + DeviceUID = copy.DeviceUID; SpatialResolution = copy.SpatialResolution; DateOfLastCalibration = copy.DateOfLastCalibration; TimeOfLastCalibration = copy.TimeOfLastCalibration; PixelPaddingValue = copy.PixelPaddingValue; - InstanceNumber = copy.InstanceNumber; - PatientOrientation = copy.PatientOrientation; - ContentDate = copy.ContentDate; - ContentTime = copy.ContentTime; + AcquisitionUID = copy.AcquisitionUID; AcquisitionNumber = copy.AcquisitionNumber; AcquisitionDate = copy.AcquisitionDate; AcquisitionTime = copy.AcquisitionTime; AcquisitionDateTime = copy.AcquisitionDateTime; + AcquisitionDuration = copy.AcquisitionDuration; ImagesInAcquisition = copy.ImagesInAcquisition; + IrradiationEventUID = copy.IrradiationEventUID; + InstanceNumber = copy.InstanceNumber; + PatientOrientation = copy.PatientOrientation; + ContentDate = copy.ContentDate; + ContentTime = copy.ContentTime; ImageComments = copy.ImageComments; QualityControlImage = copy.QualityControlImage; BurnedInAnnotation = copy.BurnedInAnnotation; @@ -776,8 +834,10 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD ©) LossyImageCompressionMethod = copy.LossyImageCompressionMethod; IconImageSequence = copy.IconImageSequence; PresentationLUTShape = copy.PresentationLUTShape; - IrradiationEventUID = copy.IrradiationEventUID; RealWorldValueMappingSequence = copy.RealWorldValueMappingSequence; + ImageLaterality = copy.ImageLaterality; + AnatomicRegionSequence = copy.AnatomicRegionSequence; + PrimaryAnatomicStructureSequence = copy.PrimaryAnatomicStructureSequence; ReferencedImageSequence = copy.ReferencedImageSequence; ReferencedInstanceSequence = copy.ReferencedInstanceSequence; DerivationDescription = copy.DerivationDescription; @@ -801,6 +861,8 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD ©) PixelData = copy.PixelData; PixelDataProviderURL = copy.PixelDataProviderURL; PixelPaddingRangeLimit = copy.PixelPaddingRangeLimit; + ExtendedOffsetTable = copy.ExtendedOffsetTable; + ExtendedOffsetTableLengths = copy.ExtendedOffsetTableLengths; ContrastBolusAgent = copy.ContrastBolusAgent; ContrastBolusAgentSequence = copy.ContrastBolusAgentSequence; ContrastBolusRoute = copy.ContrastBolusRoute; @@ -828,6 +890,7 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD ©) NumberOfFrames = copy.NumberOfFrames; FrameIncrementPointer = copy.FrameIncrementPointer; StereoPairsPresent = copy.StereoPairsPresent; + EncapsulatedPixelDataValueTotalLength = copy.EncapsulatedPixelDataValueTotalLength; DeviceSequence = copy.DeviceSequence; SamplesPerPixel = copy.SamplesPerPixel; PhotometricInterpretation = copy.PhotometricInterpretation; @@ -854,6 +917,8 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD ©) RadiationMachineSAD = copy.RadiationMachineSAD; RadiationMachineSSD = copy.RadiationMachineSSD; RTImageSID = copy.RTImageSID; + EnhancedRTBeamLimitingDeviceDefinitionFlag = copy.EnhancedRTBeamLimitingDeviceDefinitionFlag; + EnhancedRTBeamLimitingDeviceSequence = copy.EnhancedRTBeamLimitingDeviceSequence; SourceToReferenceObjectDistance = copy.SourceToReferenceObjectDistance; ReferencedRTPlanSequence = copy.ReferencedRTPlanSequence; ReferencedBeamNumber = copy.ReferencedBeamNumber; @@ -920,6 +985,10 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD ©) ConversionSourceAttributesSequence = copy.ConversionSourceAttributesSequence; ContentQualification = copy.ContentQualification; PrivateDataElementCharacteristicsSequence = copy.PrivateDataElementCharacteristicsSequence; + InstanceOriginStatus = copy.InstanceOriginStatus; + BarcodeValue = copy.BarcodeValue; + ReferencedDefinedProtocolSequence = copy.ReferencedDefinedProtocolSequence; + ReferencedPerformedProtocolSequence = copy.ReferencedPerformedProtocolSequence; ReferencedSeriesSequence = copy.ReferencedSeriesSequence; StudiesContainingOtherReferencedInstancesSequence = copy.StudiesContainingOtherReferencedInstancesSequence; FrameExtractionSequence = copy.FrameExtractionSequence; @@ -935,6 +1004,7 @@ void DRTImageIOD::clear() PatientID.clear(); IssuerOfPatientID.clear(); IssuerOfPatientIDQualifiersSequence.clear(); + TypeOfPatientID.clear(); PatientBirthDate.clear(); PatientBirthDateInAlternativeCalendar.clear(); PatientDeathDateInAlternativeCalendar.clear(); @@ -991,6 +1061,7 @@ void DRTImageIOD::clear() PhysiciansOfRecordIdentificationSequence.clear(); NameOfPhysiciansReadingStudy.clear(); PhysiciansReadingStudyIdentificationSequence.clear(); + RequestingService.clear(); RequestingServiceCodeSequence.clear(); ReferencedStudySequence.clear(); ProcedureCodeSequence.clear(); @@ -1014,12 +1085,15 @@ void DRTImageIOD::clear() AdditionalPatientHistory.clear(); AdmissionID.clear(); IssuerOfAdmissionIDSequence.clear(); + ReasonForVisit.clear(); + ReasonForVisitCodeSequence.clear(); ServiceEpisodeID.clear(); IssuerOfServiceEpisodeIDSequence.clear(); ServiceEpisodeDescription.clear(); PatientSexNeutered.clear(); ClinicalTrialTimePointID.clear(); ClinicalTrialTimePointDescription.clear(); + ClinicalTrialTimePointTypeCodeSequence.clear(); LongitudinalTemporalOffsetFromEvent.clear(); LongitudinalTemporalEventType.clear(); ConsentForClinicalTrialUseSequence.clear(); @@ -1042,6 +1116,7 @@ void DRTImageIOD::clear() PerformedProcedureStepDescription.clear(); PerformedProtocolCodeSequence.clear(); CommentsOnThePerformedProcedureStep.clear(); + TreatmentSessionUID.clear(); ClinicalTrialCoordinatingCenterName.clear(); ClinicalTrialSeriesID.clear(); ClinicalTrialSeriesDescription.clear(); @@ -1052,25 +1127,31 @@ void DRTImageIOD::clear() InstitutionAddress.clear(); StationName.clear(); InstitutionalDepartmentName.clear(); + InstitutionalDepartmentTypeCodeSequence.clear(); ManufacturerModelName.clear(); + ManufacturerDeviceClassUID.clear(); DeviceSerialNumber.clear(); SoftwareVersions.clear(); GantryID.clear(); UDISequence.clear(); + DeviceUID.clear(); SpatialResolution.clear(); DateOfLastCalibration.clear(); TimeOfLastCalibration.clear(); PixelPaddingValue.clear(); - InstanceNumber.clear(); - PatientOrientation.clear(); - ContentDate.clear(); - ContentTime.clear(); - ImageType.clear(); + AcquisitionUID.clear(); AcquisitionNumber.clear(); AcquisitionDate.clear(); AcquisitionTime.clear(); AcquisitionDateTime.clear(); + AcquisitionDuration.clear(); ImagesInAcquisition.clear(); + IrradiationEventUID.clear(); + InstanceNumber.clear(); + PatientOrientation.clear(); + ContentDate.clear(); + ContentTime.clear(); + ImageType.clear(); ImageComments.clear(); QualityControlImage.clear(); BurnedInAnnotation.clear(); @@ -1080,8 +1161,10 @@ void DRTImageIOD::clear() LossyImageCompressionMethod.clear(); IconImageSequence.clear(); PresentationLUTShape.clear(); - IrradiationEventUID.clear(); RealWorldValueMappingSequence.clear(); + ImageLaterality.clear(); + AnatomicRegionSequence.clear(); + PrimaryAnatomicStructureSequence.clear(); ReferencedImageSequence.clear(); ReferencedInstanceSequence.clear(); DerivationDescription.clear(); @@ -1111,6 +1194,8 @@ void DRTImageIOD::clear() PixelData.clear(); PixelDataProviderURL.clear(); PixelPaddingRangeLimit.clear(); + ExtendedOffsetTable.clear(); + ExtendedOffsetTableLengths.clear(); ContrastBolusAgent.clear(); ContrastBolusAgentSequence.clear(); ContrastBolusRoute.clear(); @@ -1138,6 +1223,7 @@ void DRTImageIOD::clear() NumberOfFrames.clear(); FrameIncrementPointer.clear(); StereoPairsPresent.clear(); + EncapsulatedPixelDataValueTotalLength.clear(); DeviceSequence.clear(); PixelIntensityRelationship.clear(); PixelIntensityRelationshipSign.clear(); @@ -1157,6 +1243,8 @@ void DRTImageIOD::clear() RadiationMachineSAD.clear(); RadiationMachineSSD.clear(); RTImageSID.clear(); + EnhancedRTBeamLimitingDeviceDefinitionFlag.clear(); + EnhancedRTBeamLimitingDeviceSequence.clear(); SourceToReferenceObjectDistance.clear(); ReferencedRTPlanSequence.clear(); ReferencedBeamNumber.clear(); @@ -1223,6 +1311,10 @@ void DRTImageIOD::clear() ConversionSourceAttributesSequence.clear(); ContentQualification.clear(); PrivateDataElementCharacteristicsSequence.clear(); + InstanceOriginStatus.clear(); + BarcodeValue.clear(); + ReferencedDefinedProtocolSequence.clear(); + ReferencedPerformedProtocolSequence.clear(); ReferencedSeriesSequence.clear(); StudiesContainingOtherReferencedInstancesSequence.clear(); FrameExtractionSequence.clear(); @@ -1287,27 +1379,35 @@ OFCondition DRTImageIOD::read(DcmItem &dataset) getAndCheckElementFromDataset(dataset, InstitutionAddress, "1", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, StationName, "1", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, InstitutionalDepartmentName, "1", "3", "GeneralEquipmentModule"); + InstitutionalDepartmentTypeCodeSequence.read(dataset, "1-n", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, ManufacturerModelName, "1", "3", "GeneralEquipmentModule"); + getAndCheckElementFromDataset(dataset, ManufacturerDeviceClassUID, "1-n", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, DeviceSerialNumber, "1", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, SoftwareVersions, "1-n", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, GantryID, "1", "3", "GeneralEquipmentModule"); UDISequence.read(dataset, "1-n", "3", "GeneralEquipmentModule"); + getAndCheckElementFromDataset(dataset, DeviceUID, "1", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, SpatialResolution, "1", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, DateOfLastCalibration, "1-n", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, TimeOfLastCalibration, "1-n", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, PixelPaddingValue, "1", "1C", "GeneralEquipmentModule"); + // --- GeneralAcquisitionModule (M) --- + getAndCheckElementFromDataset(dataset, AcquisitionUID, "1", "3", "GeneralAcquisitionModule"); + getAndCheckElementFromDataset(dataset, AcquisitionNumber, "1", "3", "GeneralAcquisitionModule"); + getAndCheckElementFromDataset(dataset, AcquisitionDate, "1", "3", "GeneralAcquisitionModule"); + getAndCheckElementFromDataset(dataset, AcquisitionTime, "1", "3", "GeneralAcquisitionModule"); + getAndCheckElementFromDataset(dataset, AcquisitionDateTime, "1", "3", "GeneralAcquisitionModule"); + getAndCheckElementFromDataset(dataset, AcquisitionDuration, "1", "3", "GeneralAcquisitionModule"); + getAndCheckElementFromDataset(dataset, ImagesInAcquisition, "1", "3", "GeneralAcquisitionModule"); + getAndCheckElementFromDataset(dataset, IrradiationEventUID, "1-n", "3", "GeneralAcquisitionModule"); + // --- GeneralImageModule (M) --- getAndCheckElementFromDataset(dataset, InstanceNumber, "1", "2", "GeneralImageModule"); getAndCheckElementFromDataset(dataset, PatientOrientation, "2", "2C", "GeneralImageModule"); getAndCheckElementFromDataset(dataset, ContentDate, "1", "2C", "GeneralImageModule"); getAndCheckElementFromDataset(dataset, ContentTime, "1", "2C", "GeneralImageModule"); // getAndCheckElementFromDataset(dataset, ImageType, "2-n", "3", "GeneralImageModule"); - getAndCheckElementFromDataset(dataset, AcquisitionNumber, "1", "3", "GeneralImageModule"); - getAndCheckElementFromDataset(dataset, AcquisitionDate, "1", "3", "GeneralImageModule"); - getAndCheckElementFromDataset(dataset, AcquisitionTime, "1", "3", "GeneralImageModule"); - getAndCheckElementFromDataset(dataset, AcquisitionDateTime, "1", "3", "GeneralImageModule"); - getAndCheckElementFromDataset(dataset, ImagesInAcquisition, "1", "3", "GeneralImageModule"); getAndCheckElementFromDataset(dataset, ImageComments, "1", "3", "GeneralImageModule"); getAndCheckElementFromDataset(dataset, QualityControlImage, "1", "3", "GeneralImageModule"); getAndCheckElementFromDataset(dataset, BurnedInAnnotation, "1", "3", "GeneralImageModule"); @@ -1317,8 +1417,10 @@ OFCondition DRTImageIOD::read(DcmItem &dataset) getAndCheckElementFromDataset(dataset, LossyImageCompressionMethod, "1-n", "3", "GeneralImageModule"); IconImageSequence.read(dataset, "1-n", "3", "GeneralImageModule"); getAndCheckElementFromDataset(dataset, PresentationLUTShape, "1", "3", "GeneralImageModule"); - getAndCheckElementFromDataset(dataset, IrradiationEventUID, "1-n", "3", "GeneralImageModule"); RealWorldValueMappingSequence.read(dataset, "1-n", "3", "GeneralImageModule"); + getAndCheckElementFromDataset(dataset, ImageLaterality, "1", "3", "GeneralImageModule"); + AnatomicRegionSequence.read(dataset, "1-n", "3", "GeneralImageModule"); + PrimaryAnatomicStructureSequence.read(dataset, "1-n", "3", "GeneralImageModule"); // --- GeneralReferenceModule (U) --- ReferencedImageSequence.read(dataset, "1-n", "3", "GeneralReferenceModule"); @@ -1352,6 +1454,8 @@ OFCondition DRTImageIOD::read(DcmItem &dataset) getAndCheckElementFromDataset(dataset, PixelData, "1", "1C", "ImagePixelModule"); getAndCheckElementFromDataset(dataset, PixelDataProviderURL, "1", "1C", "ImagePixelModule"); getAndCheckElementFromDataset(dataset, PixelPaddingRangeLimit, "1", "1C", "ImagePixelModule"); + getAndCheckElementFromDataset(dataset, ExtendedOffsetTable, "1", "3", "ImagePixelModule"); + getAndCheckElementFromDataset(dataset, ExtendedOffsetTableLengths, "1", "1C", "ImagePixelModule"); // --- ContrastBolusModule (C) --- if (dataset.tagExists(DCM_ContrastBolusAgent)) @@ -1391,6 +1495,7 @@ OFCondition DRTImageIOD::read(DcmItem &dataset) getAndCheckElementFromDataset(dataset, NumberOfFrames, "1", "1", "MultiFrameModule"); getAndCheckElementFromDataset(dataset, FrameIncrementPointer, "1-n", "1", "MultiFrameModule"); getAndCheckElementFromDataset(dataset, StereoPairsPresent, "1", "3", "MultiFrameModule"); + getAndCheckElementFromDataset(dataset, EncapsulatedPixelDataValueTotalLength, "1", "3", "MultiFrameModule"); } // --- DeviceModule (U) --- @@ -1425,6 +1530,8 @@ OFCondition DRTImageIOD::read(DcmItem &dataset) getAndCheckElementFromDataset(dataset, RadiationMachineSAD, "1", "2", "RTImageModule"); getAndCheckElementFromDataset(dataset, RadiationMachineSSD, "1", "3", "RTImageModule"); getAndCheckElementFromDataset(dataset, RTImageSID, "1", "2", "RTImageModule"); + getAndCheckElementFromDataset(dataset, EnhancedRTBeamLimitingDeviceDefinitionFlag, "1", "3", "RTImageModule"); + EnhancedRTBeamLimitingDeviceSequence.read(dataset, "1-n", "1C", "RTImageModule"); getAndCheckElementFromDataset(dataset, SourceToReferenceObjectDistance, "1", "3", "RTImageModule"); ReferencedRTPlanSequence.read(dataset, "1-n", "3", "RTImageModule"); getAndCheckElementFromDataset(dataset, ReferencedBeamNumber, "1", "3", "RTImageModule"); @@ -1503,6 +1610,10 @@ OFCondition DRTImageIOD::read(DcmItem &dataset) ConversionSourceAttributesSequence.read(dataset, "1-n", "1C", "SOPCommonModule"); getAndCheckElementFromDataset(dataset, ContentQualification, "1", "3", "SOPCommonModule"); PrivateDataElementCharacteristicsSequence.read(dataset, "1-n", "3", "SOPCommonModule"); + getAndCheckElementFromDataset(dataset, InstanceOriginStatus, "1", "3", "SOPCommonModule"); + getAndCheckElementFromDataset(dataset, BarcodeValue, "1", "3", "SOPCommonModule"); + ReferencedDefinedProtocolSequence.read(dataset, "1-n", "1C", "SOPCommonModule"); + ReferencedPerformedProtocolSequence.read(dataset, "1-n", "1C", "SOPCommonModule"); // --- CommonInstanceReferenceModule (U) --- ReferencedSeriesSequence.read(dataset, "1-n", "1C", "CommonInstanceReferenceModule"); @@ -1527,6 +1638,7 @@ OFCondition DRTImageIOD::readPatientData(DcmItem &dataset) getAndCheckElementFromDataset(dataset, PatientID, "1", "2", "PatientModule"); getAndCheckElementFromDataset(dataset, IssuerOfPatientID, "1", "3", "PatientModule"); IssuerOfPatientIDQualifiersSequence.read(dataset, "1-n", "3", "PatientModule"); + getAndCheckElementFromDataset(dataset, TypeOfPatientID, "1", "3", "PatientModule"); getAndCheckElementFromDataset(dataset, PatientBirthDate, "1", "2", "PatientModule"); getAndCheckElementFromDataset(dataset, PatientBirthDateInAlternativeCalendar, "1", "3", "PatientModule"); getAndCheckElementFromDataset(dataset, PatientDeathDateInAlternativeCalendar, "1", "3", "PatientModule"); @@ -1603,6 +1715,7 @@ OFCondition DRTImageIOD::readStudyData(DcmItem &dataset) PhysiciansOfRecordIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule"); getAndCheckElementFromDataset(dataset, NameOfPhysiciansReadingStudy, "1-n", "3", "GeneralStudyModule"); PhysiciansReadingStudyIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule"); + getAndCheckElementFromDataset(dataset, RequestingService, "1", "3", "GeneralStudyModule"); RequestingServiceCodeSequence.read(dataset, "1-n", "3", "GeneralStudyModule"); ReferencedStudySequence.read(dataset, "1-n", "3", "GeneralStudyModule"); ProcedureCodeSequence.read(dataset, "1-n", "3", "GeneralStudyModule"); @@ -1628,6 +1741,8 @@ OFCondition DRTImageIOD::readStudyData(DcmItem &dataset) getAndCheckElementFromDataset(dataset, AdditionalPatientHistory, "1", "3", "PatientStudyModule"); getAndCheckElementFromDataset(dataset, AdmissionID, "1", "3", "PatientStudyModule"); IssuerOfAdmissionIDSequence.read(dataset, "1-n", "3", "PatientStudyModule"); + getAndCheckElementFromDataset(dataset, ReasonForVisit, "1", "3", "PatientStudyModule"); + ReasonForVisitCodeSequence.read(dataset, "1-n", "3", "PatientStudyModule"); getAndCheckElementFromDataset(dataset, ServiceEpisodeID, "1", "3", "PatientStudyModule"); IssuerOfServiceEpisodeIDSequence.read(dataset, "1-n", "3", "PatientStudyModule"); getAndCheckElementFromDataset(dataset, ServiceEpisodeDescription, "1", "3", "PatientStudyModule"); @@ -1638,6 +1753,7 @@ OFCondition DRTImageIOD::readStudyData(DcmItem &dataset) { getAndCheckElementFromDataset(dataset, ClinicalTrialTimePointID, "1", "2", "ClinicalTrialStudyModule"); getAndCheckElementFromDataset(dataset, ClinicalTrialTimePointDescription, "1", "3", "ClinicalTrialStudyModule"); + ClinicalTrialTimePointTypeCodeSequence.read(dataset, "1-n", "3", "ClinicalTrialStudyModule"); getAndCheckElementFromDataset(dataset, LongitudinalTemporalOffsetFromEvent, "1", "3", "ClinicalTrialStudyModule"); getAndCheckElementFromDataset(dataset, LongitudinalTemporalEventType, "1", "1C", "ClinicalTrialStudyModule"); ConsentForClinicalTrialUseSequence.read(dataset, "1-n", "3", "ClinicalTrialStudyModule"); @@ -1673,6 +1789,7 @@ OFCondition DRTImageIOD::readSeriesData(DcmItem &dataset) getAndCheckElementFromDataset(dataset, PerformedProcedureStepDescription, "1", "3", "RTSeriesModule"); PerformedProtocolCodeSequence.read(dataset, "1-n", "3", "RTSeriesModule"); getAndCheckElementFromDataset(dataset, CommentsOnThePerformedProcedureStep, "1", "3", "RTSeriesModule"); + getAndCheckElementFromDataset(dataset, TreatmentSessionUID, "1", "3", "RTSeriesModule"); // --- ClinicalTrialSeriesModule (U) --- if (dataset.tagExists(DCM_ClinicalTrialCoordinatingCenterName)) @@ -1700,6 +1817,7 @@ OFCondition DRTImageIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmLongString(PatientID), "1", "2", "PatientModule"); addElementToDataset(result, dataset, new DcmLongString(IssuerOfPatientID), "1", "3", "PatientModule"); if (result.good()) result = IssuerOfPatientIDQualifiersSequence.write(dataset, "1-n" ,"3", "PatientModule"); + addElementToDataset(result, dataset, new DcmCodeString(TypeOfPatientID), "1", "3", "PatientModule"); addElementToDataset(result, dataset, new DcmDate(PatientBirthDate), "1", "2", "PatientModule"); addElementToDataset(result, dataset, new DcmLongString(PatientBirthDateInAlternativeCalendar), "1", "3", "PatientModule"); addElementToDataset(result, dataset, new DcmLongString(PatientDeathDateInAlternativeCalendar), "1", "3", "PatientModule"); @@ -1763,6 +1881,7 @@ OFCondition DRTImageIOD::write(DcmItem &dataset) if (result.good()) result = PhysiciansOfRecordIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule"); addElementToDataset(result, dataset, new DcmPersonName(NameOfPhysiciansReadingStudy), "1-n", "3", "GeneralStudyModule"); if (result.good()) result = PhysiciansReadingStudyIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule"); + addElementToDataset(result, dataset, new DcmLongString(RequestingService), "1", "3", "GeneralStudyModule"); if (result.good()) result = RequestingServiceCodeSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule"); if (result.good()) result = ReferencedStudySequence.write(dataset, "1-n" ,"3", "GeneralStudyModule"); if (result.good()) result = ProcedureCodeSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule"); @@ -1790,6 +1909,8 @@ OFCondition DRTImageIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmLongText(AdditionalPatientHistory), "1", "3", "PatientStudyModule"); addElementToDataset(result, dataset, new DcmLongString(AdmissionID), "1", "3", "PatientStudyModule"); if (result.good()) result = IssuerOfAdmissionIDSequence.write(dataset, "1-n" ,"3", "PatientStudyModule"); + addElementToDataset(result, dataset, new DcmUnlimitedText(ReasonForVisit), "1", "3", "PatientStudyModule"); + if (result.good()) result = ReasonForVisitCodeSequence.write(dataset, "1-n" ,"3", "PatientStudyModule"); addElementToDataset(result, dataset, new DcmLongString(ServiceEpisodeID), "1", "3", "PatientStudyModule"); if (result.good()) result = IssuerOfServiceEpisodeIDSequence.write(dataset, "1-n" ,"3", "PatientStudyModule"); addElementToDataset(result, dataset, new DcmLongString(ServiceEpisodeDescription), "1", "3", "PatientStudyModule"); @@ -1801,6 +1922,7 @@ OFCondition DRTImageIOD::write(DcmItem &dataset) { addElementToDataset(result, dataset, new DcmLongString(ClinicalTrialTimePointID), "1", "2", "ClinicalTrialStudyModule"); addElementToDataset(result, dataset, new DcmShortText(ClinicalTrialTimePointDescription), "1", "3", "ClinicalTrialStudyModule"); + if (result.good()) result = ClinicalTrialTimePointTypeCodeSequence.write(dataset, "1-n" ,"3", "ClinicalTrialStudyModule"); addElementToDataset(result, dataset, new DcmFloatingPointDouble(LongitudinalTemporalOffsetFromEvent), "1", "3", "ClinicalTrialStudyModule"); addElementToDataset(result, dataset, new DcmCodeString(LongitudinalTemporalEventType), "1", "1C", "ClinicalTrialStudyModule"); if (result.good()) result = ConsentForClinicalTrialUseSequence.write(dataset, "1-n" ,"3", "ClinicalTrialStudyModule"); @@ -1826,6 +1948,7 @@ OFCondition DRTImageIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmLongString(PerformedProcedureStepDescription), "1", "3", "RTSeriesModule"); if (result.good()) result = PerformedProtocolCodeSequence.write(dataset, "1-n" ,"3", "RTSeriesModule"); addElementToDataset(result, dataset, new DcmShortText(CommentsOnThePerformedProcedureStep), "1", "3", "RTSeriesModule"); + addElementToDataset(result, dataset, new DcmUniqueIdentifier(TreatmentSessionUID), "1", "3", "RTSeriesModule"); // --- ClinicalTrialSeriesModule (U) --- if (isClinicalTrialSeriesModulePresent(OFFalse /*complete*/)) @@ -1848,27 +1971,35 @@ OFCondition DRTImageIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmShortText(InstitutionAddress), "1", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmShortString(StationName), "1", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmLongString(InstitutionalDepartmentName), "1", "3", "GeneralEquipmentModule"); + if (result.good()) result = InstitutionalDepartmentTypeCodeSequence.write(dataset, "1-n" ,"3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmLongString(ManufacturerModelName), "1", "3", "GeneralEquipmentModule"); + addElementToDataset(result, dataset, new DcmUniqueIdentifier(ManufacturerDeviceClassUID), "1-n", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmLongString(DeviceSerialNumber), "1", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmLongString(SoftwareVersions), "1-n", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmLongString(GantryID), "1", "3", "GeneralEquipmentModule"); if (result.good()) result = UDISequence.write(dataset, "1-n" ,"3", "GeneralEquipmentModule"); + addElementToDataset(result, dataset, new DcmUniqueIdentifier(DeviceUID), "1", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmDecimalString(SpatialResolution), "1", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmDate(DateOfLastCalibration), "1-n", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmTime(TimeOfLastCalibration), "1-n", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmUnsignedShort(PixelPaddingValue), "1", "1C", "GeneralEquipmentModule"); + // --- GeneralAcquisitionModule (M) --- + addElementToDataset(result, dataset, new DcmUniqueIdentifier(AcquisitionUID), "1", "3", "GeneralAcquisitionModule"); + addElementToDataset(result, dataset, new DcmIntegerString(AcquisitionNumber), "1", "3", "GeneralAcquisitionModule"); + addElementToDataset(result, dataset, new DcmDate(AcquisitionDate), "1", "3", "GeneralAcquisitionModule"); + addElementToDataset(result, dataset, new DcmTime(AcquisitionTime), "1", "3", "GeneralAcquisitionModule"); + addElementToDataset(result, dataset, new DcmDateTime(AcquisitionDateTime), "1", "3", "GeneralAcquisitionModule"); + addElementToDataset(result, dataset, new DcmFloatingPointDouble(AcquisitionDuration), "1", "3", "GeneralAcquisitionModule"); + addElementToDataset(result, dataset, new DcmIntegerString(ImagesInAcquisition), "1", "3", "GeneralAcquisitionModule"); + addElementToDataset(result, dataset, new DcmUniqueIdentifier(IrradiationEventUID), "1-n", "3", "GeneralAcquisitionModule"); + // --- GeneralImageModule (M) --- addElementToDataset(result, dataset, new DcmIntegerString(InstanceNumber), "1", "2", "GeneralImageModule"); addElementToDataset(result, dataset, new DcmCodeString(PatientOrientation), "2", "2C", "GeneralImageModule"); addElementToDataset(result, dataset, new DcmDate(ContentDate), "1", "2C", "GeneralImageModule"); addElementToDataset(result, dataset, new DcmTime(ContentTime), "1", "2C", "GeneralImageModule"); // addElementToDataset(result, dataset, new DcmCodeString(ImageType), "2-n", "3", "GeneralImageModule"); - addElementToDataset(result, dataset, new DcmIntegerString(AcquisitionNumber), "1", "3", "GeneralImageModule"); - addElementToDataset(result, dataset, new DcmDate(AcquisitionDate), "1", "3", "GeneralImageModule"); - addElementToDataset(result, dataset, new DcmTime(AcquisitionTime), "1", "3", "GeneralImageModule"); - addElementToDataset(result, dataset, new DcmDateTime(AcquisitionDateTime), "1", "3", "GeneralImageModule"); - addElementToDataset(result, dataset, new DcmIntegerString(ImagesInAcquisition), "1", "3", "GeneralImageModule"); addElementToDataset(result, dataset, new DcmLongText(ImageComments), "1", "3", "GeneralImageModule"); addElementToDataset(result, dataset, new DcmCodeString(QualityControlImage), "1", "3", "GeneralImageModule"); addElementToDataset(result, dataset, new DcmCodeString(BurnedInAnnotation), "1", "3", "GeneralImageModule"); @@ -1878,8 +2009,10 @@ OFCondition DRTImageIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmCodeString(LossyImageCompressionMethod), "1-n", "3", "GeneralImageModule"); if (result.good()) result = IconImageSequence.write(dataset, "1-n" ,"3", "GeneralImageModule"); addElementToDataset(result, dataset, new DcmCodeString(PresentationLUTShape), "1", "3", "GeneralImageModule"); - addElementToDataset(result, dataset, new DcmUniqueIdentifier(IrradiationEventUID), "1-n", "3", "GeneralImageModule"); if (result.good()) result = RealWorldValueMappingSequence.write(dataset, "1-n" ,"3", "GeneralImageModule"); + addElementToDataset(result, dataset, new DcmCodeString(ImageLaterality), "1", "3", "GeneralImageModule"); + if (result.good()) result = AnatomicRegionSequence.write(dataset, "1-n" ,"3", "GeneralImageModule"); + if (result.good()) result = PrimaryAnatomicStructureSequence.write(dataset, "1-n" ,"3", "GeneralImageModule"); // --- GeneralReferenceModule (U) --- if (isGeneralReferenceModulePresent(OFFalse /*complete*/)) @@ -1916,6 +2049,8 @@ OFCondition DRTImageIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmPixelData(PixelData), "1", "1C", "ImagePixelModule"); addElementToDataset(result, dataset, new DcmUniversalResourceIdentifierOrLocator(PixelDataProviderURL), "1", "1C", "ImagePixelModule"); addElementToDataset(result, dataset, new DcmUnsignedShort(PixelPaddingRangeLimit), "1", "1C", "ImagePixelModule"); + addElementToDataset(result, dataset, new DcmOther64bitVeryLong(ExtendedOffsetTable), "1", "3", "ImagePixelModule"); + addElementToDataset(result, dataset, new DcmOther64bitVeryLong(ExtendedOffsetTableLengths), "1", "1C", "ImagePixelModule"); // --- ContrastBolusModule (C) --- if (isContrastBolusModulePresent(OFFalse /*complete*/)) @@ -1957,6 +2092,7 @@ OFCondition DRTImageIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmIntegerString(NumberOfFrames), "1", "1", "MultiFrameModule"); addElementToDataset(result, dataset, new DcmAttributeTag(FrameIncrementPointer), "1-n", "1", "MultiFrameModule"); addElementToDataset(result, dataset, new DcmCodeString(StereoPairsPresent), "1", "3", "MultiFrameModule"); + addElementToDataset(result, dataset, new DcmUnsigned64bitVeryLong(EncapsulatedPixelDataValueTotalLength), "1", "3", "MultiFrameModule"); } // --- DeviceModule (U) --- @@ -1991,6 +2127,8 @@ OFCondition DRTImageIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmDecimalString(RadiationMachineSAD), "1", "2", "RTImageModule"); addElementToDataset(result, dataset, new DcmDecimalString(RadiationMachineSSD), "1", "3", "RTImageModule"); addElementToDataset(result, dataset, new DcmDecimalString(RTImageSID), "1", "2", "RTImageModule"); + addElementToDataset(result, dataset, new DcmCodeString(EnhancedRTBeamLimitingDeviceDefinitionFlag), "1", "3", "RTImageModule"); + if (result.good()) result = EnhancedRTBeamLimitingDeviceSequence.write(dataset, "1-n" ,"1C", "RTImageModule"); addElementToDataset(result, dataset, new DcmDecimalString(SourceToReferenceObjectDistance), "1", "3", "RTImageModule"); if (result.good()) result = ReferencedRTPlanSequence.write(dataset, "1-n" ,"3", "RTImageModule"); addElementToDataset(result, dataset, new DcmIntegerString(ReferencedBeamNumber), "1", "3", "RTImageModule"); @@ -2075,6 +2213,10 @@ OFCondition DRTImageIOD::write(DcmItem &dataset) if (result.good()) result = ConversionSourceAttributesSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule"); addElementToDataset(result, dataset, new DcmCodeString(ContentQualification), "1", "3", "SOPCommonModule"); if (result.good()) result = PrivateDataElementCharacteristicsSequence.write(dataset, "1-n" ,"3", "SOPCommonModule"); + addElementToDataset(result, dataset, new DcmCodeString(InstanceOriginStatus), "1", "3", "SOPCommonModule"); + addElementToDataset(result, dataset, new DcmLongText(BarcodeValue), "1", "3", "SOPCommonModule"); + if (result.good()) result = ReferencedDefinedProtocolSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule"); + if (result.good()) result = ReferencedPerformedProtocolSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule"); // --- CommonInstanceReferenceModule (U) --- if (isCommonInstanceReferenceModulePresent(OFFalse /*complete*/)) @@ -2138,6 +2280,8 @@ OFBool DRTImageIOD::isPatientStudyModulePresent(const OFBool /*complete*/) !AdditionalPatientHistory.isEmpty() || !AdmissionID.isEmpty() || !IssuerOfAdmissionIDSequence.isEmpty() || + !ReasonForVisit.isEmpty() || + !ReasonForVisitCodeSequence.isEmpty() || !ServiceEpisodeID.isEmpty() || !IssuerOfServiceEpisodeIDSequence.isEmpty() || !ServiceEpisodeDescription.isEmpty() || @@ -2150,6 +2294,7 @@ OFBool DRTImageIOD::isClinicalTrialStudyModulePresent(const OFBool /*complete*/) /* check whether at least one attribute is present */ return !ClinicalTrialTimePointID.isEmpty() || !ClinicalTrialTimePointDescription.isEmpty() || + !ClinicalTrialTimePointTypeCodeSequence.isEmpty() || !LongitudinalTemporalOffsetFromEvent.isEmpty() || !LongitudinalTemporalEventType.isEmpty() || !ConsentForClinicalTrialUseSequence.isEmpty(); @@ -2238,7 +2383,8 @@ OFBool DRTImageIOD::isMultiFrameModulePresent(const OFBool complete) /* check whether at least one attribute is present */ return !NumberOfFrames.isEmpty() || !FrameIncrementPointer.isEmpty() || - !StereoPairsPresent.isEmpty(); + !StereoPairsPresent.isEmpty() || + !EncapsulatedPixelDataValueTotalLength.isEmpty(); } } @@ -2320,6 +2466,12 @@ OFCondition DRTImageIOD::getAcquisitionDateTime(OFString &value, const signed lo } +OFCondition DRTImageIOD::getAcquisitionDuration(Float64 &value, const unsigned long pos) const +{ + return OFconst_cast(DcmFloatingPointDouble &, AcquisitionDuration).getFloat64(value, pos); +} + + OFCondition DRTImageIOD::getAcquisitionNumber(OFString &value, const signed long pos) const { return getStringValueFromElement(AcquisitionNumber, value, pos); @@ -2338,6 +2490,12 @@ OFCondition DRTImageIOD::getAcquisitionTime(OFString &value, const signed long p } +OFCondition DRTImageIOD::getAcquisitionUID(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(AcquisitionUID, value, pos); +} + + OFCondition DRTImageIOD::getActualFrameDuration(OFString &value, const signed long pos) const { return getStringValueFromElement(ActualFrameDuration, value, pos); @@ -2386,6 +2544,12 @@ OFCondition DRTImageIOD::getAuthorizationEquipmentCertificationNumber(OFString & } +OFCondition DRTImageIOD::getBarcodeValue(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(BarcodeValue, value, pos); +} + + OFCondition DRTImageIOD::getBeamLimitingDeviceAngle(OFString &value, const signed long pos) const { return getStringValueFromElement(BeamLimitingDeviceAngle, value, pos); @@ -2707,6 +2871,12 @@ OFCondition DRTImageIOD::getDeviceSerialNumber(OFString &value, const signed lon } +OFCondition DRTImageIOD::getDeviceUID(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(DeviceUID, value, pos); +} + + OFCondition DRTImageIOD::getEffectiveDuration(OFString &value, const signed long pos) const { return getStringValueFromElement(EffectiveDuration, value, pos); @@ -2719,6 +2889,12 @@ OFCondition DRTImageIOD::getEffectiveDuration(Float64 &value, const unsigned lon } +OFCondition DRTImageIOD::getEncapsulatedPixelDataValueTotalLength(Uint64 &value, const unsigned long pos) const +{ + return OFconst_cast(DcmUnsigned64bitVeryLong &, EncapsulatedPixelDataValueTotalLength).getUint64(value, pos); +} + + OFCondition DRTImageIOD::getEndCumulativeMetersetWeight(OFString &value, const signed long pos) const { return getStringValueFromElement(EndCumulativeMetersetWeight, value, pos); @@ -2731,6 +2907,12 @@ OFCondition DRTImageIOD::getEndCumulativeMetersetWeight(Float64 &value, const un } +OFCondition DRTImageIOD::getEnhancedRTBeamLimitingDeviceDefinitionFlag(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(EnhancedRTBeamLimitingDeviceDefinitionFlag, value, pos); +} + + OFCondition DRTImageIOD::getEthnicGroup(OFString &value, const signed long pos) const { return getStringValueFromElement(EthnicGroup, value, pos); @@ -2755,6 +2937,36 @@ OFCondition DRTImageIOD::getExposureTimeInms(Float64 &value, const unsigned long } +OFCondition DRTImageIOD::getExtendedOffsetTable(Uint64 *&value, unsigned long *count) const +{ + OFCondition result = OFconst_cast(DcmOther64bitVeryLong &, ExtendedOffsetTable).getUint64Array(value); + /* set optional count parameter */ + if (count != NULL) + { + if (result.good()) + *count = OFconst_cast(DcmOther64bitVeryLong &, ExtendedOffsetTable).getLength() / sizeof(Uint64); + else + *count = 0; + } + return result; +} + + +OFCondition DRTImageIOD::getExtendedOffsetTableLengths(Uint64 *&value, unsigned long *count) const +{ + OFCondition result = OFconst_cast(DcmOther64bitVeryLong &, ExtendedOffsetTableLengths).getUint64Array(value); + /* set optional count parameter */ + if (count != NULL) + { + if (result.good()) + *count = OFconst_cast(DcmOther64bitVeryLong &, ExtendedOffsetTableLengths).getLength() / sizeof(Uint64); + else + *count = 0; + } + return result; +} + + OFCondition DRTImageIOD::getFractionNumber(OFString &value, const signed long pos) const { return getStringValueFromElement(FractionNumber, value, pos); @@ -2893,6 +3105,12 @@ OFCondition DRTImageIOD::getImageComments(OFString &value, const signed long pos } +OFCondition DRTImageIOD::getImageLaterality(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(ImageLaterality, value, pos); +} + + OFCondition DRTImageIOD::getImagePlanePixelSpacing(OFString &value, const signed long pos) const { return getStringValueFromElement(ImagePlanePixelSpacing, value, pos); @@ -2977,6 +3195,12 @@ OFCondition DRTImageIOD::getInstanceNumber(Sint32 &value, const unsigned long po } +OFCondition DRTImageIOD::getInstanceOriginStatus(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(InstanceOriginStatus, value, pos); +} + + OFCondition DRTImageIOD::getInstitutionAddress(OFString &value, const signed long pos) const { return getStringValueFromElement(InstitutionAddress, value, pos); @@ -3091,6 +3315,12 @@ OFCondition DRTImageIOD::getManufacturer(OFString &value, const signed long pos) } +OFCondition DRTImageIOD::getManufacturerDeviceClassUID(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(ManufacturerDeviceClassUID, value, pos); +} + + OFCondition DRTImageIOD::getManufacturerModelName(OFString &value, const signed long pos) const { return getStringValueFromElement(ManufacturerModelName, value, pos); @@ -3589,6 +3819,12 @@ OFCondition DRTImageIOD::getRadiationMachineSSD(Float64 &value, const unsigned l } +OFCondition DRTImageIOD::getReasonForVisit(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(ReasonForVisit, value, pos); +} + + OFCondition DRTImageIOD::getRecognizableVisualFeatures(OFString &value, const signed long pos) const { return getStringValueFromElement(RecognizableVisualFeatures, value, pos); @@ -3670,6 +3906,12 @@ OFCondition DRTImageIOD::getReportedValuesOrigin(OFString &value, const signed l } +OFCondition DRTImageIOD::getRequestingService(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(RequestingService, value, pos); +} + + OFCondition DRTImageIOD::getRescaleIntercept(OFString &value, const signed long pos) const { return getStringValueFromElement(RescaleIntercept, value, pos); @@ -4054,6 +4296,18 @@ OFCondition DRTImageIOD::getTimezoneOffsetFromUTC(OFString &value, const signed } +OFCondition DRTImageIOD::getTreatmentSessionUID(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(TreatmentSessionUID, value, pos); +} + + +OFCondition DRTImageIOD::getTypeOfPatientID(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(TypeOfPatientID, value, pos); +} + + OFCondition DRTImageIOD::getVOILUTFunction(OFString &value, const signed long pos) const { return getStringValueFromElement(VOILUTFunction, value, pos); @@ -4159,6 +4413,12 @@ OFCondition DRTImageIOD::setAcquisitionDateTime(const OFString &value, const OFB } +OFCondition DRTImageIOD::setAcquisitionDuration(const Float64 value, const unsigned long pos) +{ + return AcquisitionDuration.putFloat64(value, pos); +} + + OFCondition DRTImageIOD::setAcquisitionNumber(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; @@ -4177,6 +4437,15 @@ OFCondition DRTImageIOD::setAcquisitionTime(const OFString &value, const OFBool } +OFCondition DRTImageIOD::setAcquisitionUID(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = AcquisitionUID.putOFStringArray(value); + return result; +} + + OFCondition DRTImageIOD::setActualFrameDuration(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; @@ -4240,6 +4509,15 @@ OFCondition DRTImageIOD::setAuthorizationEquipmentCertificationNumber(const OFSt } +OFCondition DRTImageIOD::setBarcodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmLongText::checkStringValue(value) : EC_Normal; + if (result.good()) + result = BarcodeValue.putOFStringArray(value); + return result; +} + + OFCondition DRTImageIOD::setBeamLimitingDeviceAngle(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; @@ -4612,6 +4890,15 @@ OFCondition DRTImageIOD::setDeviceSerialNumber(const OFString &value, const OFBo } +OFCondition DRTImageIOD::setDeviceUID(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = DeviceUID.putOFStringArray(value); + return result; +} + + OFCondition DRTImageIOD::setEffectiveDuration(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; @@ -4621,6 +4908,12 @@ OFCondition DRTImageIOD::setEffectiveDuration(const OFString &value, const OFBoo } +OFCondition DRTImageIOD::setEncapsulatedPixelDataValueTotalLength(const Uint64 value, const unsigned long pos) +{ + return EncapsulatedPixelDataValueTotalLength.putUint64(value, pos); +} + + OFCondition DRTImageIOD::setEndCumulativeMetersetWeight(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; @@ -4630,6 +4923,15 @@ OFCondition DRTImageIOD::setEndCumulativeMetersetWeight(const OFString &value, c } +OFCondition DRTImageIOD::setEnhancedRTBeamLimitingDeviceDefinitionFlag(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = EnhancedRTBeamLimitingDeviceDefinitionFlag.putOFStringArray(value); + return result; +} + + OFCondition DRTImageIOD::setEthnicGroup(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; @@ -4654,6 +4956,18 @@ OFCondition DRTImageIOD::setExposureTimeInms(const Float64 value, const unsigned } +OFCondition DRTImageIOD::setExtendedOffsetTable(const Uint64 *value, const unsigned long count) +{ + return ExtendedOffsetTable.putUint64Array(value, count); +} + + +OFCondition DRTImageIOD::setExtendedOffsetTableLengths(const Uint64 *value, const unsigned long count) +{ + return ExtendedOffsetTableLengths.putUint64Array(value, count); +} + + OFCondition DRTImageIOD::setFractionNumber(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; @@ -4765,6 +5079,15 @@ OFCondition DRTImageIOD::setImageComments(const OFString &value, const OFBool ch } +OFCondition DRTImageIOD::setImageLaterality(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ImageLaterality.putOFStringArray(value); + return result; +} + + OFCondition DRTImageIOD::setImagePlanePixelSpacing(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "2") : EC_Normal; @@ -4846,6 +5169,15 @@ OFCondition DRTImageIOD::setInstanceNumber(const OFString &value, const OFBool c } +OFCondition DRTImageIOD::setInstanceOriginStatus(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = InstanceOriginStatus.putOFStringArray(value); + return result; +} + + OFCondition DRTImageIOD::setInstitutionAddress(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal; @@ -4975,6 +5307,15 @@ OFCondition DRTImageIOD::setManufacturer(const OFString &value, const OFBool che } +OFCondition DRTImageIOD::setManufacturerDeviceClassUID(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1-n") : EC_Normal; + if (result.good()) + result = ManufacturerDeviceClassUID.putOFStringArray(value); + return result; +} + + OFCondition DRTImageIOD::setManufacturerModelName(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; @@ -5557,6 +5898,15 @@ OFCondition DRTImageIOD::setRadiationMachineSSD(const OFString &value, const OFB } +OFCondition DRTImageIOD::setReasonForVisit(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmUnlimitedText::checkStringValue(value) : EC_Normal; + if (result.good()) + result = ReasonForVisit.putOFStringArray(value); + return result; +} + + OFCondition DRTImageIOD::setRecognizableVisualFeatures(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; @@ -5632,6 +5982,15 @@ OFCondition DRTImageIOD::setReportedValuesOrigin(const OFString &value, const OF } +OFCondition DRTImageIOD::setRequestingService(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = RequestingService.putOFStringArray(value); + return result; +} + + OFCondition DRTImageIOD::setRescaleIntercept(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; @@ -6076,6 +6435,24 @@ OFCondition DRTImageIOD::setTimezoneOffsetFromUTC(const OFString &value, const O } +OFCondition DRTImageIOD::setTreatmentSessionUID(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = TreatmentSessionUID.putOFStringArray(value); + return result; +} + + +OFCondition DRTImageIOD::setTypeOfPatientID(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = TypeOfPatientID.putOFStringArray(value); + return result; +} + + OFCondition DRTImageIOD::setVOILUTFunction(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; diff --git a/dcmrt/libsrc/drtionpl.cc b/dcmrt/libsrc/drtionpl.cc index 14233d59..4503ddad 100644 --- a/dcmrt/libsrc/drtionpl.cc +++ b/dcmrt/libsrc/drtionpl.cc @@ -1,14 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTIonPlanIOD * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * Last modified on 2022-01-26 by Riesmeier + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -23,6 +22,7 @@ DRTIonPlanIOD::DRTIonPlanIOD() PatientID(DCM_PatientID), IssuerOfPatientID(DCM_IssuerOfPatientID), IssuerOfPatientIDQualifiersSequence(), + TypeOfPatientID(DCM_TypeOfPatientID), PatientBirthDate(DCM_PatientBirthDate), PatientBirthDateInAlternativeCalendar(DCM_PatientBirthDateInAlternativeCalendar), PatientDeathDateInAlternativeCalendar(DCM_PatientDeathDateInAlternativeCalendar), @@ -79,6 +79,7 @@ DRTIonPlanIOD::DRTIonPlanIOD() PhysiciansOfRecordIdentificationSequence(), NameOfPhysiciansReadingStudy(DCM_NameOfPhysiciansReadingStudy), PhysiciansReadingStudyIdentificationSequence(), + RequestingService(DCM_RequestingService), RequestingServiceCodeSequence(), ReferencedStudySequence(), ProcedureCodeSequence(), @@ -102,12 +103,15 @@ DRTIonPlanIOD::DRTIonPlanIOD() AdditionalPatientHistory(DCM_AdditionalPatientHistory), AdmissionID(DCM_AdmissionID), IssuerOfAdmissionIDSequence(), + ReasonForVisit(DCM_ReasonForVisit), + ReasonForVisitCodeSequence(), ServiceEpisodeID(DCM_ServiceEpisodeID), IssuerOfServiceEpisodeIDSequence(), ServiceEpisodeDescription(DCM_ServiceEpisodeDescription), PatientSexNeutered(DCM_PatientSexNeutered), ClinicalTrialTimePointID(DCM_ClinicalTrialTimePointID), ClinicalTrialTimePointDescription(DCM_ClinicalTrialTimePointDescription), + ClinicalTrialTimePointTypeCodeSequence(), LongitudinalTemporalOffsetFromEvent(DCM_LongitudinalTemporalOffsetFromEvent), LongitudinalTemporalEventType(DCM_LongitudinalTemporalEventType), ConsentForClinicalTrialUseSequence(), @@ -130,6 +134,7 @@ DRTIonPlanIOD::DRTIonPlanIOD() PerformedProcedureStepDescription(DCM_PerformedProcedureStepDescription), PerformedProtocolCodeSequence(), CommentsOnThePerformedProcedureStep(DCM_CommentsOnThePerformedProcedureStep), + TreatmentSessionUID(DCM_TreatmentSessionUID), ClinicalTrialCoordinatingCenterName(DCM_ClinicalTrialCoordinatingCenterName), ClinicalTrialSeriesID(DCM_ClinicalTrialSeriesID), ClinicalTrialSeriesDescription(DCM_ClinicalTrialSeriesDescription), @@ -140,11 +145,14 @@ DRTIonPlanIOD::DRTIonPlanIOD() InstitutionAddress(DCM_InstitutionAddress), StationName(DCM_StationName), InstitutionalDepartmentName(DCM_InstitutionalDepartmentName), + InstitutionalDepartmentTypeCodeSequence(), ManufacturerModelName(DCM_ManufacturerModelName), + ManufacturerDeviceClassUID(DCM_ManufacturerDeviceClassUID), DeviceSerialNumber(DCM_DeviceSerialNumber), SoftwareVersions(DCM_SoftwareVersions), GantryID(DCM_GantryID), UDISequence(), + DeviceUID(DCM_DeviceUID), SpatialResolution(DCM_SpatialResolution), DateOfLastCalibration(DCM_DateOfLastCalibration), TimeOfLastCalibration(DCM_TimeOfLastCalibration), @@ -157,7 +165,8 @@ DRTIonPlanIOD::DRTIonPlanIOD() RTPlanTime(DCM_RTPlanTime), TreatmentProtocols(DCM_TreatmentProtocols), PlanIntent(DCM_PlanIntent), - TreatmentSites(DCM_RETIRED_TreatmentSites), + TreatmentSite(DCM_TreatmentSite), + TreatmentSiteCodeSequence(), RTPlanGeometry(DCM_RTPlanGeometry), ReferencedStructureSetSequence(), ReferencedDoseSequence(), @@ -207,6 +216,10 @@ DRTIonPlanIOD::DRTIonPlanIOD() ConversionSourceAttributesSequence(), ContentQualification(DCM_ContentQualification), PrivateDataElementCharacteristicsSequence(), + InstanceOriginStatus(DCM_InstanceOriginStatus), + BarcodeValue(DCM_BarcodeValue), + ReferencedDefinedProtocolSequence(), + ReferencedPerformedProtocolSequence(), ReferencedSeriesSequence(), StudiesContainingOtherReferencedInstancesSequence() { @@ -220,6 +233,7 @@ DRTIonPlanIOD::DRTIonPlanIOD(const DRTIonPlanIOD ©) PatientID(copy.PatientID), IssuerOfPatientID(copy.IssuerOfPatientID), IssuerOfPatientIDQualifiersSequence(copy.IssuerOfPatientIDQualifiersSequence), + TypeOfPatientID(copy.TypeOfPatientID), PatientBirthDate(copy.PatientBirthDate), PatientBirthDateInAlternativeCalendar(copy.PatientBirthDateInAlternativeCalendar), PatientDeathDateInAlternativeCalendar(copy.PatientDeathDateInAlternativeCalendar), @@ -276,6 +290,7 @@ DRTIonPlanIOD::DRTIonPlanIOD(const DRTIonPlanIOD ©) PhysiciansOfRecordIdentificationSequence(copy.PhysiciansOfRecordIdentificationSequence), NameOfPhysiciansReadingStudy(copy.NameOfPhysiciansReadingStudy), PhysiciansReadingStudyIdentificationSequence(copy.PhysiciansReadingStudyIdentificationSequence), + RequestingService(copy.RequestingService), RequestingServiceCodeSequence(copy.RequestingServiceCodeSequence), ReferencedStudySequence(copy.ReferencedStudySequence), ProcedureCodeSequence(copy.ProcedureCodeSequence), @@ -299,12 +314,15 @@ DRTIonPlanIOD::DRTIonPlanIOD(const DRTIonPlanIOD ©) AdditionalPatientHistory(copy.AdditionalPatientHistory), AdmissionID(copy.AdmissionID), IssuerOfAdmissionIDSequence(copy.IssuerOfAdmissionIDSequence), + ReasonForVisit(copy.ReasonForVisit), + ReasonForVisitCodeSequence(copy.ReasonForVisitCodeSequence), ServiceEpisodeID(copy.ServiceEpisodeID), IssuerOfServiceEpisodeIDSequence(copy.IssuerOfServiceEpisodeIDSequence), ServiceEpisodeDescription(copy.ServiceEpisodeDescription), PatientSexNeutered(copy.PatientSexNeutered), ClinicalTrialTimePointID(copy.ClinicalTrialTimePointID), ClinicalTrialTimePointDescription(copy.ClinicalTrialTimePointDescription), + ClinicalTrialTimePointTypeCodeSequence(copy.ClinicalTrialTimePointTypeCodeSequence), LongitudinalTemporalOffsetFromEvent(copy.LongitudinalTemporalOffsetFromEvent), LongitudinalTemporalEventType(copy.LongitudinalTemporalEventType), ConsentForClinicalTrialUseSequence(copy.ConsentForClinicalTrialUseSequence), @@ -327,6 +345,7 @@ DRTIonPlanIOD::DRTIonPlanIOD(const DRTIonPlanIOD ©) PerformedProcedureStepDescription(copy.PerformedProcedureStepDescription), PerformedProtocolCodeSequence(copy.PerformedProtocolCodeSequence), CommentsOnThePerformedProcedureStep(copy.CommentsOnThePerformedProcedureStep), + TreatmentSessionUID(copy.TreatmentSessionUID), ClinicalTrialCoordinatingCenterName(copy.ClinicalTrialCoordinatingCenterName), ClinicalTrialSeriesID(copy.ClinicalTrialSeriesID), ClinicalTrialSeriesDescription(copy.ClinicalTrialSeriesDescription), @@ -337,11 +356,14 @@ DRTIonPlanIOD::DRTIonPlanIOD(const DRTIonPlanIOD ©) InstitutionAddress(copy.InstitutionAddress), StationName(copy.StationName), InstitutionalDepartmentName(copy.InstitutionalDepartmentName), + InstitutionalDepartmentTypeCodeSequence(copy.InstitutionalDepartmentTypeCodeSequence), ManufacturerModelName(copy.ManufacturerModelName), + ManufacturerDeviceClassUID(copy.ManufacturerDeviceClassUID), DeviceSerialNumber(copy.DeviceSerialNumber), SoftwareVersions(copy.SoftwareVersions), GantryID(copy.GantryID), UDISequence(copy.UDISequence), + DeviceUID(copy.DeviceUID), SpatialResolution(copy.SpatialResolution), DateOfLastCalibration(copy.DateOfLastCalibration), TimeOfLastCalibration(copy.TimeOfLastCalibration), @@ -354,7 +376,8 @@ DRTIonPlanIOD::DRTIonPlanIOD(const DRTIonPlanIOD ©) RTPlanTime(copy.RTPlanTime), TreatmentProtocols(copy.TreatmentProtocols), PlanIntent(copy.PlanIntent), - TreatmentSites(copy.TreatmentSites), + TreatmentSite(copy.TreatmentSite), + TreatmentSiteCodeSequence(copy.TreatmentSiteCodeSequence), RTPlanGeometry(copy.RTPlanGeometry), ReferencedStructureSetSequence(copy.ReferencedStructureSetSequence), ReferencedDoseSequence(copy.ReferencedDoseSequence), @@ -404,6 +427,10 @@ DRTIonPlanIOD::DRTIonPlanIOD(const DRTIonPlanIOD ©) ConversionSourceAttributesSequence(copy.ConversionSourceAttributesSequence), ContentQualification(copy.ContentQualification), PrivateDataElementCharacteristicsSequence(copy.PrivateDataElementCharacteristicsSequence), + InstanceOriginStatus(copy.InstanceOriginStatus), + BarcodeValue(copy.BarcodeValue), + ReferencedDefinedProtocolSequence(copy.ReferencedDefinedProtocolSequence), + ReferencedPerformedProtocolSequence(copy.ReferencedPerformedProtocolSequence), ReferencedSeriesSequence(copy.ReferencedSeriesSequence), StudiesContainingOtherReferencedInstancesSequence(copy.StudiesContainingOtherReferencedInstancesSequence) { @@ -423,6 +450,7 @@ DRTIonPlanIOD &DRTIonPlanIOD::operator=(const DRTIonPlanIOD ©) PatientID = copy.PatientID; IssuerOfPatientID = copy.IssuerOfPatientID; IssuerOfPatientIDQualifiersSequence = copy.IssuerOfPatientIDQualifiersSequence; + TypeOfPatientID = copy.TypeOfPatientID; PatientBirthDate = copy.PatientBirthDate; PatientBirthDateInAlternativeCalendar = copy.PatientBirthDateInAlternativeCalendar; PatientDeathDateInAlternativeCalendar = copy.PatientDeathDateInAlternativeCalendar; @@ -479,6 +507,7 @@ DRTIonPlanIOD &DRTIonPlanIOD::operator=(const DRTIonPlanIOD ©) PhysiciansOfRecordIdentificationSequence = copy.PhysiciansOfRecordIdentificationSequence; NameOfPhysiciansReadingStudy = copy.NameOfPhysiciansReadingStudy; PhysiciansReadingStudyIdentificationSequence = copy.PhysiciansReadingStudyIdentificationSequence; + RequestingService = copy.RequestingService; RequestingServiceCodeSequence = copy.RequestingServiceCodeSequence; ReferencedStudySequence = copy.ReferencedStudySequence; ProcedureCodeSequence = copy.ProcedureCodeSequence; @@ -502,12 +531,15 @@ DRTIonPlanIOD &DRTIonPlanIOD::operator=(const DRTIonPlanIOD ©) AdditionalPatientHistory = copy.AdditionalPatientHistory; AdmissionID = copy.AdmissionID; IssuerOfAdmissionIDSequence = copy.IssuerOfAdmissionIDSequence; + ReasonForVisit = copy.ReasonForVisit; + ReasonForVisitCodeSequence = copy.ReasonForVisitCodeSequence; ServiceEpisodeID = copy.ServiceEpisodeID; IssuerOfServiceEpisodeIDSequence = copy.IssuerOfServiceEpisodeIDSequence; ServiceEpisodeDescription = copy.ServiceEpisodeDescription; PatientSexNeutered = copy.PatientSexNeutered; ClinicalTrialTimePointID = copy.ClinicalTrialTimePointID; ClinicalTrialTimePointDescription = copy.ClinicalTrialTimePointDescription; + ClinicalTrialTimePointTypeCodeSequence = copy.ClinicalTrialTimePointTypeCodeSequence; LongitudinalTemporalOffsetFromEvent = copy.LongitudinalTemporalOffsetFromEvent; LongitudinalTemporalEventType = copy.LongitudinalTemporalEventType; ConsentForClinicalTrialUseSequence = copy.ConsentForClinicalTrialUseSequence; @@ -530,6 +562,7 @@ DRTIonPlanIOD &DRTIonPlanIOD::operator=(const DRTIonPlanIOD ©) PerformedProcedureStepDescription = copy.PerformedProcedureStepDescription; PerformedProtocolCodeSequence = copy.PerformedProtocolCodeSequence; CommentsOnThePerformedProcedureStep = copy.CommentsOnThePerformedProcedureStep; + TreatmentSessionUID = copy.TreatmentSessionUID; ClinicalTrialCoordinatingCenterName = copy.ClinicalTrialCoordinatingCenterName; ClinicalTrialSeriesID = copy.ClinicalTrialSeriesID; ClinicalTrialSeriesDescription = copy.ClinicalTrialSeriesDescription; @@ -540,11 +573,14 @@ DRTIonPlanIOD &DRTIonPlanIOD::operator=(const DRTIonPlanIOD ©) InstitutionAddress = copy.InstitutionAddress; StationName = copy.StationName; InstitutionalDepartmentName = copy.InstitutionalDepartmentName; + InstitutionalDepartmentTypeCodeSequence = copy.InstitutionalDepartmentTypeCodeSequence; ManufacturerModelName = copy.ManufacturerModelName; + ManufacturerDeviceClassUID = copy.ManufacturerDeviceClassUID; DeviceSerialNumber = copy.DeviceSerialNumber; SoftwareVersions = copy.SoftwareVersions; GantryID = copy.GantryID; UDISequence = copy.UDISequence; + DeviceUID = copy.DeviceUID; SpatialResolution = copy.SpatialResolution; DateOfLastCalibration = copy.DateOfLastCalibration; TimeOfLastCalibration = copy.TimeOfLastCalibration; @@ -557,7 +593,8 @@ DRTIonPlanIOD &DRTIonPlanIOD::operator=(const DRTIonPlanIOD ©) RTPlanTime = copy.RTPlanTime; TreatmentProtocols = copy.TreatmentProtocols; PlanIntent = copy.PlanIntent; - TreatmentSites = copy.TreatmentSites; + TreatmentSite = copy.TreatmentSite; + TreatmentSiteCodeSequence = copy.TreatmentSiteCodeSequence; RTPlanGeometry = copy.RTPlanGeometry; ReferencedStructureSetSequence = copy.ReferencedStructureSetSequence; ReferencedDoseSequence = copy.ReferencedDoseSequence; @@ -607,6 +644,10 @@ DRTIonPlanIOD &DRTIonPlanIOD::operator=(const DRTIonPlanIOD ©) ConversionSourceAttributesSequence = copy.ConversionSourceAttributesSequence; ContentQualification = copy.ContentQualification; PrivateDataElementCharacteristicsSequence = copy.PrivateDataElementCharacteristicsSequence; + InstanceOriginStatus = copy.InstanceOriginStatus; + BarcodeValue = copy.BarcodeValue; + ReferencedDefinedProtocolSequence = copy.ReferencedDefinedProtocolSequence; + ReferencedPerformedProtocolSequence = copy.ReferencedPerformedProtocolSequence; ReferencedSeriesSequence = copy.ReferencedSeriesSequence; StudiesContainingOtherReferencedInstancesSequence = copy.StudiesContainingOtherReferencedInstancesSequence; } @@ -621,6 +662,7 @@ void DRTIonPlanIOD::clear() PatientID.clear(); IssuerOfPatientID.clear(); IssuerOfPatientIDQualifiersSequence.clear(); + TypeOfPatientID.clear(); PatientBirthDate.clear(); PatientBirthDateInAlternativeCalendar.clear(); PatientDeathDateInAlternativeCalendar.clear(); @@ -677,6 +719,7 @@ void DRTIonPlanIOD::clear() PhysiciansOfRecordIdentificationSequence.clear(); NameOfPhysiciansReadingStudy.clear(); PhysiciansReadingStudyIdentificationSequence.clear(); + RequestingService.clear(); RequestingServiceCodeSequence.clear(); ReferencedStudySequence.clear(); ProcedureCodeSequence.clear(); @@ -700,12 +743,15 @@ void DRTIonPlanIOD::clear() AdditionalPatientHistory.clear(); AdmissionID.clear(); IssuerOfAdmissionIDSequence.clear(); + ReasonForVisit.clear(); + ReasonForVisitCodeSequence.clear(); ServiceEpisodeID.clear(); IssuerOfServiceEpisodeIDSequence.clear(); ServiceEpisodeDescription.clear(); PatientSexNeutered.clear(); ClinicalTrialTimePointID.clear(); ClinicalTrialTimePointDescription.clear(); + ClinicalTrialTimePointTypeCodeSequence.clear(); LongitudinalTemporalOffsetFromEvent.clear(); LongitudinalTemporalEventType.clear(); ConsentForClinicalTrialUseSequence.clear(); @@ -728,6 +774,7 @@ void DRTIonPlanIOD::clear() PerformedProcedureStepDescription.clear(); PerformedProtocolCodeSequence.clear(); CommentsOnThePerformedProcedureStep.clear(); + TreatmentSessionUID.clear(); ClinicalTrialCoordinatingCenterName.clear(); ClinicalTrialSeriesID.clear(); ClinicalTrialSeriesDescription.clear(); @@ -738,11 +785,14 @@ void DRTIonPlanIOD::clear() InstitutionAddress.clear(); StationName.clear(); InstitutionalDepartmentName.clear(); + InstitutionalDepartmentTypeCodeSequence.clear(); ManufacturerModelName.clear(); + ManufacturerDeviceClassUID.clear(); DeviceSerialNumber.clear(); SoftwareVersions.clear(); GantryID.clear(); UDISequence.clear(); + DeviceUID.clear(); SpatialResolution.clear(); DateOfLastCalibration.clear(); TimeOfLastCalibration.clear(); @@ -755,7 +805,8 @@ void DRTIonPlanIOD::clear() RTPlanTime.clear(); TreatmentProtocols.clear(); PlanIntent.clear(); - TreatmentSites.clear(); + TreatmentSite.clear(); + TreatmentSiteCodeSequence.clear(); RTPlanGeometry.clear(); ReferencedStructureSetSequence.clear(); ReferencedDoseSequence.clear(); @@ -805,6 +856,10 @@ void DRTIonPlanIOD::clear() ConversionSourceAttributesSequence.clear(); ContentQualification.clear(); PrivateDataElementCharacteristicsSequence.clear(); + InstanceOriginStatus.clear(); + BarcodeValue.clear(); + ReferencedDefinedProtocolSequence.clear(); + ReferencedPerformedProtocolSequence.clear(); ReferencedSeriesSequence.clear(); StudiesContainingOtherReferencedInstancesSequence.clear(); } @@ -864,11 +919,14 @@ OFCondition DRTIonPlanIOD::read(DcmItem &dataset) getAndCheckElementFromDataset(dataset, InstitutionAddress, "1", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, StationName, "1", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, InstitutionalDepartmentName, "1", "3", "GeneralEquipmentModule"); + InstitutionalDepartmentTypeCodeSequence.read(dataset, "1-n", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, ManufacturerModelName, "1", "3", "GeneralEquipmentModule"); + getAndCheckElementFromDataset(dataset, ManufacturerDeviceClassUID, "1-n", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, DeviceSerialNumber, "1", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, SoftwareVersions, "1-n", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, GantryID, "1", "3", "GeneralEquipmentModule"); UDISequence.read(dataset, "1-n", "3", "GeneralEquipmentModule"); + getAndCheckElementFromDataset(dataset, DeviceUID, "1", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, SpatialResolution, "1", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, DateOfLastCalibration, "1-n", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, TimeOfLastCalibration, "1-n", "3", "GeneralEquipmentModule"); @@ -883,7 +941,8 @@ OFCondition DRTIonPlanIOD::read(DcmItem &dataset) getAndCheckElementFromDataset(dataset, RTPlanTime, "1", "2", "RTGeneralPlanModule"); getAndCheckElementFromDataset(dataset, TreatmentProtocols, "1-n", "3", "RTGeneralPlanModule"); getAndCheckElementFromDataset(dataset, PlanIntent, "1", "3", "RTGeneralPlanModule"); - getAndCheckElementFromDataset(dataset, TreatmentSites, "1-n", "3", "RTGeneralPlanModule"); + getAndCheckElementFromDataset(dataset, TreatmentSite, "1", "3", "RTGeneralPlanModule"); + TreatmentSiteCodeSequence.read(dataset, "1-n", "3", "RTGeneralPlanModule"); getAndCheckElementFromDataset(dataset, RTPlanGeometry, "1", "1", "RTGeneralPlanModule"); ReferencedStructureSetSequence.read(dataset, "1-n", "1C", "RTGeneralPlanModule"); ReferencedDoseSequence.read(dataset, "1-n", "3", "RTGeneralPlanModule"); @@ -965,6 +1024,10 @@ OFCondition DRTIonPlanIOD::read(DcmItem &dataset) ConversionSourceAttributesSequence.read(dataset, "1-n", "1C", "SOPCommonModule"); getAndCheckElementFromDataset(dataset, ContentQualification, "1", "3", "SOPCommonModule"); PrivateDataElementCharacteristicsSequence.read(dataset, "1-n", "3", "SOPCommonModule"); + getAndCheckElementFromDataset(dataset, InstanceOriginStatus, "1", "3", "SOPCommonModule"); + getAndCheckElementFromDataset(dataset, BarcodeValue, "1", "3", "SOPCommonModule"); + ReferencedDefinedProtocolSequence.read(dataset, "1-n", "1C", "SOPCommonModule"); + ReferencedPerformedProtocolSequence.read(dataset, "1-n", "1C", "SOPCommonModule"); // --- CommonInstanceReferenceModule (U) --- ReferencedSeriesSequence.read(dataset, "1-n", "1C", "CommonInstanceReferenceModule"); @@ -983,6 +1046,7 @@ OFCondition DRTIonPlanIOD::readPatientData(DcmItem &dataset) getAndCheckElementFromDataset(dataset, PatientID, "1", "2", "PatientModule"); getAndCheckElementFromDataset(dataset, IssuerOfPatientID, "1", "3", "PatientModule"); IssuerOfPatientIDQualifiersSequence.read(dataset, "1-n", "3", "PatientModule"); + getAndCheckElementFromDataset(dataset, TypeOfPatientID, "1", "3", "PatientModule"); getAndCheckElementFromDataset(dataset, PatientBirthDate, "1", "2", "PatientModule"); getAndCheckElementFromDataset(dataset, PatientBirthDateInAlternativeCalendar, "1", "3", "PatientModule"); getAndCheckElementFromDataset(dataset, PatientDeathDateInAlternativeCalendar, "1", "3", "PatientModule"); @@ -1059,6 +1123,7 @@ OFCondition DRTIonPlanIOD::readStudyData(DcmItem &dataset) PhysiciansOfRecordIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule"); getAndCheckElementFromDataset(dataset, NameOfPhysiciansReadingStudy, "1-n", "3", "GeneralStudyModule"); PhysiciansReadingStudyIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule"); + getAndCheckElementFromDataset(dataset, RequestingService, "1", "3", "GeneralStudyModule"); RequestingServiceCodeSequence.read(dataset, "1-n", "3", "GeneralStudyModule"); ReferencedStudySequence.read(dataset, "1-n", "3", "GeneralStudyModule"); ProcedureCodeSequence.read(dataset, "1-n", "3", "GeneralStudyModule"); @@ -1084,6 +1149,8 @@ OFCondition DRTIonPlanIOD::readStudyData(DcmItem &dataset) getAndCheckElementFromDataset(dataset, AdditionalPatientHistory, "1", "3", "PatientStudyModule"); getAndCheckElementFromDataset(dataset, AdmissionID, "1", "3", "PatientStudyModule"); IssuerOfAdmissionIDSequence.read(dataset, "1-n", "3", "PatientStudyModule"); + getAndCheckElementFromDataset(dataset, ReasonForVisit, "1", "3", "PatientStudyModule"); + ReasonForVisitCodeSequence.read(dataset, "1-n", "3", "PatientStudyModule"); getAndCheckElementFromDataset(dataset, ServiceEpisodeID, "1", "3", "PatientStudyModule"); IssuerOfServiceEpisodeIDSequence.read(dataset, "1-n", "3", "PatientStudyModule"); getAndCheckElementFromDataset(dataset, ServiceEpisodeDescription, "1", "3", "PatientStudyModule"); @@ -1094,6 +1161,7 @@ OFCondition DRTIonPlanIOD::readStudyData(DcmItem &dataset) { getAndCheckElementFromDataset(dataset, ClinicalTrialTimePointID, "1", "2", "ClinicalTrialStudyModule"); getAndCheckElementFromDataset(dataset, ClinicalTrialTimePointDescription, "1", "3", "ClinicalTrialStudyModule"); + ClinicalTrialTimePointTypeCodeSequence.read(dataset, "1-n", "3", "ClinicalTrialStudyModule"); getAndCheckElementFromDataset(dataset, LongitudinalTemporalOffsetFromEvent, "1", "3", "ClinicalTrialStudyModule"); getAndCheckElementFromDataset(dataset, LongitudinalTemporalEventType, "1", "1C", "ClinicalTrialStudyModule"); ConsentForClinicalTrialUseSequence.read(dataset, "1-n", "3", "ClinicalTrialStudyModule"); @@ -1129,6 +1197,7 @@ OFCondition DRTIonPlanIOD::readSeriesData(DcmItem &dataset) getAndCheckElementFromDataset(dataset, PerformedProcedureStepDescription, "1", "3", "RTSeriesModule"); PerformedProtocolCodeSequence.read(dataset, "1-n", "3", "RTSeriesModule"); getAndCheckElementFromDataset(dataset, CommentsOnThePerformedProcedureStep, "1", "3", "RTSeriesModule"); + getAndCheckElementFromDataset(dataset, TreatmentSessionUID, "1", "3", "RTSeriesModule"); // --- ClinicalTrialSeriesModule (U) --- if (dataset.tagExists(DCM_ClinicalTrialCoordinatingCenterName)) @@ -1156,6 +1225,7 @@ OFCondition DRTIonPlanIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmLongString(PatientID), "1", "2", "PatientModule"); addElementToDataset(result, dataset, new DcmLongString(IssuerOfPatientID), "1", "3", "PatientModule"); if (result.good()) result = IssuerOfPatientIDQualifiersSequence.write(dataset, "1-n" ,"3", "PatientModule"); + addElementToDataset(result, dataset, new DcmCodeString(TypeOfPatientID), "1", "3", "PatientModule"); addElementToDataset(result, dataset, new DcmDate(PatientBirthDate), "1", "2", "PatientModule"); addElementToDataset(result, dataset, new DcmLongString(PatientBirthDateInAlternativeCalendar), "1", "3", "PatientModule"); addElementToDataset(result, dataset, new DcmLongString(PatientDeathDateInAlternativeCalendar), "1", "3", "PatientModule"); @@ -1219,6 +1289,7 @@ OFCondition DRTIonPlanIOD::write(DcmItem &dataset) if (result.good()) result = PhysiciansOfRecordIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule"); addElementToDataset(result, dataset, new DcmPersonName(NameOfPhysiciansReadingStudy), "1-n", "3", "GeneralStudyModule"); if (result.good()) result = PhysiciansReadingStudyIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule"); + addElementToDataset(result, dataset, new DcmLongString(RequestingService), "1", "3", "GeneralStudyModule"); if (result.good()) result = RequestingServiceCodeSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule"); if (result.good()) result = ReferencedStudySequence.write(dataset, "1-n" ,"3", "GeneralStudyModule"); if (result.good()) result = ProcedureCodeSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule"); @@ -1246,6 +1317,8 @@ OFCondition DRTIonPlanIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmLongText(AdditionalPatientHistory), "1", "3", "PatientStudyModule"); addElementToDataset(result, dataset, new DcmLongString(AdmissionID), "1", "3", "PatientStudyModule"); if (result.good()) result = IssuerOfAdmissionIDSequence.write(dataset, "1-n" ,"3", "PatientStudyModule"); + addElementToDataset(result, dataset, new DcmUnlimitedText(ReasonForVisit), "1", "3", "PatientStudyModule"); + if (result.good()) result = ReasonForVisitCodeSequence.write(dataset, "1-n" ,"3", "PatientStudyModule"); addElementToDataset(result, dataset, new DcmLongString(ServiceEpisodeID), "1", "3", "PatientStudyModule"); if (result.good()) result = IssuerOfServiceEpisodeIDSequence.write(dataset, "1-n" ,"3", "PatientStudyModule"); addElementToDataset(result, dataset, new DcmLongString(ServiceEpisodeDescription), "1", "3", "PatientStudyModule"); @@ -1257,6 +1330,7 @@ OFCondition DRTIonPlanIOD::write(DcmItem &dataset) { addElementToDataset(result, dataset, new DcmLongString(ClinicalTrialTimePointID), "1", "2", "ClinicalTrialStudyModule"); addElementToDataset(result, dataset, new DcmShortText(ClinicalTrialTimePointDescription), "1", "3", "ClinicalTrialStudyModule"); + if (result.good()) result = ClinicalTrialTimePointTypeCodeSequence.write(dataset, "1-n" ,"3", "ClinicalTrialStudyModule"); addElementToDataset(result, dataset, new DcmFloatingPointDouble(LongitudinalTemporalOffsetFromEvent), "1", "3", "ClinicalTrialStudyModule"); addElementToDataset(result, dataset, new DcmCodeString(LongitudinalTemporalEventType), "1", "1C", "ClinicalTrialStudyModule"); if (result.good()) result = ConsentForClinicalTrialUseSequence.write(dataset, "1-n" ,"3", "ClinicalTrialStudyModule"); @@ -1282,6 +1356,7 @@ OFCondition DRTIonPlanIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmLongString(PerformedProcedureStepDescription), "1", "3", "RTSeriesModule"); if (result.good()) result = PerformedProtocolCodeSequence.write(dataset, "1-n" ,"3", "RTSeriesModule"); addElementToDataset(result, dataset, new DcmShortText(CommentsOnThePerformedProcedureStep), "1", "3", "RTSeriesModule"); + addElementToDataset(result, dataset, new DcmUniqueIdentifier(TreatmentSessionUID), "1", "3", "RTSeriesModule"); // --- ClinicalTrialSeriesModule (U) --- if (isClinicalTrialSeriesModulePresent(OFFalse /*complete*/)) @@ -1301,11 +1376,14 @@ OFCondition DRTIonPlanIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmShortText(InstitutionAddress), "1", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmShortString(StationName), "1", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmLongString(InstitutionalDepartmentName), "1", "3", "GeneralEquipmentModule"); + if (result.good()) result = InstitutionalDepartmentTypeCodeSequence.write(dataset, "1-n" ,"3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmLongString(ManufacturerModelName), "1", "3", "GeneralEquipmentModule"); + addElementToDataset(result, dataset, new DcmUniqueIdentifier(ManufacturerDeviceClassUID), "1-n", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmLongString(DeviceSerialNumber), "1", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmLongString(SoftwareVersions), "1-n", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmLongString(GantryID), "1", "3", "GeneralEquipmentModule"); if (result.good()) result = UDISequence.write(dataset, "1-n" ,"3", "GeneralEquipmentModule"); + addElementToDataset(result, dataset, new DcmUniqueIdentifier(DeviceUID), "1", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmDecimalString(SpatialResolution), "1", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmDate(DateOfLastCalibration), "1-n", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmTime(TimeOfLastCalibration), "1-n", "3", "GeneralEquipmentModule"); @@ -1320,7 +1398,8 @@ OFCondition DRTIonPlanIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmTime(RTPlanTime), "1", "2", "RTGeneralPlanModule"); addElementToDataset(result, dataset, new DcmLongString(TreatmentProtocols), "1-n", "3", "RTGeneralPlanModule"); addElementToDataset(result, dataset, new DcmCodeString(PlanIntent), "1", "3", "RTGeneralPlanModule"); - addElementToDataset(result, dataset, new DcmLongString(TreatmentSites), "1-n", "3", "RTGeneralPlanModule"); + addElementToDataset(result, dataset, new DcmLongString(TreatmentSite), "1", "3", "RTGeneralPlanModule"); + if (result.good()) result = TreatmentSiteCodeSequence.write(dataset, "1-n" ,"3", "RTGeneralPlanModule"); addElementToDataset(result, dataset, new DcmCodeString(RTPlanGeometry), "1", "1", "RTGeneralPlanModule"); if (result.good()) result = ReferencedStructureSetSequence.write(dataset, "1-n" ,"1C", "RTGeneralPlanModule"); if (result.good()) result = ReferencedDoseSequence.write(dataset, "1-n" ,"3", "RTGeneralPlanModule"); @@ -1408,6 +1487,10 @@ OFCondition DRTIonPlanIOD::write(DcmItem &dataset) if (result.good()) result = ConversionSourceAttributesSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule"); addElementToDataset(result, dataset, new DcmCodeString(ContentQualification), "1", "3", "SOPCommonModule"); if (result.good()) result = PrivateDataElementCharacteristicsSequence.write(dataset, "1-n" ,"3", "SOPCommonModule"); + addElementToDataset(result, dataset, new DcmCodeString(InstanceOriginStatus), "1", "3", "SOPCommonModule"); + addElementToDataset(result, dataset, new DcmLongText(BarcodeValue), "1", "3", "SOPCommonModule"); + if (result.good()) result = ReferencedDefinedProtocolSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule"); + if (result.good()) result = ReferencedPerformedProtocolSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule"); // --- CommonInstanceReferenceModule (U) --- if (isCommonInstanceReferenceModulePresent(OFFalse /*complete*/)) @@ -1465,6 +1548,8 @@ OFBool DRTIonPlanIOD::isPatientStudyModulePresent(const OFBool /*complete*/) !AdditionalPatientHistory.isEmpty() || !AdmissionID.isEmpty() || !IssuerOfAdmissionIDSequence.isEmpty() || + !ReasonForVisit.isEmpty() || + !ReasonForVisitCodeSequence.isEmpty() || !ServiceEpisodeID.isEmpty() || !IssuerOfServiceEpisodeIDSequence.isEmpty() || !ServiceEpisodeDescription.isEmpty() || @@ -1477,6 +1562,7 @@ OFBool DRTIonPlanIOD::isClinicalTrialStudyModulePresent(const OFBool /*complete* /* check whether at least one attribute is present */ return !ClinicalTrialTimePointID.isEmpty() || !ClinicalTrialTimePointDescription.isEmpty() || + !ClinicalTrialTimePointTypeCodeSequence.isEmpty() || !LongitudinalTemporalOffsetFromEvent.isEmpty() || !LongitudinalTemporalEventType.isEmpty() || !ConsentForClinicalTrialUseSequence.isEmpty(); @@ -1606,6 +1692,12 @@ OFCondition DRTIonPlanIOD::getAuthorizationEquipmentCertificationNumber(OFString } +OFCondition DRTIonPlanIOD::getBarcodeValue(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(BarcodeValue, value, pos); +} + + OFCondition DRTIonPlanIOD::getClinicalTrialCoordinatingCenterName(OFString &value, const signed long pos) const { return getStringValueFromElement(ClinicalTrialCoordinatingCenterName, value, pos); @@ -1732,6 +1824,12 @@ OFCondition DRTIonPlanIOD::getDeviceSerialNumber(OFString &value, const signed l } +OFCondition DRTIonPlanIOD::getDeviceUID(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(DeviceUID, value, pos); +} + + OFCondition DRTIonPlanIOD::getEthnicGroup(OFString &value, const signed long pos) const { return getStringValueFromElement(EthnicGroup, value, pos); @@ -1792,6 +1890,12 @@ OFCondition DRTIonPlanIOD::getInstanceNumber(Sint32 &value, const unsigned long } +OFCondition DRTIonPlanIOD::getInstanceOriginStatus(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(InstanceOriginStatus, value, pos); +} + + OFCondition DRTIonPlanIOD::getInstitutionAddress(OFString &value, const signed long pos) const { return getStringValueFromElement(InstitutionAddress, value, pos); @@ -1846,6 +1950,12 @@ OFCondition DRTIonPlanIOD::getManufacturer(OFString &value, const signed long po } +OFCondition DRTIonPlanIOD::getManufacturerDeviceClassUID(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(ManufacturerDeviceClassUID, value, pos); +} + + OFCondition DRTIonPlanIOD::getManufacturerModelName(OFString &value, const signed long pos) const { return getStringValueFromElement(ManufacturerModelName, value, pos); @@ -2164,6 +2274,12 @@ OFCondition DRTIonPlanIOD::getRTPlanTime(OFString &value, const signed long pos) } +OFCondition DRTIonPlanIOD::getReasonForVisit(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(ReasonForVisit, value, pos); +} + + OFCondition DRTIonPlanIOD::getReferringPhysicianName(OFString &value, const signed long pos) const { return getStringValueFromElement(ReferringPhysicianName, value, pos); @@ -2176,6 +2292,12 @@ OFCondition DRTIonPlanIOD::getRelatedGeneralSOPClassUID(OFString &value, const s } +OFCondition DRTIonPlanIOD::getRequestingService(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(RequestingService, value, pos); +} + + OFCondition DRTIonPlanIOD::getResponsibleOrganization(OFString &value, const signed long pos) const { return getStringValueFromElement(ResponsibleOrganization, value, pos); @@ -2392,9 +2514,21 @@ OFCondition DRTIonPlanIOD::getTreatmentProtocols(OFString &value, const signed l } -OFCondition DRTIonPlanIOD::getTreatmentSites(OFString &value, const signed long pos) const +OFCondition DRTIonPlanIOD::getTreatmentSessionUID(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(TreatmentSessionUID, value, pos); +} + + +OFCondition DRTIonPlanIOD::getTreatmentSite(OFString &value, const signed long pos) const { - return getStringValueFromElement(TreatmentSites, value, pos); + return getStringValueFromElement(TreatmentSite, value, pos); +} + + +OFCondition DRTIonPlanIOD::getTypeOfPatientID(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(TypeOfPatientID, value, pos); } @@ -2461,6 +2595,15 @@ OFCondition DRTIonPlanIOD::setAuthorizationEquipmentCertificationNumber(const OF } +OFCondition DRTIonPlanIOD::setBarcodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmLongText::checkStringValue(value) : EC_Normal; + if (result.good()) + result = BarcodeValue.putOFStringArray(value); + return result; +} + + OFCondition DRTIonPlanIOD::setClinicalTrialCoordinatingCenterName(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; @@ -2650,6 +2793,15 @@ OFCondition DRTIonPlanIOD::setDeviceSerialNumber(const OFString &value, const OF } +OFCondition DRTIonPlanIOD::setDeviceUID(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = DeviceUID.putOFStringArray(value); + return result; +} + + OFCondition DRTIonPlanIOD::setEthnicGroup(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; @@ -2728,6 +2880,15 @@ OFCondition DRTIonPlanIOD::setInstanceNumber(const OFString &value, const OFBool } +OFCondition DRTIonPlanIOD::setInstanceOriginStatus(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = InstanceOriginStatus.putOFStringArray(value); + return result; +} + + OFCondition DRTIonPlanIOD::setInstitutionAddress(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal; @@ -2806,6 +2967,15 @@ OFCondition DRTIonPlanIOD::setManufacturer(const OFString &value, const OFBool c } +OFCondition DRTIonPlanIOD::setManufacturerDeviceClassUID(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1-n") : EC_Normal; + if (result.good()) + result = ManufacturerDeviceClassUID.putOFStringArray(value); + return result; +} + + OFCondition DRTIonPlanIOD::setManufacturerModelName(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; @@ -3232,6 +3402,15 @@ OFCondition DRTIonPlanIOD::setRTPlanTime(const OFString &value, const OFBool che } +OFCondition DRTIonPlanIOD::setReasonForVisit(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmUnlimitedText::checkStringValue(value) : EC_Normal; + if (result.good()) + result = ReasonForVisit.putOFStringArray(value); + return result; +} + + OFCondition DRTIonPlanIOD::setReferringPhysicianName(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmPersonName::checkStringValue(value, "1") : EC_Normal; @@ -3250,6 +3429,15 @@ OFCondition DRTIonPlanIOD::setRelatedGeneralSOPClassUID(const OFString &value, c } +OFCondition DRTIonPlanIOD::setRequestingService(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = RequestingService.putOFStringArray(value); + return result; +} + + OFCondition DRTIonPlanIOD::setResponsibleOrganization(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; @@ -3556,11 +3744,29 @@ OFCondition DRTIonPlanIOD::setTreatmentProtocols(const OFString &value, const OF } -OFCondition DRTIonPlanIOD::setTreatmentSites(const OFString &value, const OFBool check) +OFCondition DRTIonPlanIOD::setTreatmentSessionUID(const OFString &value, const OFBool check) { - OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1-n") : EC_Normal; + OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = TreatmentSessionUID.putOFStringArray(value); + return result; +} + + +OFCondition DRTIonPlanIOD::setTreatmentSite(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = TreatmentSite.putOFStringArray(value); + return result; +} + + +OFCondition DRTIonPlanIOD::setTypeOfPatientID(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; if (result.good()) - result = TreatmentSites.putOFStringArray(value); + result = TypeOfPatientID.putOFStringArray(value); return result; } diff --git a/dcmrt/libsrc/drtiontr.cc b/dcmrt/libsrc/drtiontr.cc index 3b313ddb..7ff9c56e 100644 --- a/dcmrt/libsrc/drtiontr.cc +++ b/dcmrt/libsrc/drtiontr.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTIonBeamsTreatmentRecordIOD * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -22,6 +22,7 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD() PatientID(DCM_PatientID), IssuerOfPatientID(DCM_IssuerOfPatientID), IssuerOfPatientIDQualifiersSequence(), + TypeOfPatientID(DCM_TypeOfPatientID), PatientBirthDate(DCM_PatientBirthDate), PatientBirthDateInAlternativeCalendar(DCM_PatientBirthDateInAlternativeCalendar), PatientDeathDateInAlternativeCalendar(DCM_PatientDeathDateInAlternativeCalendar), @@ -78,12 +79,14 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD() PhysiciansOfRecordIdentificationSequence(), NameOfPhysiciansReadingStudy(DCM_NameOfPhysiciansReadingStudy), PhysiciansReadingStudyIdentificationSequence(), + RequestingService(DCM_RequestingService), RequestingServiceCodeSequence(), ReferencedStudySequence(), ProcedureCodeSequence(), ReasonForPerformedProcedureCodeSequence(), ClinicalTrialTimePointID(DCM_ClinicalTrialTimePointID), ClinicalTrialTimePointDescription(DCM_ClinicalTrialTimePointDescription), + ClinicalTrialTimePointTypeCodeSequence(), LongitudinalTemporalOffsetFromEvent(DCM_LongitudinalTemporalOffsetFromEvent), LongitudinalTemporalEventType(DCM_LongitudinalTemporalEventType), ConsentForClinicalTrialUseSequence(), @@ -106,6 +109,8 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD() AdditionalPatientHistory(DCM_AdditionalPatientHistory), AdmissionID(DCM_AdmissionID), IssuerOfAdmissionIDSequence(), + ReasonForVisit(DCM_ReasonForVisit), + ReasonForVisitCodeSequence(), ServiceEpisodeID(DCM_ServiceEpisodeID), IssuerOfServiceEpisodeIDSequence(), ServiceEpisodeDescription(DCM_ServiceEpisodeDescription), @@ -129,6 +134,7 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD() PerformedProcedureStepDescription(DCM_PerformedProcedureStepDescription), PerformedProtocolCodeSequence(), CommentsOnThePerformedProcedureStep(DCM_CommentsOnThePerformedProcedureStep), + TreatmentSessionUID(DCM_TreatmentSessionUID), ClinicalTrialCoordinatingCenterName(DCM_ClinicalTrialCoordinatingCenterName), ClinicalTrialSeriesID(DCM_ClinicalTrialSeriesID), ClinicalTrialSeriesDescription(DCM_ClinicalTrialSeriesDescription), @@ -137,11 +143,14 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD() InstitutionAddress(DCM_InstitutionAddress), StationName(DCM_StationName), InstitutionalDepartmentName(DCM_InstitutionalDepartmentName), + InstitutionalDepartmentTypeCodeSequence(), ManufacturerModelName(DCM_ManufacturerModelName), + ManufacturerDeviceClassUID(DCM_ManufacturerDeviceClassUID), DeviceSerialNumber(DCM_DeviceSerialNumber), SoftwareVersions(DCM_SoftwareVersions), GantryID(DCM_GantryID), UDISequence(), + DeviceUID(DCM_DeviceUID), SpatialResolution(DCM_SpatialResolution), DateOfLastCalibration(DCM_DateOfLastCalibration), TimeOfLastCalibration(DCM_TimeOfLastCalibration), @@ -200,6 +209,10 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD() ConversionSourceAttributesSequence(), ContentQualification(DCM_ContentQualification), PrivateDataElementCharacteristicsSequence(), + InstanceOriginStatus(DCM_InstanceOriginStatus), + BarcodeValue(DCM_BarcodeValue), + ReferencedDefinedProtocolSequence(), + ReferencedPerformedProtocolSequence(), ReferencedSeriesSequence(), StudiesContainingOtherReferencedInstancesSequence() { @@ -213,6 +226,7 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD(const DRTIonBeamsTr PatientID(copy.PatientID), IssuerOfPatientID(copy.IssuerOfPatientID), IssuerOfPatientIDQualifiersSequence(copy.IssuerOfPatientIDQualifiersSequence), + TypeOfPatientID(copy.TypeOfPatientID), PatientBirthDate(copy.PatientBirthDate), PatientBirthDateInAlternativeCalendar(copy.PatientBirthDateInAlternativeCalendar), PatientDeathDateInAlternativeCalendar(copy.PatientDeathDateInAlternativeCalendar), @@ -269,12 +283,14 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD(const DRTIonBeamsTr PhysiciansOfRecordIdentificationSequence(copy.PhysiciansOfRecordIdentificationSequence), NameOfPhysiciansReadingStudy(copy.NameOfPhysiciansReadingStudy), PhysiciansReadingStudyIdentificationSequence(copy.PhysiciansReadingStudyIdentificationSequence), + RequestingService(copy.RequestingService), RequestingServiceCodeSequence(copy.RequestingServiceCodeSequence), ReferencedStudySequence(copy.ReferencedStudySequence), ProcedureCodeSequence(copy.ProcedureCodeSequence), ReasonForPerformedProcedureCodeSequence(copy.ReasonForPerformedProcedureCodeSequence), ClinicalTrialTimePointID(copy.ClinicalTrialTimePointID), ClinicalTrialTimePointDescription(copy.ClinicalTrialTimePointDescription), + ClinicalTrialTimePointTypeCodeSequence(copy.ClinicalTrialTimePointTypeCodeSequence), LongitudinalTemporalOffsetFromEvent(copy.LongitudinalTemporalOffsetFromEvent), LongitudinalTemporalEventType(copy.LongitudinalTemporalEventType), ConsentForClinicalTrialUseSequence(copy.ConsentForClinicalTrialUseSequence), @@ -297,6 +313,8 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD(const DRTIonBeamsTr AdditionalPatientHistory(copy.AdditionalPatientHistory), AdmissionID(copy.AdmissionID), IssuerOfAdmissionIDSequence(copy.IssuerOfAdmissionIDSequence), + ReasonForVisit(copy.ReasonForVisit), + ReasonForVisitCodeSequence(copy.ReasonForVisitCodeSequence), ServiceEpisodeID(copy.ServiceEpisodeID), IssuerOfServiceEpisodeIDSequence(copy.IssuerOfServiceEpisodeIDSequence), ServiceEpisodeDescription(copy.ServiceEpisodeDescription), @@ -320,6 +338,7 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD(const DRTIonBeamsTr PerformedProcedureStepDescription(copy.PerformedProcedureStepDescription), PerformedProtocolCodeSequence(copy.PerformedProtocolCodeSequence), CommentsOnThePerformedProcedureStep(copy.CommentsOnThePerformedProcedureStep), + TreatmentSessionUID(copy.TreatmentSessionUID), ClinicalTrialCoordinatingCenterName(copy.ClinicalTrialCoordinatingCenterName), ClinicalTrialSeriesID(copy.ClinicalTrialSeriesID), ClinicalTrialSeriesDescription(copy.ClinicalTrialSeriesDescription), @@ -328,11 +347,14 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD(const DRTIonBeamsTr InstitutionAddress(copy.InstitutionAddress), StationName(copy.StationName), InstitutionalDepartmentName(copy.InstitutionalDepartmentName), + InstitutionalDepartmentTypeCodeSequence(copy.InstitutionalDepartmentTypeCodeSequence), ManufacturerModelName(copy.ManufacturerModelName), + ManufacturerDeviceClassUID(copy.ManufacturerDeviceClassUID), DeviceSerialNumber(copy.DeviceSerialNumber), SoftwareVersions(copy.SoftwareVersions), GantryID(copy.GantryID), UDISequence(copy.UDISequence), + DeviceUID(copy.DeviceUID), SpatialResolution(copy.SpatialResolution), DateOfLastCalibration(copy.DateOfLastCalibration), TimeOfLastCalibration(copy.TimeOfLastCalibration), @@ -391,6 +413,10 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD(const DRTIonBeamsTr ConversionSourceAttributesSequence(copy.ConversionSourceAttributesSequence), ContentQualification(copy.ContentQualification), PrivateDataElementCharacteristicsSequence(copy.PrivateDataElementCharacteristicsSequence), + InstanceOriginStatus(copy.InstanceOriginStatus), + BarcodeValue(copy.BarcodeValue), + ReferencedDefinedProtocolSequence(copy.ReferencedDefinedProtocolSequence), + ReferencedPerformedProtocolSequence(copy.ReferencedPerformedProtocolSequence), ReferencedSeriesSequence(copy.ReferencedSeriesSequence), StudiesContainingOtherReferencedInstancesSequence(copy.StudiesContainingOtherReferencedInstancesSequence) { @@ -410,6 +436,7 @@ DRTIonBeamsTreatmentRecordIOD &DRTIonBeamsTreatmentRecordIOD::operator=(const DR PatientID = copy.PatientID; IssuerOfPatientID = copy.IssuerOfPatientID; IssuerOfPatientIDQualifiersSequence = copy.IssuerOfPatientIDQualifiersSequence; + TypeOfPatientID = copy.TypeOfPatientID; PatientBirthDate = copy.PatientBirthDate; PatientBirthDateInAlternativeCalendar = copy.PatientBirthDateInAlternativeCalendar; PatientDeathDateInAlternativeCalendar = copy.PatientDeathDateInAlternativeCalendar; @@ -466,12 +493,14 @@ DRTIonBeamsTreatmentRecordIOD &DRTIonBeamsTreatmentRecordIOD::operator=(const DR PhysiciansOfRecordIdentificationSequence = copy.PhysiciansOfRecordIdentificationSequence; NameOfPhysiciansReadingStudy = copy.NameOfPhysiciansReadingStudy; PhysiciansReadingStudyIdentificationSequence = copy.PhysiciansReadingStudyIdentificationSequence; + RequestingService = copy.RequestingService; RequestingServiceCodeSequence = copy.RequestingServiceCodeSequence; ReferencedStudySequence = copy.ReferencedStudySequence; ProcedureCodeSequence = copy.ProcedureCodeSequence; ReasonForPerformedProcedureCodeSequence = copy.ReasonForPerformedProcedureCodeSequence; ClinicalTrialTimePointID = copy.ClinicalTrialTimePointID; ClinicalTrialTimePointDescription = copy.ClinicalTrialTimePointDescription; + ClinicalTrialTimePointTypeCodeSequence = copy.ClinicalTrialTimePointTypeCodeSequence; LongitudinalTemporalOffsetFromEvent = copy.LongitudinalTemporalOffsetFromEvent; LongitudinalTemporalEventType = copy.LongitudinalTemporalEventType; ConsentForClinicalTrialUseSequence = copy.ConsentForClinicalTrialUseSequence; @@ -494,6 +523,8 @@ DRTIonBeamsTreatmentRecordIOD &DRTIonBeamsTreatmentRecordIOD::operator=(const DR AdditionalPatientHistory = copy.AdditionalPatientHistory; AdmissionID = copy.AdmissionID; IssuerOfAdmissionIDSequence = copy.IssuerOfAdmissionIDSequence; + ReasonForVisit = copy.ReasonForVisit; + ReasonForVisitCodeSequence = copy.ReasonForVisitCodeSequence; ServiceEpisodeID = copy.ServiceEpisodeID; IssuerOfServiceEpisodeIDSequence = copy.IssuerOfServiceEpisodeIDSequence; ServiceEpisodeDescription = copy.ServiceEpisodeDescription; @@ -517,6 +548,7 @@ DRTIonBeamsTreatmentRecordIOD &DRTIonBeamsTreatmentRecordIOD::operator=(const DR PerformedProcedureStepDescription = copy.PerformedProcedureStepDescription; PerformedProtocolCodeSequence = copy.PerformedProtocolCodeSequence; CommentsOnThePerformedProcedureStep = copy.CommentsOnThePerformedProcedureStep; + TreatmentSessionUID = copy.TreatmentSessionUID; ClinicalTrialCoordinatingCenterName = copy.ClinicalTrialCoordinatingCenterName; ClinicalTrialSeriesID = copy.ClinicalTrialSeriesID; ClinicalTrialSeriesDescription = copy.ClinicalTrialSeriesDescription; @@ -525,11 +557,14 @@ DRTIonBeamsTreatmentRecordIOD &DRTIonBeamsTreatmentRecordIOD::operator=(const DR InstitutionAddress = copy.InstitutionAddress; StationName = copy.StationName; InstitutionalDepartmentName = copy.InstitutionalDepartmentName; + InstitutionalDepartmentTypeCodeSequence = copy.InstitutionalDepartmentTypeCodeSequence; ManufacturerModelName = copy.ManufacturerModelName; + ManufacturerDeviceClassUID = copy.ManufacturerDeviceClassUID; DeviceSerialNumber = copy.DeviceSerialNumber; SoftwareVersions = copy.SoftwareVersions; GantryID = copy.GantryID; UDISequence = copy.UDISequence; + DeviceUID = copy.DeviceUID; SpatialResolution = copy.SpatialResolution; DateOfLastCalibration = copy.DateOfLastCalibration; TimeOfLastCalibration = copy.TimeOfLastCalibration; @@ -588,6 +623,10 @@ DRTIonBeamsTreatmentRecordIOD &DRTIonBeamsTreatmentRecordIOD::operator=(const DR ConversionSourceAttributesSequence = copy.ConversionSourceAttributesSequence; ContentQualification = copy.ContentQualification; PrivateDataElementCharacteristicsSequence = copy.PrivateDataElementCharacteristicsSequence; + InstanceOriginStatus = copy.InstanceOriginStatus; + BarcodeValue = copy.BarcodeValue; + ReferencedDefinedProtocolSequence = copy.ReferencedDefinedProtocolSequence; + ReferencedPerformedProtocolSequence = copy.ReferencedPerformedProtocolSequence; ReferencedSeriesSequence = copy.ReferencedSeriesSequence; StudiesContainingOtherReferencedInstancesSequence = copy.StudiesContainingOtherReferencedInstancesSequence; } @@ -602,6 +641,7 @@ void DRTIonBeamsTreatmentRecordIOD::clear() PatientID.clear(); IssuerOfPatientID.clear(); IssuerOfPatientIDQualifiersSequence.clear(); + TypeOfPatientID.clear(); PatientBirthDate.clear(); PatientBirthDateInAlternativeCalendar.clear(); PatientDeathDateInAlternativeCalendar.clear(); @@ -658,12 +698,14 @@ void DRTIonBeamsTreatmentRecordIOD::clear() PhysiciansOfRecordIdentificationSequence.clear(); NameOfPhysiciansReadingStudy.clear(); PhysiciansReadingStudyIdentificationSequence.clear(); + RequestingService.clear(); RequestingServiceCodeSequence.clear(); ReferencedStudySequence.clear(); ProcedureCodeSequence.clear(); ReasonForPerformedProcedureCodeSequence.clear(); ClinicalTrialTimePointID.clear(); ClinicalTrialTimePointDescription.clear(); + ClinicalTrialTimePointTypeCodeSequence.clear(); LongitudinalTemporalOffsetFromEvent.clear(); LongitudinalTemporalEventType.clear(); ConsentForClinicalTrialUseSequence.clear(); @@ -686,6 +728,8 @@ void DRTIonBeamsTreatmentRecordIOD::clear() AdditionalPatientHistory.clear(); AdmissionID.clear(); IssuerOfAdmissionIDSequence.clear(); + ReasonForVisit.clear(); + ReasonForVisitCodeSequence.clear(); ServiceEpisodeID.clear(); IssuerOfServiceEpisodeIDSequence.clear(); ServiceEpisodeDescription.clear(); @@ -709,6 +753,7 @@ void DRTIonBeamsTreatmentRecordIOD::clear() PerformedProcedureStepDescription.clear(); PerformedProtocolCodeSequence.clear(); CommentsOnThePerformedProcedureStep.clear(); + TreatmentSessionUID.clear(); ClinicalTrialCoordinatingCenterName.clear(); ClinicalTrialSeriesID.clear(); ClinicalTrialSeriesDescription.clear(); @@ -717,11 +762,14 @@ void DRTIonBeamsTreatmentRecordIOD::clear() InstitutionAddress.clear(); StationName.clear(); InstitutionalDepartmentName.clear(); + InstitutionalDepartmentTypeCodeSequence.clear(); ManufacturerModelName.clear(); + ManufacturerDeviceClassUID.clear(); DeviceSerialNumber.clear(); SoftwareVersions.clear(); GantryID.clear(); UDISequence.clear(); + DeviceUID.clear(); SpatialResolution.clear(); DateOfLastCalibration.clear(); TimeOfLastCalibration.clear(); @@ -780,6 +828,10 @@ void DRTIonBeamsTreatmentRecordIOD::clear() ConversionSourceAttributesSequence.clear(); ContentQualification.clear(); PrivateDataElementCharacteristicsSequence.clear(); + InstanceOriginStatus.clear(); + BarcodeValue.clear(); + ReferencedDefinedProtocolSequence.clear(); + ReferencedPerformedProtocolSequence.clear(); ReferencedSeriesSequence.clear(); StudiesContainingOtherReferencedInstancesSequence.clear(); } @@ -835,11 +887,14 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::read(DcmItem &dataset) getAndCheckElementFromDataset(dataset, InstitutionAddress, "1", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, StationName, "1", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, InstitutionalDepartmentName, "1", "3", "GeneralEquipmentModule"); + InstitutionalDepartmentTypeCodeSequence.read(dataset, "1-n", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, ManufacturerModelName, "1", "3", "GeneralEquipmentModule"); + getAndCheckElementFromDataset(dataset, ManufacturerDeviceClassUID, "1-n", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, DeviceSerialNumber, "1", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, SoftwareVersions, "1-n", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, GantryID, "1", "3", "GeneralEquipmentModule"); UDISequence.read(dataset, "1-n", "3", "GeneralEquipmentModule"); + getAndCheckElementFromDataset(dataset, DeviceUID, "1", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, SpatialResolution, "1", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, DateOfLastCalibration, "1-n", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, TimeOfLastCalibration, "1-n", "3", "GeneralEquipmentModule"); @@ -931,6 +986,10 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::read(DcmItem &dataset) ConversionSourceAttributesSequence.read(dataset, "1-n", "1C", "SOPCommonModule"); getAndCheckElementFromDataset(dataset, ContentQualification, "1", "3", "SOPCommonModule"); PrivateDataElementCharacteristicsSequence.read(dataset, "1-n", "3", "SOPCommonModule"); + getAndCheckElementFromDataset(dataset, InstanceOriginStatus, "1", "3", "SOPCommonModule"); + getAndCheckElementFromDataset(dataset, BarcodeValue, "1", "3", "SOPCommonModule"); + ReferencedDefinedProtocolSequence.read(dataset, "1-n", "1C", "SOPCommonModule"); + ReferencedPerformedProtocolSequence.read(dataset, "1-n", "1C", "SOPCommonModule"); // --- CommonInstanceReferenceModule (U) --- ReferencedSeriesSequence.read(dataset, "1-n", "1C", "CommonInstanceReferenceModule"); @@ -949,6 +1008,7 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::readPatientData(DcmItem &dataset) getAndCheckElementFromDataset(dataset, PatientID, "1", "2", "PatientModule"); getAndCheckElementFromDataset(dataset, IssuerOfPatientID, "1", "3", "PatientModule"); IssuerOfPatientIDQualifiersSequence.read(dataset, "1-n", "3", "PatientModule"); + getAndCheckElementFromDataset(dataset, TypeOfPatientID, "1", "3", "PatientModule"); getAndCheckElementFromDataset(dataset, PatientBirthDate, "1", "2", "PatientModule"); getAndCheckElementFromDataset(dataset, PatientBirthDateInAlternativeCalendar, "1", "3", "PatientModule"); getAndCheckElementFromDataset(dataset, PatientDeathDateInAlternativeCalendar, "1", "3", "PatientModule"); @@ -1025,6 +1085,7 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::readStudyData(DcmItem &dataset) PhysiciansOfRecordIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule"); getAndCheckElementFromDataset(dataset, NameOfPhysiciansReadingStudy, "1-n", "3", "GeneralStudyModule"); PhysiciansReadingStudyIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule"); + getAndCheckElementFromDataset(dataset, RequestingService, "1", "3", "GeneralStudyModule"); RequestingServiceCodeSequence.read(dataset, "1-n", "3", "GeneralStudyModule"); ReferencedStudySequence.read(dataset, "1-n", "3", "GeneralStudyModule"); ProcedureCodeSequence.read(dataset, "1-n", "3", "GeneralStudyModule"); @@ -1035,6 +1096,7 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::readStudyData(DcmItem &dataset) { getAndCheckElementFromDataset(dataset, ClinicalTrialTimePointID, "1", "2", "ClinicalTrialStudyModule"); getAndCheckElementFromDataset(dataset, ClinicalTrialTimePointDescription, "1", "3", "ClinicalTrialStudyModule"); + ClinicalTrialTimePointTypeCodeSequence.read(dataset, "1-n", "3", "ClinicalTrialStudyModule"); getAndCheckElementFromDataset(dataset, LongitudinalTemporalOffsetFromEvent, "1", "3", "ClinicalTrialStudyModule"); getAndCheckElementFromDataset(dataset, LongitudinalTemporalEventType, "1", "1C", "ClinicalTrialStudyModule"); ConsentForClinicalTrialUseSequence.read(dataset, "1-n", "3", "ClinicalTrialStudyModule"); @@ -1060,6 +1122,8 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::readStudyData(DcmItem &dataset) getAndCheckElementFromDataset(dataset, AdditionalPatientHistory, "1", "3", "PatientStudyModule"); getAndCheckElementFromDataset(dataset, AdmissionID, "1", "3", "PatientStudyModule"); IssuerOfAdmissionIDSequence.read(dataset, "1-n", "3", "PatientStudyModule"); + getAndCheckElementFromDataset(dataset, ReasonForVisit, "1", "3", "PatientStudyModule"); + ReasonForVisitCodeSequence.read(dataset, "1-n", "3", "PatientStudyModule"); getAndCheckElementFromDataset(dataset, ServiceEpisodeID, "1", "3", "PatientStudyModule"); IssuerOfServiceEpisodeIDSequence.read(dataset, "1-n", "3", "PatientStudyModule"); getAndCheckElementFromDataset(dataset, ServiceEpisodeDescription, "1", "3", "PatientStudyModule"); @@ -1095,6 +1159,7 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::readSeriesData(DcmItem &dataset) getAndCheckElementFromDataset(dataset, PerformedProcedureStepDescription, "1", "3", "RTSeriesModule"); PerformedProtocolCodeSequence.read(dataset, "1-n", "3", "RTSeriesModule"); getAndCheckElementFromDataset(dataset, CommentsOnThePerformedProcedureStep, "1", "3", "RTSeriesModule"); + getAndCheckElementFromDataset(dataset, TreatmentSessionUID, "1", "3", "RTSeriesModule"); // --- ClinicalTrialSeriesModule (U) --- if (dataset.tagExists(DCM_ClinicalTrialCoordinatingCenterName)) @@ -1122,6 +1187,7 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmLongString(PatientID), "1", "2", "PatientModule"); addElementToDataset(result, dataset, new DcmLongString(IssuerOfPatientID), "1", "3", "PatientModule"); if (result.good()) result = IssuerOfPatientIDQualifiersSequence.write(dataset, "1-n" ,"3", "PatientModule"); + addElementToDataset(result, dataset, new DcmCodeString(TypeOfPatientID), "1", "3", "PatientModule"); addElementToDataset(result, dataset, new DcmDate(PatientBirthDate), "1", "2", "PatientModule"); addElementToDataset(result, dataset, new DcmLongString(PatientBirthDateInAlternativeCalendar), "1", "3", "PatientModule"); addElementToDataset(result, dataset, new DcmLongString(PatientDeathDateInAlternativeCalendar), "1", "3", "PatientModule"); @@ -1185,6 +1251,7 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::write(DcmItem &dataset) if (result.good()) result = PhysiciansOfRecordIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule"); addElementToDataset(result, dataset, new DcmPersonName(NameOfPhysiciansReadingStudy), "1-n", "3", "GeneralStudyModule"); if (result.good()) result = PhysiciansReadingStudyIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule"); + addElementToDataset(result, dataset, new DcmLongString(RequestingService), "1", "3", "GeneralStudyModule"); if (result.good()) result = RequestingServiceCodeSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule"); if (result.good()) result = ReferencedStudySequence.write(dataset, "1-n" ,"3", "GeneralStudyModule"); if (result.good()) result = ProcedureCodeSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule"); @@ -1195,6 +1262,7 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::write(DcmItem &dataset) { addElementToDataset(result, dataset, new DcmLongString(ClinicalTrialTimePointID), "1", "2", "ClinicalTrialStudyModule"); addElementToDataset(result, dataset, new DcmShortText(ClinicalTrialTimePointDescription), "1", "3", "ClinicalTrialStudyModule"); + if (result.good()) result = ClinicalTrialTimePointTypeCodeSequence.write(dataset, "1-n" ,"3", "ClinicalTrialStudyModule"); addElementToDataset(result, dataset, new DcmFloatingPointDouble(LongitudinalTemporalOffsetFromEvent), "1", "3", "ClinicalTrialStudyModule"); addElementToDataset(result, dataset, new DcmCodeString(LongitudinalTemporalEventType), "1", "1C", "ClinicalTrialStudyModule"); if (result.good()) result = ConsentForClinicalTrialUseSequence.write(dataset, "1-n" ,"3", "ClinicalTrialStudyModule"); @@ -1222,6 +1290,8 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmLongText(AdditionalPatientHistory), "1", "3", "PatientStudyModule"); addElementToDataset(result, dataset, new DcmLongString(AdmissionID), "1", "3", "PatientStudyModule"); if (result.good()) result = IssuerOfAdmissionIDSequence.write(dataset, "1-n" ,"3", "PatientStudyModule"); + addElementToDataset(result, dataset, new DcmUnlimitedText(ReasonForVisit), "1", "3", "PatientStudyModule"); + if (result.good()) result = ReasonForVisitCodeSequence.write(dataset, "1-n" ,"3", "PatientStudyModule"); addElementToDataset(result, dataset, new DcmLongString(ServiceEpisodeID), "1", "3", "PatientStudyModule"); if (result.good()) result = IssuerOfServiceEpisodeIDSequence.write(dataset, "1-n" ,"3", "PatientStudyModule"); addElementToDataset(result, dataset, new DcmLongString(ServiceEpisodeDescription), "1", "3", "PatientStudyModule"); @@ -1248,6 +1318,7 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmLongString(PerformedProcedureStepDescription), "1", "3", "RTSeriesModule"); if (result.good()) result = PerformedProtocolCodeSequence.write(dataset, "1-n" ,"3", "RTSeriesModule"); addElementToDataset(result, dataset, new DcmShortText(CommentsOnThePerformedProcedureStep), "1", "3", "RTSeriesModule"); + addElementToDataset(result, dataset, new DcmUniqueIdentifier(TreatmentSessionUID), "1", "3", "RTSeriesModule"); // --- ClinicalTrialSeriesModule (U) --- if (isClinicalTrialSeriesModulePresent(OFFalse /*complete*/)) @@ -1263,11 +1334,14 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmShortText(InstitutionAddress), "1", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmShortString(StationName), "1", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmLongString(InstitutionalDepartmentName), "1", "3", "GeneralEquipmentModule"); + if (result.good()) result = InstitutionalDepartmentTypeCodeSequence.write(dataset, "1-n" ,"3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmLongString(ManufacturerModelName), "1", "3", "GeneralEquipmentModule"); + addElementToDataset(result, dataset, new DcmUniqueIdentifier(ManufacturerDeviceClassUID), "1-n", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmLongString(DeviceSerialNumber), "1", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmLongString(SoftwareVersions), "1-n", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmLongString(GantryID), "1", "3", "GeneralEquipmentModule"); if (result.good()) result = UDISequence.write(dataset, "1-n" ,"3", "GeneralEquipmentModule"); + addElementToDataset(result, dataset, new DcmUniqueIdentifier(DeviceUID), "1", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmDecimalString(SpatialResolution), "1", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmDate(DateOfLastCalibration), "1-n", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmTime(TimeOfLastCalibration), "1-n", "3", "GeneralEquipmentModule"); @@ -1360,6 +1434,10 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::write(DcmItem &dataset) if (result.good()) result = ConversionSourceAttributesSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule"); addElementToDataset(result, dataset, new DcmCodeString(ContentQualification), "1", "3", "SOPCommonModule"); if (result.good()) result = PrivateDataElementCharacteristicsSequence.write(dataset, "1-n" ,"3", "SOPCommonModule"); + addElementToDataset(result, dataset, new DcmCodeString(InstanceOriginStatus), "1", "3", "SOPCommonModule"); + addElementToDataset(result, dataset, new DcmLongText(BarcodeValue), "1", "3", "SOPCommonModule"); + if (result.good()) result = ReferencedDefinedProtocolSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule"); + if (result.good()) result = ReferencedPerformedProtocolSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule"); // --- CommonInstanceReferenceModule (U) --- if (isCommonInstanceReferenceModulePresent(OFFalse /*complete*/)) @@ -1400,6 +1478,7 @@ OFBool DRTIonBeamsTreatmentRecordIOD::isClinicalTrialStudyModulePresent(const OF /* check whether at least one attribute is present */ return !ClinicalTrialTimePointID.isEmpty() || !ClinicalTrialTimePointDescription.isEmpty() || + !ClinicalTrialTimePointTypeCodeSequence.isEmpty() || !LongitudinalTemporalOffsetFromEvent.isEmpty() || !LongitudinalTemporalEventType.isEmpty() || !ConsentForClinicalTrialUseSequence.isEmpty(); @@ -1428,6 +1507,8 @@ OFBool DRTIonBeamsTreatmentRecordIOD::isPatientStudyModulePresent(const OFBool / !AdditionalPatientHistory.isEmpty() || !AdmissionID.isEmpty() || !IssuerOfAdmissionIDSequence.isEmpty() || + !ReasonForVisit.isEmpty() || + !ReasonForVisitCodeSequence.isEmpty() || !ServiceEpisodeID.isEmpty() || !IssuerOfServiceEpisodeIDSequence.isEmpty() || !ServiceEpisodeDescription.isEmpty() || @@ -1540,6 +1621,12 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::getAuthorizationEquipmentCertificatio } +OFCondition DRTIonBeamsTreatmentRecordIOD::getBarcodeValue(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(BarcodeValue, value, pos); +} + + OFCondition DRTIonBeamsTreatmentRecordIOD::getClinicalTrialCoordinatingCenterName(OFString &value, const signed long pos) const { return getStringValueFromElement(ClinicalTrialCoordinatingCenterName, value, pos); @@ -1672,6 +1759,12 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::getDeviceSerialNumber(OFString &value } +OFCondition DRTIonBeamsTreatmentRecordIOD::getDeviceUID(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(DeviceUID, value, pos); +} + + OFCondition DRTIonBeamsTreatmentRecordIOD::getEthnicGroup(OFString &value, const signed long pos) const { return getStringValueFromElement(EthnicGroup, value, pos); @@ -1726,6 +1819,12 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::getInstanceNumber(Sint32 &value, cons } +OFCondition DRTIonBeamsTreatmentRecordIOD::getInstanceOriginStatus(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(InstanceOriginStatus, value, pos); +} + + OFCondition DRTIonBeamsTreatmentRecordIOD::getInstitutionAddress(OFString &value, const signed long pos) const { return getStringValueFromElement(InstitutionAddress, value, pos); @@ -1780,6 +1879,12 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::getManufacturer(OFString &value, cons } +OFCondition DRTIonBeamsTreatmentRecordIOD::getManufacturerDeviceClassUID(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(ManufacturerDeviceClassUID, value, pos); +} + + OFCondition DRTIonBeamsTreatmentRecordIOD::getManufacturerModelName(OFString &value, const signed long pos) const { return getStringValueFromElement(ManufacturerModelName, value, pos); @@ -2068,6 +2173,12 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::getQueryRetrieveView(OFString &value, } +OFCondition DRTIonBeamsTreatmentRecordIOD::getReasonForVisit(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(ReasonForVisit, value, pos); +} + + OFCondition DRTIonBeamsTreatmentRecordIOD::getReferencedFractionGroupNumber(OFString &value, const signed long pos) const { return getStringValueFromElement(ReferencedFractionGroupNumber, value, pos); @@ -2092,6 +2203,12 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::getRelatedGeneralSOPClassUID(OFString } +OFCondition DRTIonBeamsTreatmentRecordIOD::getRequestingService(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(RequestingService, value, pos); +} + + OFCondition DRTIonBeamsTreatmentRecordIOD::getResponsibleOrganization(OFString &value, const signed long pos) const { return getStringValueFromElement(ResponsibleOrganization, value, pos); @@ -2290,6 +2407,12 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::getTreatmentDate(OFString &value, con } +OFCondition DRTIonBeamsTreatmentRecordIOD::getTreatmentSessionUID(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(TreatmentSessionUID, value, pos); +} + + OFCondition DRTIonBeamsTreatmentRecordIOD::getTreatmentStatusComment(OFString &value, const signed long pos) const { return getStringValueFromElement(TreatmentStatusComment, value, pos); @@ -2302,6 +2425,12 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::getTreatmentTime(OFString &value, con } +OFCondition DRTIonBeamsTreatmentRecordIOD::getTypeOfPatientID(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(TypeOfPatientID, value, pos); +} + + OFCondition DRTIonBeamsTreatmentRecordIOD::setAccessionNumber(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; @@ -2356,6 +2485,15 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::setAuthorizationEquipmentCertificatio } +OFCondition DRTIonBeamsTreatmentRecordIOD::setBarcodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmLongText::checkStringValue(value) : EC_Normal; + if (result.good()) + result = BarcodeValue.putOFStringArray(value); + return result; +} + + OFCondition DRTIonBeamsTreatmentRecordIOD::setClinicalTrialCoordinatingCenterName(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; @@ -2554,6 +2692,15 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::setDeviceSerialNumber(const OFString } +OFCondition DRTIonBeamsTreatmentRecordIOD::setDeviceUID(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = DeviceUID.putOFStringArray(value); + return result; +} + + OFCondition DRTIonBeamsTreatmentRecordIOD::setEthnicGroup(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; @@ -2626,6 +2773,15 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::setInstanceNumber(const OFString &val } +OFCondition DRTIonBeamsTreatmentRecordIOD::setInstanceOriginStatus(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = InstanceOriginStatus.putOFStringArray(value); + return result; +} + + OFCondition DRTIonBeamsTreatmentRecordIOD::setInstitutionAddress(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal; @@ -2704,6 +2860,15 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::setManufacturer(const OFString &value } +OFCondition DRTIonBeamsTreatmentRecordIOD::setManufacturerDeviceClassUID(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1-n") : EC_Normal; + if (result.good()) + result = ManufacturerDeviceClassUID.putOFStringArray(value); + return result; +} + + OFCondition DRTIonBeamsTreatmentRecordIOD::setManufacturerModelName(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; @@ -3076,6 +3241,15 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::setQueryRetrieveView(const OFString & } +OFCondition DRTIonBeamsTreatmentRecordIOD::setReasonForVisit(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmUnlimitedText::checkStringValue(value) : EC_Normal; + if (result.good()) + result = ReasonForVisit.putOFStringArray(value); + return result; +} + + OFCondition DRTIonBeamsTreatmentRecordIOD::setReferencedFractionGroupNumber(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; @@ -3103,6 +3277,15 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::setRelatedGeneralSOPClassUID(const OF } +OFCondition DRTIonBeamsTreatmentRecordIOD::setRequestingService(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = RequestingService.putOFStringArray(value); + return result; +} + + OFCondition DRTIonBeamsTreatmentRecordIOD::setResponsibleOrganization(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; @@ -3382,6 +3565,15 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::setTreatmentDate(const OFString &valu } +OFCondition DRTIonBeamsTreatmentRecordIOD::setTreatmentSessionUID(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = TreatmentSessionUID.putOFStringArray(value); + return result; +} + + OFCondition DRTIonBeamsTreatmentRecordIOD::setTreatmentStatusComment(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal; @@ -3400,4 +3592,13 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::setTreatmentTime(const OFString &valu } +OFCondition DRTIonBeamsTreatmentRecordIOD::setTypeOfPatientID(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = TypeOfPatientID.putOFStringArray(value); + return result; +} + + // end of source file diff --git a/dcmrt/libsrc/drtipiqs.cc b/dcmrt/libsrc/drtipiqs.cc index 191c864b..5a094d83 100644 --- a/dcmrt/libsrc/drtipiqs.cc +++ b/dcmrt/libsrc/drtipiqs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTIssuerOfPatientIDQualifiersSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -322,10 +322,12 @@ OFCondition DRTIssuerOfPatientIDQualifiersSequence::gotoFirstItem() OFCondition DRTIssuerOfPatientIDQualifiersSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtircs.cc b/dcmrt/libsrc/drtircs.cc index 56bf8a91..6e3b3094 100644 --- a/dcmrt/libsrc/drtircs.cc +++ b/dcmrt/libsrc/drtircs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTIonRangeCompensatorSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -768,10 +768,12 @@ OFCondition DRTIonRangeCompensatorSequence::gotoFirstItem() OFCondition DRTIonRangeCompensatorSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtiseis.cc b/dcmrt/libsrc/drtiseis.cc index 29fc8815..97cdbde7 100644 --- a/dcmrt/libsrc/drtiseis.cc +++ b/dcmrt/libsrc/drtiseis.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTIssuerOfServiceEpisodeIDSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -301,10 +301,12 @@ OFCondition DRTIssuerOfServiceEpisodeIDSequence::gotoFirstItem() OFCondition DRTIssuerOfServiceEpisodeIDSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtitts.cc b/dcmrt/libsrc/drtitts.cc index 9f6f1f2d..40b0e5da 100644 --- a/dcmrt/libsrc/drtitts.cc +++ b/dcmrt/libsrc/drtitts.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTIonToleranceTableSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -743,10 +743,12 @@ OFCondition DRTIonToleranceTableSequence::gotoFirstItem() OFCondition DRTIonToleranceTableSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtiwps.cc b/dcmrt/libsrc/drtiwps.cc index c043d21c..3d0ca16d 100644 --- a/dcmrt/libsrc/drtiwps.cc +++ b/dcmrt/libsrc/drtiwps.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTIonWedgePositionSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -306,10 +306,12 @@ OFCondition DRTIonWedgePositionSequence::gotoFirstItem() OFCondition DRTIonWedgePositionSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtiws.cc b/dcmrt/libsrc/drtiws.cc index 488532d5..b91e5fec 100644 --- a/dcmrt/libsrc/drtiws.cc +++ b/dcmrt/libsrc/drtiws.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTIonWedgeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -440,10 +440,12 @@ OFCondition DRTIonWedgeSequence::gotoFirstItem() OFCondition DRTIonWedgeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtlsds.cc b/dcmrt/libsrc/drtlsds.cc index ccbe1f56..102af304 100644 --- a/dcmrt/libsrc/drtlsds.cc +++ b/dcmrt/libsrc/drtlsds.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTLateralSpreadingDeviceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -368,10 +368,12 @@ OFCondition DRTLateralSpreadingDeviceSequence::gotoFirstItem() OFCondition DRTLateralSpreadingDeviceSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtlsds1.cc b/dcmrt/libsrc/drtlsds1.cc new file mode 100644 index 00000000..f4cd459a --- /dev/null +++ b/dcmrt/libsrc/drtlsds1.cc @@ -0,0 +1,634 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtlsds1.h" + + +// --- item class --- + +DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + IsocenterToLateralSpreadingDeviceDistance(DCM_IsocenterToLateralSpreadingDeviceDistance), + LateralSpreadingDeviceSetting(DCM_LateralSpreadingDeviceSetting), + LateralSpreadingDeviceWaterEquivalentThickness(DCM_LateralSpreadingDeviceWaterEquivalentThickness), + ReferencedLateralSpreadingDeviceNumber(DCM_ReferencedLateralSpreadingDeviceNumber) +{ +} + + +DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + IsocenterToLateralSpreadingDeviceDistance(copy.IsocenterToLateralSpreadingDeviceDistance), + LateralSpreadingDeviceSetting(copy.LateralSpreadingDeviceSetting), + LateralSpreadingDeviceWaterEquivalentThickness(copy.LateralSpreadingDeviceWaterEquivalentThickness), + ReferencedLateralSpreadingDeviceNumber(copy.ReferencedLateralSpreadingDeviceNumber) +{ +} + + +DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::~Item() +{ +} + + +DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + IsocenterToLateralSpreadingDeviceDistance = copy.IsocenterToLateralSpreadingDeviceDistance; + LateralSpreadingDeviceSetting = copy.LateralSpreadingDeviceSetting; + LateralSpreadingDeviceWaterEquivalentThickness = copy.LateralSpreadingDeviceWaterEquivalentThickness; + ReferencedLateralSpreadingDeviceNumber = copy.ReferencedLateralSpreadingDeviceNumber; + } + return *this; +} + + +void DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + ReferencedLateralSpreadingDeviceNumber.clear(); + LateralSpreadingDeviceSetting.clear(); + IsocenterToLateralSpreadingDeviceDistance.clear(); + LateralSpreadingDeviceWaterEquivalentThickness.clear(); + } +} + + +OFBool DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::isEmpty() +{ + return ReferencedLateralSpreadingDeviceNumber.isEmpty() && + LateralSpreadingDeviceSetting.isEmpty() && + IsocenterToLateralSpreadingDeviceDistance.isEmpty() && + LateralSpreadingDeviceWaterEquivalentThickness.isEmpty(); +} + + +OFBool DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, ReferencedLateralSpreadingDeviceNumber, "1", "1", "LateralSpreadingDeviceSettingsSequence"); + getAndCheckElementFromDataset(item, LateralSpreadingDeviceSetting, "1", "1", "LateralSpreadingDeviceSettingsSequence"); + getAndCheckElementFromDataset(item, IsocenterToLateralSpreadingDeviceDistance, "1", "3", "LateralSpreadingDeviceSettingsSequence"); + getAndCheckElementFromDataset(item, LateralSpreadingDeviceWaterEquivalentThickness, "1", "3", "LateralSpreadingDeviceSettingsSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmIntegerString(ReferencedLateralSpreadingDeviceNumber), "1", "1", "LateralSpreadingDeviceSettingsSequence"); + addElementToDataset(result, item, new DcmLongString(LateralSpreadingDeviceSetting), "1", "1", "LateralSpreadingDeviceSettingsSequence"); + addElementToDataset(result, item, new DcmFloatingPointSingle(IsocenterToLateralSpreadingDeviceDistance), "1", "3", "LateralSpreadingDeviceSettingsSequence"); + addElementToDataset(result, item, new DcmFloatingPointSingle(LateralSpreadingDeviceWaterEquivalentThickness), "1", "3", "LateralSpreadingDeviceSettingsSequence"); + } + return result; +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::getIsocenterToLateralSpreadingDeviceDistance(Float32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointSingle &, IsocenterToLateralSpreadingDeviceDistance).getFloat32(value, pos); +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::getLateralSpreadingDeviceSetting(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(LateralSpreadingDeviceSetting, value, pos); +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::getLateralSpreadingDeviceWaterEquivalentThickness(Float32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointSingle &, LateralSpreadingDeviceWaterEquivalentThickness).getFloat32(value, pos); +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::getReferencedLateralSpreadingDeviceNumber(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedLateralSpreadingDeviceNumber, value, pos); +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::getReferencedLateralSpreadingDeviceNumber(Sint32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmIntegerString &, ReferencedLateralSpreadingDeviceNumber).getSint32(value, pos); +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::setIsocenterToLateralSpreadingDeviceDistance(const Float32 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return IsocenterToLateralSpreadingDeviceDistance.putFloat32(value, pos); +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::setLateralSpreadingDeviceSetting(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = LateralSpreadingDeviceSetting.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::setLateralSpreadingDeviceWaterEquivalentThickness(const Float32 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return LateralSpreadingDeviceWaterEquivalentThickness.putFloat32(value, pos); +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::setReferencedLateralSpreadingDeviceNumber(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedLateralSpreadingDeviceNumber.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule(const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::operator=(const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::~DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule() +{ + clear(); +} + + +void DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_LateralSpreadingDeviceSettingsSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_LateralSpreadingDeviceSettingsSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_LateralSpreadingDeviceSettingsSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtlsds2.cc b/dcmrt/libsrc/drtlsds2.cc new file mode 100644 index 00000000..6ce97c89 --- /dev/null +++ b/dcmrt/libsrc/drtlsds2.cc @@ -0,0 +1,584 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtlsds2.h" + + +// --- item class --- + +DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + LateralSpreadingDeviceSetting(DCM_LateralSpreadingDeviceSetting), + ReferencedLateralSpreadingDeviceNumber(DCM_ReferencedLateralSpreadingDeviceNumber) +{ +} + + +DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + LateralSpreadingDeviceSetting(copy.LateralSpreadingDeviceSetting), + ReferencedLateralSpreadingDeviceNumber(copy.ReferencedLateralSpreadingDeviceNumber) +{ +} + + +DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::~Item() +{ +} + + +DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + LateralSpreadingDeviceSetting = copy.LateralSpreadingDeviceSetting; + ReferencedLateralSpreadingDeviceNumber = copy.ReferencedLateralSpreadingDeviceNumber; + } + return *this; +} + + +void DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + ReferencedLateralSpreadingDeviceNumber.clear(); + LateralSpreadingDeviceSetting.clear(); + } +} + + +OFBool DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::isEmpty() +{ + return ReferencedLateralSpreadingDeviceNumber.isEmpty() && + LateralSpreadingDeviceSetting.isEmpty(); +} + + +OFBool DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, ReferencedLateralSpreadingDeviceNumber, "1", "1", "LateralSpreadingDeviceSettingsSequence"); + getAndCheckElementFromDataset(item, LateralSpreadingDeviceSetting, "1", "1", "LateralSpreadingDeviceSettingsSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmIntegerString(ReferencedLateralSpreadingDeviceNumber), "1", "1", "LateralSpreadingDeviceSettingsSequence"); + addElementToDataset(result, item, new DcmLongString(LateralSpreadingDeviceSetting), "1", "1", "LateralSpreadingDeviceSettingsSequence"); + } + return result; +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getLateralSpreadingDeviceSetting(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(LateralSpreadingDeviceSetting, value, pos); +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getReferencedLateralSpreadingDeviceNumber(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedLateralSpreadingDeviceNumber, value, pos); +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getReferencedLateralSpreadingDeviceNumber(Sint32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmIntegerString &, ReferencedLateralSpreadingDeviceNumber).getSint32(value, pos); +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::setLateralSpreadingDeviceSetting(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = LateralSpreadingDeviceSetting.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::setReferencedLateralSpreadingDeviceNumber(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedLateralSpreadingDeviceNumber.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule(const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::operator=(const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::~DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule() +{ + clear(); +} + + +void DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_LateralSpreadingDeviceSettingsSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_LateralSpreadingDeviceSettingsSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_LateralSpreadingDeviceSettingsSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtlsds6.cc b/dcmrt/libsrc/drtlsds6.cc deleted file mode 100644 index 1003c816..00000000 --- a/dcmrt/libsrc/drtlsds6.cc +++ /dev/null @@ -1,632 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Source file for class DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/dcmrt/seq/drtlsds6.h" - - -// --- item class --- - -DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::Item(const OFBool emptyDefaultItem) - : EmptyDefaultItem(emptyDefaultItem), - IsocenterToLateralSpreadingDeviceDistance(DCM_IsocenterToLateralSpreadingDeviceDistance), - LateralSpreadingDeviceSetting(DCM_LateralSpreadingDeviceSetting), - LateralSpreadingDeviceWaterEquivalentThickness(DCM_LateralSpreadingDeviceWaterEquivalentThickness), - ReferencedLateralSpreadingDeviceNumber(DCM_ReferencedLateralSpreadingDeviceNumber) -{ -} - - -DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::Item(const Item ©) - : EmptyDefaultItem(copy.EmptyDefaultItem), - IsocenterToLateralSpreadingDeviceDistance(copy.IsocenterToLateralSpreadingDeviceDistance), - LateralSpreadingDeviceSetting(copy.LateralSpreadingDeviceSetting), - LateralSpreadingDeviceWaterEquivalentThickness(copy.LateralSpreadingDeviceWaterEquivalentThickness), - ReferencedLateralSpreadingDeviceNumber(copy.ReferencedLateralSpreadingDeviceNumber) -{ -} - - -DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::~Item() -{ -} - - -DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::operator=(const Item ©) -{ - if (this != ©) - { - EmptyDefaultItem = copy.EmptyDefaultItem; - IsocenterToLateralSpreadingDeviceDistance = copy.IsocenterToLateralSpreadingDeviceDistance; - LateralSpreadingDeviceSetting = copy.LateralSpreadingDeviceSetting; - LateralSpreadingDeviceWaterEquivalentThickness = copy.LateralSpreadingDeviceWaterEquivalentThickness; - ReferencedLateralSpreadingDeviceNumber = copy.ReferencedLateralSpreadingDeviceNumber; - } - return *this; -} - - -void DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::clear() -{ - if (!EmptyDefaultItem) - { - /* clear all DICOM attributes */ - ReferencedLateralSpreadingDeviceNumber.clear(); - LateralSpreadingDeviceSetting.clear(); - IsocenterToLateralSpreadingDeviceDistance.clear(); - LateralSpreadingDeviceWaterEquivalentThickness.clear(); - } -} - - -OFBool DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::isEmpty() -{ - return ReferencedLateralSpreadingDeviceNumber.isEmpty() && - LateralSpreadingDeviceSetting.isEmpty() && - IsocenterToLateralSpreadingDeviceDistance.isEmpty() && - LateralSpreadingDeviceWaterEquivalentThickness.isEmpty(); -} - - -OFBool DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::isValid() const -{ - return !EmptyDefaultItem; -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::read(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - /* re-initialize object */ - clear(); - getAndCheckElementFromDataset(item, ReferencedLateralSpreadingDeviceNumber, "1", "1", "LateralSpreadingDeviceSettingsSequence"); - getAndCheckElementFromDataset(item, LateralSpreadingDeviceSetting, "1", "1", "LateralSpreadingDeviceSettingsSequence"); - getAndCheckElementFromDataset(item, IsocenterToLateralSpreadingDeviceDistance, "1", "3", "LateralSpreadingDeviceSettingsSequence"); - getAndCheckElementFromDataset(item, LateralSpreadingDeviceWaterEquivalentThickness, "1", "3", "LateralSpreadingDeviceSettingsSequence"); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::write(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = EC_Normal; - addElementToDataset(result, item, new DcmIntegerString(ReferencedLateralSpreadingDeviceNumber), "1", "1", "LateralSpreadingDeviceSettingsSequence"); - addElementToDataset(result, item, new DcmLongString(LateralSpreadingDeviceSetting), "1", "1", "LateralSpreadingDeviceSettingsSequence"); - addElementToDataset(result, item, new DcmFloatingPointSingle(IsocenterToLateralSpreadingDeviceDistance), "1", "3", "LateralSpreadingDeviceSettingsSequence"); - addElementToDataset(result, item, new DcmFloatingPointSingle(LateralSpreadingDeviceWaterEquivalentThickness), "1", "3", "LateralSpreadingDeviceSettingsSequence"); - } - return result; -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::getIsocenterToLateralSpreadingDeviceDistance(Float32 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmFloatingPointSingle &, IsocenterToLateralSpreadingDeviceDistance).getFloat32(value, pos); -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::getLateralSpreadingDeviceSetting(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(LateralSpreadingDeviceSetting, value, pos); -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::getLateralSpreadingDeviceWaterEquivalentThickness(Float32 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmFloatingPointSingle &, LateralSpreadingDeviceWaterEquivalentThickness).getFloat32(value, pos); -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::getReferencedLateralSpreadingDeviceNumber(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ReferencedLateralSpreadingDeviceNumber, value, pos); -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::getReferencedLateralSpreadingDeviceNumber(Sint32 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmIntegerString &, ReferencedLateralSpreadingDeviceNumber).getSint32(value, pos); -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::setIsocenterToLateralSpreadingDeviceDistance(const Float32 value, const unsigned long pos) -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return IsocenterToLateralSpreadingDeviceDistance.putFloat32(value, pos); -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::setLateralSpreadingDeviceSetting(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = LateralSpreadingDeviceSetting.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::setLateralSpreadingDeviceWaterEquivalentThickness(const Float32 value, const unsigned long pos) -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return LateralSpreadingDeviceWaterEquivalentThickness.putFloat32(value, pos); -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::setReferencedLateralSpreadingDeviceNumber(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ReferencedLateralSpreadingDeviceNumber.putOFStringArray(value); - } - return result; -} - - -// --- sequence class --- - -DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence) - : EmptyDefaultSequence(emptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - CurrentItem = SequenceOfItems.end(); -} - - -DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule(const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule ©) - : EmptyDefaultSequence(copy.EmptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); -} - - -DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::operator=(const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule ©) -{ - if (this != ©) - { - clear(); - EmptyDefaultSequence = copy.EmptyDefaultSequence; - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); - } - return *this; -} - - -DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::~DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule() -{ - clear(); -} - - -void DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::clear() -{ - if (!EmptyDefaultSequence) - { - CurrentItem = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* delete all items and free memory */ - while (CurrentItem != last) - { - delete (*CurrentItem); - CurrentItem = SequenceOfItems.erase(CurrentItem); - } - /* make sure that the list is empty */ - SequenceOfItems.clear(); - CurrentItem = SequenceOfItems.end(); - } -} - - -OFBool DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::isEmpty() -{ - return SequenceOfItems.empty(); -} - - -OFBool DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::isValid() const -{ - return !EmptyDefaultSequence; -} - - -size_t DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getNumberOfItems() const -{ - return SequenceOfItems.size(); -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::gotoFirstItem() -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - CurrentItem = SequenceOfItems.begin(); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::gotoNextItem() -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - ++CurrentItem; - result = EC_Normal; - } - return result; -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num) -{ - return gotoItem(num, CurrentItem); -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getCurrentItem(Item *&item) const -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - item = *CurrentItem; - result = EC_Normal; - } - return result; -} - - -DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getCurrentItem() -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getCurrentItem() const -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item) -{ - OFListIterator(Item *) iterator; - OFCondition result = gotoItem(num, iterator); - if (result.good()) - item = *iterator; - return result; -} - - -DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getItem(const size_t num) -{ - OFListIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getItem(const size_t num) const -{ - OFListConstIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::operator[](const size_t num) -{ - return getItem(num); -} - - -const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::operator[](const size_t num) const -{ - return getItem(num); -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::addItem(Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.push_back(item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } - return result; -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - result = gotoItem(pos, iterator); - if (result.good()) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.insert(iterator, 1, item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } else - result = addItem(item); - } - return result; -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::removeItem(const size_t pos) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - if (gotoItem(pos, iterator).good()) - { - delete *iterator; - iterator = SequenceOfItems.erase(iterator); - result = EC_Normal; - } else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - /* re-initialize object */ - clear(); - /* retrieve sequence element from dataset */ - DcmSequenceOfItems *sequence; - result = dataset.findAndGetSequence(DCM_LateralSpreadingDeviceSettingsSequence, sequence); - if (sequence != NULL) - { - if (checkElementValue(*sequence, card, type, result, moduleName)) - { - DcmStack stack; - OFBool first = OFTrue; - /* iterate over all sequence items */ - while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) - { - DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); - if (ditem != NULL) - { - Item *item = new Item(); - if (item != NULL) - { - result = item->read(*ditem); - if (result.good()) - { - /* append new item to the end of the list */ - SequenceOfItems.push_back(item); - first = OFFalse; - } - } else - result = EC_MemoryExhausted; - } else - result = EC_CorruptedData; - } - } - } else { - DcmSequenceOfItems element(DCM_LateralSpreadingDeviceSettingsSequence); - checkElementValue(element, card, type, result, moduleName); - } - } - return result; -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - result = EC_MemoryExhausted; - DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_LateralSpreadingDeviceSettingsSequence); - if (sequence != NULL) - { - result = EC_Normal; - /* an empty optional sequence is not written */ - if ((type == "2") || !SequenceOfItems.empty()) - { - OFListIterator(Item *) iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* iterate over all sequence items */ - while (result.good() && (iterator != last)) - { - DcmItem *item = new DcmItem(); - if (item != NULL) - { - /* append new item to the end of the sequence */ - result = sequence->append(item); - if (result.good()) - { - result = (*iterator)->write(*item); - ++iterator; - } else - delete item; - } else - result = EC_MemoryExhausted; - } - if (result.good()) - { - /* insert sequence element into the dataset */ - result = dataset.insert(sequence, OFTrue /*replaceOld*/); - } - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - if (result.good()) - { - /* forget reference to sequence object (avoid deletion below) */ - sequence = NULL; - } - } - else if (type == "1") - { - /* empty type 1 sequence not allowed */ - result = RT_EC_InvalidValue; - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - } - /* delete sequence (if not inserted into the dataset) */ - delete sequence; - } - } - return result; -} - - -// end of source file diff --git a/dcmrt/libsrc/drtlsds7.cc b/dcmrt/libsrc/drtlsds7.cc deleted file mode 100644 index a008d3c0..00000000 --- a/dcmrt/libsrc/drtlsds7.cc +++ /dev/null @@ -1,582 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Source file for class DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/dcmrt/seq/drtlsds7.h" - - -// --- item class --- - -DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::Item(const OFBool emptyDefaultItem) - : EmptyDefaultItem(emptyDefaultItem), - LateralSpreadingDeviceSetting(DCM_LateralSpreadingDeviceSetting), - ReferencedLateralSpreadingDeviceNumber(DCM_ReferencedLateralSpreadingDeviceNumber) -{ -} - - -DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::Item(const Item ©) - : EmptyDefaultItem(copy.EmptyDefaultItem), - LateralSpreadingDeviceSetting(copy.LateralSpreadingDeviceSetting), - ReferencedLateralSpreadingDeviceNumber(copy.ReferencedLateralSpreadingDeviceNumber) -{ -} - - -DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::~Item() -{ -} - - -DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::operator=(const Item ©) -{ - if (this != ©) - { - EmptyDefaultItem = copy.EmptyDefaultItem; - LateralSpreadingDeviceSetting = copy.LateralSpreadingDeviceSetting; - ReferencedLateralSpreadingDeviceNumber = copy.ReferencedLateralSpreadingDeviceNumber; - } - return *this; -} - - -void DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::clear() -{ - if (!EmptyDefaultItem) - { - /* clear all DICOM attributes */ - ReferencedLateralSpreadingDeviceNumber.clear(); - LateralSpreadingDeviceSetting.clear(); - } -} - - -OFBool DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::isEmpty() -{ - return ReferencedLateralSpreadingDeviceNumber.isEmpty() && - LateralSpreadingDeviceSetting.isEmpty(); -} - - -OFBool DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::isValid() const -{ - return !EmptyDefaultItem; -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::read(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - /* re-initialize object */ - clear(); - getAndCheckElementFromDataset(item, ReferencedLateralSpreadingDeviceNumber, "1", "1", "LateralSpreadingDeviceSettingsSequence"); - getAndCheckElementFromDataset(item, LateralSpreadingDeviceSetting, "1", "1", "LateralSpreadingDeviceSettingsSequence"); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::write(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = EC_Normal; - addElementToDataset(result, item, new DcmIntegerString(ReferencedLateralSpreadingDeviceNumber), "1", "1", "LateralSpreadingDeviceSettingsSequence"); - addElementToDataset(result, item, new DcmLongString(LateralSpreadingDeviceSetting), "1", "1", "LateralSpreadingDeviceSettingsSequence"); - } - return result; -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getLateralSpreadingDeviceSetting(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(LateralSpreadingDeviceSetting, value, pos); -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getReferencedLateralSpreadingDeviceNumber(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ReferencedLateralSpreadingDeviceNumber, value, pos); -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getReferencedLateralSpreadingDeviceNumber(Sint32 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmIntegerString &, ReferencedLateralSpreadingDeviceNumber).getSint32(value, pos); -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::setLateralSpreadingDeviceSetting(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = LateralSpreadingDeviceSetting.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::setReferencedLateralSpreadingDeviceNumber(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ReferencedLateralSpreadingDeviceNumber.putOFStringArray(value); - } - return result; -} - - -// --- sequence class --- - -DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence) - : EmptyDefaultSequence(emptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - CurrentItem = SequenceOfItems.end(); -} - - -DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule(const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule ©) - : EmptyDefaultSequence(copy.EmptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); -} - - -DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::operator=(const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule ©) -{ - if (this != ©) - { - clear(); - EmptyDefaultSequence = copy.EmptyDefaultSequence; - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); - } - return *this; -} - - -DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::~DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule() -{ - clear(); -} - - -void DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::clear() -{ - if (!EmptyDefaultSequence) - { - CurrentItem = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* delete all items and free memory */ - while (CurrentItem != last) - { - delete (*CurrentItem); - CurrentItem = SequenceOfItems.erase(CurrentItem); - } - /* make sure that the list is empty */ - SequenceOfItems.clear(); - CurrentItem = SequenceOfItems.end(); - } -} - - -OFBool DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::isEmpty() -{ - return SequenceOfItems.empty(); -} - - -OFBool DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::isValid() const -{ - return !EmptyDefaultSequence; -} - - -size_t DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getNumberOfItems() const -{ - return SequenceOfItems.size(); -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::gotoFirstItem() -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - CurrentItem = SequenceOfItems.begin(); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::gotoNextItem() -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - ++CurrentItem; - result = EC_Normal; - } - return result; -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num) -{ - return gotoItem(num, CurrentItem); -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem(Item *&item) const -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - item = *CurrentItem; - result = EC_Normal; - } - return result; -} - - -DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem() -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem() const -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num, Item *&item) -{ - OFListIterator(Item *) iterator; - OFCondition result = gotoItem(num, iterator); - if (result.good()) - item = *iterator; - return result; -} - - -DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) -{ - OFListIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) const -{ - OFListConstIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) -{ - return getItem(num); -} - - -const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) const -{ - return getItem(num); -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::addItem(Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.push_back(item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } - return result; -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::insertItem(const size_t pos, Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - result = gotoItem(pos, iterator); - if (result.good()) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.insert(iterator, 1, item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } else - result = addItem(item); - } - return result; -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::removeItem(const size_t pos) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - if (gotoItem(pos, iterator).good()) - { - delete *iterator; - iterator = SequenceOfItems.erase(iterator); - result = EC_Normal; - } else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - /* re-initialize object */ - clear(); - /* retrieve sequence element from dataset */ - DcmSequenceOfItems *sequence; - result = dataset.findAndGetSequence(DCM_LateralSpreadingDeviceSettingsSequence, sequence); - if (sequence != NULL) - { - if (checkElementValue(*sequence, card, type, result, moduleName)) - { - DcmStack stack; - OFBool first = OFTrue; - /* iterate over all sequence items */ - while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) - { - DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); - if (ditem != NULL) - { - Item *item = new Item(); - if (item != NULL) - { - result = item->read(*ditem); - if (result.good()) - { - /* append new item to the end of the list */ - SequenceOfItems.push_back(item); - first = OFFalse; - } - } else - result = EC_MemoryExhausted; - } else - result = EC_CorruptedData; - } - } - } else { - DcmSequenceOfItems element(DCM_LateralSpreadingDeviceSettingsSequence); - checkElementValue(element, card, type, result, moduleName); - } - } - return result; -} - - -OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - result = EC_MemoryExhausted; - DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_LateralSpreadingDeviceSettingsSequence); - if (sequence != NULL) - { - result = EC_Normal; - /* an empty optional sequence is not written */ - if ((type == "2") || !SequenceOfItems.empty()) - { - OFListIterator(Item *) iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* iterate over all sequence items */ - while (result.good() && (iterator != last)) - { - DcmItem *item = new DcmItem(); - if (item != NULL) - { - /* append new item to the end of the sequence */ - result = sequence->append(item); - if (result.good()) - { - result = (*iterator)->write(*item); - ++iterator; - } else - delete item; - } else - result = EC_MemoryExhausted; - } - if (result.good()) - { - /* insert sequence element into the dataset */ - result = dataset.insert(sequence, OFTrue /*replaceOld*/); - } - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - if (result.good()) - { - /* forget reference to sequence object (avoid deletion below) */ - sequence = NULL; - } - } - else if (type == "1") - { - /* empty type 1 sequence not allowed */ - result = RT_EC_InvalidValue; - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - } - /* delete sequence (if not inserted into the dataset) */ - delete sequence; - } - } - return result; -} - - -// end of source file diff --git a/dcmrt/libsrc/drtmacds.cc b/dcmrt/libsrc/drtmacds.cc index 7e2481ca..15759087 100644 --- a/dcmrt/libsrc/drtmacds.cc +++ b/dcmrt/libsrc/drtmacds.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTMultiplexedAudioChannelsDescriptionCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -288,10 +288,12 @@ OFCondition DRTMultiplexedAudioChannelsDescriptionCodeSequence::gotoFirstItem() OFCondition DRTMultiplexedAudioChannelsDescriptionCodeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtmas.cc b/dcmrt/libsrc/drtmas.cc index 001eba23..46229fb6 100644 --- a/dcmrt/libsrc/drtmas.cc +++ b/dcmrt/libsrc/drtmas.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTModifiedAttributesSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -219,10 +219,12 @@ OFCondition DRTModifiedAttributesSequence::gotoFirstItem() OFCondition DRTModifiedAttributesSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtmdrs.cc b/dcmrt/libsrc/drtmdrs.cc index 931c0022..77cff149 100644 --- a/dcmrt/libsrc/drtmdrs.cc +++ b/dcmrt/libsrc/drtmdrs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTMeasuredDoseReferenceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -415,10 +415,12 @@ OFCondition DRTMeasuredDoseReferenceSequence::gotoFirstItem() OFCondition DRTMeasuredDoseReferenceSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtmls.cc b/dcmrt/libsrc/drtmls.cc index 81856075..bbdf4963 100644 --- a/dcmrt/libsrc/drtmls.cc +++ b/dcmrt/libsrc/drtmls.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTModalityLUTSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -332,10 +332,12 @@ OFCondition DRTModalityLUTSequence::gotoFirstItem() OFCondition DRTModalityLUTSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtmps.cc b/dcmrt/libsrc/drtmps.cc index b9d4dc39..b11e5097 100644 --- a/dcmrt/libsrc/drtmps.cc +++ b/dcmrt/libsrc/drtmps.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTMACParametersSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -326,10 +326,12 @@ OFCondition DRTMACParametersSequence::gotoFirstItem() OFCondition DRTMACParametersSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtmris.cc b/dcmrt/libsrc/drtmris.cc index 731eb7a4..a7277386 100644 --- a/dcmrt/libsrc/drtmris.cc +++ b/dcmrt/libsrc/drtmris.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTMappingResourceIdentificationSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -301,10 +301,12 @@ OFCondition DRTMappingResourceIdentificationSequence::gotoFirstItem() OFCondition DRTMappingResourceIdentificationSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtmss.cc b/dcmrt/libsrc/drtmss.cc index 10b18c7e..48fa0088 100644 --- a/dcmrt/libsrc/drtmss.cc +++ b/dcmrt/libsrc/drtmss.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTMotionSynchronizationSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -330,10 +330,12 @@ OFCondition DRTMotionSynchronizationSequence::gotoFirstItem() OFCondition DRTMotionSynchronizationSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtmttcs.cc b/dcmrt/libsrc/drtmttcs.cc new file mode 100644 index 00000000..c44fbce1 --- /dev/null +++ b/dcmrt/libsrc/drtmttcs.cc @@ -0,0 +1,959 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTMachineSpecificTreatmentTerminationCodeSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtmttcs.h" + + +// --- item class --- + +DRTMachineSpecificTreatmentTerminationCodeSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + CodeMeaning(DCM_CodeMeaning), + CodeValue(DCM_CodeValue), + CodingSchemeDesignator(DCM_CodingSchemeDesignator), + CodingSchemeVersion(DCM_CodingSchemeVersion), + ContextGroupExtensionCreatorUID(DCM_ContextGroupExtensionCreatorUID), + ContextGroupExtensionFlag(DCM_ContextGroupExtensionFlag), + ContextGroupLocalVersion(DCM_ContextGroupLocalVersion), + ContextGroupVersion(DCM_ContextGroupVersion), + ContextIdentifier(DCM_ContextIdentifier), + ContextUID(DCM_ContextUID), + EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), + LongCodeValue(DCM_LongCodeValue), + MappingResource(DCM_MappingResource), + MappingResourceName(DCM_MappingResourceName), + MappingResourceUID(DCM_MappingResourceUID), + URNCodeValue(DCM_URNCodeValue) +{ +} + + +DRTMachineSpecificTreatmentTerminationCodeSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + CodeMeaning(copy.CodeMeaning), + CodeValue(copy.CodeValue), + CodingSchemeDesignator(copy.CodingSchemeDesignator), + CodingSchemeVersion(copy.CodingSchemeVersion), + ContextGroupExtensionCreatorUID(copy.ContextGroupExtensionCreatorUID), + ContextGroupExtensionFlag(copy.ContextGroupExtensionFlag), + ContextGroupLocalVersion(copy.ContextGroupLocalVersion), + ContextGroupVersion(copy.ContextGroupVersion), + ContextIdentifier(copy.ContextIdentifier), + ContextUID(copy.ContextUID), + EquivalentCodeSequence(copy.EquivalentCodeSequence), + LongCodeValue(copy.LongCodeValue), + MappingResource(copy.MappingResource), + MappingResourceName(copy.MappingResourceName), + MappingResourceUID(copy.MappingResourceUID), + URNCodeValue(copy.URNCodeValue) +{ +} + + +DRTMachineSpecificTreatmentTerminationCodeSequence::Item::~Item() +{ +} + + +DRTMachineSpecificTreatmentTerminationCodeSequence::Item &DRTMachineSpecificTreatmentTerminationCodeSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + CodeMeaning = copy.CodeMeaning; + CodeValue = copy.CodeValue; + CodingSchemeDesignator = copy.CodingSchemeDesignator; + CodingSchemeVersion = copy.CodingSchemeVersion; + ContextGroupExtensionCreatorUID = copy.ContextGroupExtensionCreatorUID; + ContextGroupExtensionFlag = copy.ContextGroupExtensionFlag; + ContextGroupLocalVersion = copy.ContextGroupLocalVersion; + ContextGroupVersion = copy.ContextGroupVersion; + ContextIdentifier = copy.ContextIdentifier; + ContextUID = copy.ContextUID; + EquivalentCodeSequence = copy.EquivalentCodeSequence; + LongCodeValue = copy.LongCodeValue; + MappingResource = copy.MappingResource; + MappingResourceName = copy.MappingResourceName; + MappingResourceUID = copy.MappingResourceUID; + URNCodeValue = copy.URNCodeValue; + } + return *this; +} + + +void DRTMachineSpecificTreatmentTerminationCodeSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + CodeValue.clear(); + CodingSchemeDesignator.clear(); + CodingSchemeVersion.clear(); + CodeMeaning.clear(); + LongCodeValue.clear(); + URNCodeValue.clear(); + EquivalentCodeSequence.clear(); + ContextIdentifier.clear(); + ContextUID.clear(); + MappingResource.clear(); + MappingResourceUID.clear(); + MappingResourceName.clear(); + ContextGroupVersion.clear(); + ContextGroupExtensionFlag.clear(); + ContextGroupLocalVersion.clear(); + ContextGroupExtensionCreatorUID.clear(); + } +} + + +OFBool DRTMachineSpecificTreatmentTerminationCodeSequence::Item::isEmpty() +{ + return CodeValue.isEmpty() && + CodingSchemeDesignator.isEmpty() && + CodingSchemeVersion.isEmpty() && + CodeMeaning.isEmpty() && + LongCodeValue.isEmpty() && + URNCodeValue.isEmpty() && + EquivalentCodeSequence.isEmpty() && + ContextIdentifier.isEmpty() && + ContextUID.isEmpty() && + MappingResource.isEmpty() && + MappingResourceUID.isEmpty() && + MappingResourceName.isEmpty() && + ContextGroupVersion.isEmpty() && + ContextGroupExtensionFlag.isEmpty() && + ContextGroupLocalVersion.isEmpty() && + ContextGroupExtensionCreatorUID.isEmpty(); +} + + +OFBool DRTMachineSpecificTreatmentTerminationCodeSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence"); + getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence"); + getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence"); + getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "MachineSpecificTreatmentTerminationCodeSequence"); + getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence"); + getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence"); + EquivalentCodeSequence.read(item, "1-n", "3", "MachineSpecificTreatmentTerminationCodeSequence"); + getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "MachineSpecificTreatmentTerminationCodeSequence"); + getAndCheckElementFromDataset(item, ContextUID, "1", "3", "MachineSpecificTreatmentTerminationCodeSequence"); + getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence"); + getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "MachineSpecificTreatmentTerminationCodeSequence"); + getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "MachineSpecificTreatmentTerminationCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "MachineSpecificTreatmentTerminationCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence"); + addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence"); + addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence"); + addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "MachineSpecificTreatmentTerminationCodeSequence"); + addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence"); + addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence"); + if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "MachineSpecificTreatmentTerminationCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "MachineSpecificTreatmentTerminationCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "MachineSpecificTreatmentTerminationCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "MachineSpecificTreatmentTerminationCodeSequence"); + addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "MachineSpecificTreatmentTerminationCodeSequence"); + addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "MachineSpecificTreatmentTerminationCodeSequence"); + addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence"); + } + return result; +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodeMeaning, value, pos); +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::getCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodeValue, value, pos); +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodingSchemeDesignator, value, pos); +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodingSchemeVersion, value, pos); +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupExtensionCreatorUID, value, pos); +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupExtensionFlag, value, pos); +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupLocalVersion, value, pos); +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupVersion, value, pos); +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextIdentifier, value, pos); +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::getContextUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextUID, value, pos); +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(LongCodeValue, value, pos); +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResource, value, pos); +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResourceName, value, pos); +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResourceUID, value, pos); +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(URNCodeValue, value, pos); +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodeMeaning.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::setCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodeValue.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodingSchemeDesignator.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodingSchemeVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupExtensionCreatorUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupExtensionFlag.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupLocalVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::setContextIdentifier(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextIdentifier.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::setContextUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = LongCodeValue.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResource.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResourceName.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResourceUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal; + if (result.good()) + result = URNCodeValue.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTMachineSpecificTreatmentTerminationCodeSequence::DRTMachineSpecificTreatmentTerminationCodeSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTMachineSpecificTreatmentTerminationCodeSequence::DRTMachineSpecificTreatmentTerminationCodeSequence(const DRTMachineSpecificTreatmentTerminationCodeSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTMachineSpecificTreatmentTerminationCodeSequence &DRTMachineSpecificTreatmentTerminationCodeSequence::operator=(const DRTMachineSpecificTreatmentTerminationCodeSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTMachineSpecificTreatmentTerminationCodeSequence::~DRTMachineSpecificTreatmentTerminationCodeSequence() +{ + clear(); +} + + +void DRTMachineSpecificTreatmentTerminationCodeSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTMachineSpecificTreatmentTerminationCodeSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTMachineSpecificTreatmentTerminationCodeSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTMachineSpecificTreatmentTerminationCodeSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTMachineSpecificTreatmentTerminationCodeSequence::Item &DRTMachineSpecificTreatmentTerminationCodeSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTMachineSpecificTreatmentTerminationCodeSequence::Item &DRTMachineSpecificTreatmentTerminationCodeSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTMachineSpecificTreatmentTerminationCodeSequence::Item &DRTMachineSpecificTreatmentTerminationCodeSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTMachineSpecificTreatmentTerminationCodeSequence::Item &DRTMachineSpecificTreatmentTerminationCodeSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTMachineSpecificTreatmentTerminationCodeSequence::Item &DRTMachineSpecificTreatmentTerminationCodeSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTMachineSpecificTreatmentTerminationCodeSequence::Item &DRTMachineSpecificTreatmentTerminationCodeSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_MachineSpecificTreatmentTerminationCodeSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_MachineSpecificTreatmentTerminationCodeSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_MachineSpecificTreatmentTerminationCodeSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtmucs.cc b/dcmrt/libsrc/drtmucs.cc index d3e1f6ba..770dae41 100644 --- a/dcmrt/libsrc/drtmucs.cc +++ b/dcmrt/libsrc/drtmucs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTMeasurementUnitsCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -656,10 +656,12 @@ OFCondition DRTMeasurementUnitsCodeSequence::gotoFirstItem() OFCondition DRTMeasurementUnitsCodeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtnmas.cc b/dcmrt/libsrc/drtnmas.cc new file mode 100644 index 00000000..5bbc7767 --- /dev/null +++ b/dcmrt/libsrc/drtnmas.cc @@ -0,0 +1,731 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTNonconformingModifiedAttributesSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtnmas.h" + + +// --- item class --- + +DRTNonconformingModifiedAttributesSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + NonconformingDataElementValue(DCM_NonconformingDataElementValue), + SelectorAttribute(DCM_SelectorAttribute), + SelectorAttributePrivateCreator(DCM_SelectorAttributePrivateCreator), + SelectorSequencePointer(DCM_SelectorSequencePointer), + SelectorSequencePointerItems(DCM_SelectorSequencePointerItems), + SelectorSequencePointerPrivateCreator(DCM_SelectorSequencePointerPrivateCreator), + SelectorValueNumber(DCM_SelectorValueNumber) +{ +} + + +DRTNonconformingModifiedAttributesSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + NonconformingDataElementValue(copy.NonconformingDataElementValue), + SelectorAttribute(copy.SelectorAttribute), + SelectorAttributePrivateCreator(copy.SelectorAttributePrivateCreator), + SelectorSequencePointer(copy.SelectorSequencePointer), + SelectorSequencePointerItems(copy.SelectorSequencePointerItems), + SelectorSequencePointerPrivateCreator(copy.SelectorSequencePointerPrivateCreator), + SelectorValueNumber(copy.SelectorValueNumber) +{ +} + + +DRTNonconformingModifiedAttributesSequence::Item::~Item() +{ +} + + +DRTNonconformingModifiedAttributesSequence::Item &DRTNonconformingModifiedAttributesSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + NonconformingDataElementValue = copy.NonconformingDataElementValue; + SelectorAttribute = copy.SelectorAttribute; + SelectorAttributePrivateCreator = copy.SelectorAttributePrivateCreator; + SelectorSequencePointer = copy.SelectorSequencePointer; + SelectorSequencePointerItems = copy.SelectorSequencePointerItems; + SelectorSequencePointerPrivateCreator = copy.SelectorSequencePointerPrivateCreator; + SelectorValueNumber = copy.SelectorValueNumber; + } + return *this; +} + + +void DRTNonconformingModifiedAttributesSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + SelectorAttribute.clear(); + SelectorValueNumber.clear(); + SelectorSequencePointer.clear(); + SelectorSequencePointerPrivateCreator.clear(); + SelectorSequencePointerItems.clear(); + SelectorAttributePrivateCreator.clear(); + NonconformingDataElementValue.clear(); + } +} + + +OFBool DRTNonconformingModifiedAttributesSequence::Item::isEmpty() +{ + return SelectorAttribute.isEmpty() && + SelectorValueNumber.isEmpty() && + SelectorSequencePointer.isEmpty() && + SelectorSequencePointerPrivateCreator.isEmpty() && + SelectorSequencePointerItems.isEmpty() && + SelectorAttributePrivateCreator.isEmpty() && + NonconformingDataElementValue.isEmpty(); +} + + +OFBool DRTNonconformingModifiedAttributesSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTNonconformingModifiedAttributesSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, SelectorAttribute, "1", "1C", "NonconformingModifiedAttributesSequence"); + getAndCheckElementFromDataset(item, SelectorValueNumber, "1", "1C", "NonconformingModifiedAttributesSequence"); + getAndCheckElementFromDataset(item, SelectorSequencePointer, "1-n", "1C", "NonconformingModifiedAttributesSequence"); + getAndCheckElementFromDataset(item, SelectorSequencePointerPrivateCreator, "1-n", "1C", "NonconformingModifiedAttributesSequence"); + getAndCheckElementFromDataset(item, SelectorSequencePointerItems, "1-n", "1C", "NonconformingModifiedAttributesSequence"); + getAndCheckElementFromDataset(item, SelectorAttributePrivateCreator, "1", "1C", "NonconformingModifiedAttributesSequence"); + getAndCheckElementFromDataset(item, NonconformingDataElementValue, "1", "1", "NonconformingModifiedAttributesSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTNonconformingModifiedAttributesSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmAttributeTag(SelectorAttribute), "1", "1C", "NonconformingModifiedAttributesSequence"); + addElementToDataset(result, item, new DcmUnsignedShort(SelectorValueNumber), "1", "1C", "NonconformingModifiedAttributesSequence"); + addElementToDataset(result, item, new DcmAttributeTag(SelectorSequencePointer), "1-n", "1C", "NonconformingModifiedAttributesSequence"); + addElementToDataset(result, item, new DcmLongString(SelectorSequencePointerPrivateCreator), "1-n", "1C", "NonconformingModifiedAttributesSequence"); + addElementToDataset(result, item, new DcmIntegerString(SelectorSequencePointerItems), "1-n", "1C", "NonconformingModifiedAttributesSequence"); + addElementToDataset(result, item, new DcmLongString(SelectorAttributePrivateCreator), "1", "1C", "NonconformingModifiedAttributesSequence"); + addElementToDataset(result, item, new DcmOtherByteOtherWord(NonconformingDataElementValue), "1", "1", "NonconformingModifiedAttributesSequence"); + } + return result; +} + + +OFCondition DRTNonconformingModifiedAttributesSequence::Item::getNonconformingDataElementValue(Uint8 *&value, unsigned long *count) const +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = OFconst_cast(DcmOtherByteOtherWord &, NonconformingDataElementValue).getUint8Array(value); + /* set optional count parameter */ + if (count != NULL) + { + if (result.good()) + *count = OFconst_cast(DcmOtherByteOtherWord &, NonconformingDataElementValue).getLength() / sizeof(Uint8); + else + *count = 0; + } + } + return result; +} + + +OFCondition DRTNonconformingModifiedAttributesSequence::Item::getSelectorAttribute(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(SelectorAttribute, value, pos); +} + + +OFCondition DRTNonconformingModifiedAttributesSequence::Item::getSelectorAttributePrivateCreator(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(SelectorAttributePrivateCreator, value, pos); +} + + +OFCondition DRTNonconformingModifiedAttributesSequence::Item::getSelectorSequencePointer(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(SelectorSequencePointer, value, pos); +} + + +OFCondition DRTNonconformingModifiedAttributesSequence::Item::getSelectorSequencePointerItems(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(SelectorSequencePointerItems, value, pos); +} + + +OFCondition DRTNonconformingModifiedAttributesSequence::Item::getSelectorSequencePointerItems(Sint32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmIntegerString &, SelectorSequencePointerItems).getSint32(value, pos); +} + + +OFCondition DRTNonconformingModifiedAttributesSequence::Item::getSelectorSequencePointerPrivateCreator(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(SelectorSequencePointerPrivateCreator, value, pos); +} + + +OFCondition DRTNonconformingModifiedAttributesSequence::Item::getSelectorValueNumber(Uint16 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmUnsignedShort &, SelectorValueNumber).getUint16(value, pos); +} + + +OFCondition DRTNonconformingModifiedAttributesSequence::Item::setNonconformingDataElementValue(const Uint8 *value, const unsigned long count) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return NonconformingDataElementValue.putUint8Array(value, count); +} + + +OFCondition DRTNonconformingModifiedAttributesSequence::Item::setSelectorAttribute(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmAttributeTag::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = SelectorAttribute.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTNonconformingModifiedAttributesSequence::Item::setSelectorAttributePrivateCreator(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = SelectorAttributePrivateCreator.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTNonconformingModifiedAttributesSequence::Item::setSelectorSequencePointer(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmAttributeTag::checkStringValue(value, "1-n") : EC_Normal; + if (result.good()) + result = SelectorSequencePointer.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTNonconformingModifiedAttributesSequence::Item::setSelectorSequencePointerItems(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmIntegerString::checkStringValue(value, "1-n") : EC_Normal; + if (result.good()) + result = SelectorSequencePointerItems.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTNonconformingModifiedAttributesSequence::Item::setSelectorSequencePointerPrivateCreator(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1-n") : EC_Normal; + if (result.good()) + result = SelectorSequencePointerPrivateCreator.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTNonconformingModifiedAttributesSequence::Item::setSelectorValueNumber(const Uint16 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return SelectorValueNumber.putUint16(value, pos); +} + + +// --- sequence class --- + +DRTNonconformingModifiedAttributesSequence::DRTNonconformingModifiedAttributesSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTNonconformingModifiedAttributesSequence::DRTNonconformingModifiedAttributesSequence(const DRTNonconformingModifiedAttributesSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTNonconformingModifiedAttributesSequence &DRTNonconformingModifiedAttributesSequence::operator=(const DRTNonconformingModifiedAttributesSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTNonconformingModifiedAttributesSequence::~DRTNonconformingModifiedAttributesSequence() +{ + clear(); +} + + +void DRTNonconformingModifiedAttributesSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTNonconformingModifiedAttributesSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTNonconformingModifiedAttributesSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTNonconformingModifiedAttributesSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTNonconformingModifiedAttributesSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTNonconformingModifiedAttributesSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTNonconformingModifiedAttributesSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTNonconformingModifiedAttributesSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTNonconformingModifiedAttributesSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTNonconformingModifiedAttributesSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTNonconformingModifiedAttributesSequence::Item &DRTNonconformingModifiedAttributesSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTNonconformingModifiedAttributesSequence::Item &DRTNonconformingModifiedAttributesSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTNonconformingModifiedAttributesSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTNonconformingModifiedAttributesSequence::Item &DRTNonconformingModifiedAttributesSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTNonconformingModifiedAttributesSequence::Item &DRTNonconformingModifiedAttributesSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTNonconformingModifiedAttributesSequence::Item &DRTNonconformingModifiedAttributesSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTNonconformingModifiedAttributesSequence::Item &DRTNonconformingModifiedAttributesSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTNonconformingModifiedAttributesSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTNonconformingModifiedAttributesSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTNonconformingModifiedAttributesSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTNonconformingModifiedAttributesSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_NonconformingModifiedAttributesSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_NonconformingModifiedAttributesSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTNonconformingModifiedAttributesSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_NonconformingModifiedAttributesSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtoas.cc b/dcmrt/libsrc/drtoas.cc index 5260165e..70c4adb8 100644 --- a/dcmrt/libsrc/drtoas.cc +++ b/dcmrt/libsrc/drtoas.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTOriginalAttributesSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -24,6 +24,7 @@ DRTOriginalAttributesSequence::Item::Item(const OFBool emptyDefaultItem) AttributeModificationDateTime(DCM_AttributeModificationDateTime), ModifiedAttributesSequence(emptyDefaultItem /*emptyDefaultSequence*/), ModifyingSystem(DCM_ModifyingSystem), + NonconformingModifiedAttributesSequence(emptyDefaultItem /*emptyDefaultSequence*/), ReasonForTheAttributeModification(DCM_ReasonForTheAttributeModification), SourceOfPreviousValues(DCM_SourceOfPreviousValues) { @@ -35,6 +36,7 @@ DRTOriginalAttributesSequence::Item::Item(const Item ©) AttributeModificationDateTime(copy.AttributeModificationDateTime), ModifiedAttributesSequence(copy.ModifiedAttributesSequence), ModifyingSystem(copy.ModifyingSystem), + NonconformingModifiedAttributesSequence(copy.NonconformingModifiedAttributesSequence), ReasonForTheAttributeModification(copy.ReasonForTheAttributeModification), SourceOfPreviousValues(copy.SourceOfPreviousValues) { @@ -54,6 +56,7 @@ DRTOriginalAttributesSequence::Item &DRTOriginalAttributesSequence::Item::operat AttributeModificationDateTime = copy.AttributeModificationDateTime; ModifiedAttributesSequence = copy.ModifiedAttributesSequence; ModifyingSystem = copy.ModifyingSystem; + NonconformingModifiedAttributesSequence = copy.NonconformingModifiedAttributesSequence; ReasonForTheAttributeModification = copy.ReasonForTheAttributeModification; SourceOfPreviousValues = copy.SourceOfPreviousValues; } @@ -71,6 +74,7 @@ void DRTOriginalAttributesSequence::Item::clear() ModifyingSystem.clear(); ReasonForTheAttributeModification.clear(); ModifiedAttributesSequence.clear(); + NonconformingModifiedAttributesSequence.clear(); } } @@ -81,7 +85,8 @@ OFBool DRTOriginalAttributesSequence::Item::isEmpty() AttributeModificationDateTime.isEmpty() && ModifyingSystem.isEmpty() && ReasonForTheAttributeModification.isEmpty() && - ModifiedAttributesSequence.isEmpty(); + ModifiedAttributesSequence.isEmpty() && + NonconformingModifiedAttributesSequence.isEmpty(); } @@ -103,6 +108,7 @@ OFCondition DRTOriginalAttributesSequence::Item::read(DcmItem &item) getAndCheckElementFromDataset(item, ModifyingSystem, "1", "1", "OriginalAttributesSequence"); getAndCheckElementFromDataset(item, ReasonForTheAttributeModification, "1", "1", "OriginalAttributesSequence"); ModifiedAttributesSequence.read(item, "1-n", "1", "OriginalAttributesSequence"); + NonconformingModifiedAttributesSequence.read(item, "1-n", "3", "OriginalAttributesSequence"); result = EC_Normal; } return result; @@ -120,6 +126,7 @@ OFCondition DRTOriginalAttributesSequence::Item::write(DcmItem &item) addElementToDataset(result, item, new DcmLongString(ModifyingSystem), "1", "1", "OriginalAttributesSequence"); addElementToDataset(result, item, new DcmCodeString(ReasonForTheAttributeModification), "1", "1", "OriginalAttributesSequence"); if (result.good()) result = ModifiedAttributesSequence.write(item, "1-n", "1", "OriginalAttributesSequence"); + if (result.good()) result = NonconformingModifiedAttributesSequence.write(item, "1-n", "3", "OriginalAttributesSequence"); } return result; } @@ -337,10 +344,12 @@ OFCondition DRTOriginalAttributesSequence::gotoFirstItem() OFCondition DRTOriginalAttributesSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtois.cc b/dcmrt/libsrc/drtois.cc index 5b543397..ffd54e70 100644 --- a/dcmrt/libsrc/drtois.cc +++ b/dcmrt/libsrc/drtois.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTOperatorIdentificationSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -24,6 +24,8 @@ DRTOperatorIdentificationSequence::Item::Item(const OFBool emptyDefaultItem) InstitutionAddress(DCM_InstitutionAddress), InstitutionCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), InstitutionName(DCM_InstitutionName), + InstitutionalDepartmentName(DCM_InstitutionalDepartmentName), + InstitutionalDepartmentTypeCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), PersonAddress(DCM_PersonAddress), PersonIdentificationCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), PersonTelecomInformation(DCM_PersonTelecomInformation), @@ -37,6 +39,8 @@ DRTOperatorIdentificationSequence::Item::Item(const Item ©) InstitutionAddress(copy.InstitutionAddress), InstitutionCodeSequence(copy.InstitutionCodeSequence), InstitutionName(copy.InstitutionName), + InstitutionalDepartmentName(copy.InstitutionalDepartmentName), + InstitutionalDepartmentTypeCodeSequence(copy.InstitutionalDepartmentTypeCodeSequence), PersonAddress(copy.PersonAddress), PersonIdentificationCodeSequence(copy.PersonIdentificationCodeSequence), PersonTelecomInformation(copy.PersonTelecomInformation), @@ -58,6 +62,8 @@ DRTOperatorIdentificationSequence::Item &DRTOperatorIdentificationSequence::Item InstitutionAddress = copy.InstitutionAddress; InstitutionCodeSequence = copy.InstitutionCodeSequence; InstitutionName = copy.InstitutionName; + InstitutionalDepartmentName = copy.InstitutionalDepartmentName; + InstitutionalDepartmentTypeCodeSequence = copy.InstitutionalDepartmentTypeCodeSequence; PersonAddress = copy.PersonAddress; PersonIdentificationCodeSequence = copy.PersonIdentificationCodeSequence; PersonTelecomInformation = copy.PersonTelecomInformation; @@ -79,6 +85,8 @@ void DRTOperatorIdentificationSequence::Item::clear() InstitutionName.clear(); InstitutionAddress.clear(); InstitutionCodeSequence.clear(); + InstitutionalDepartmentName.clear(); + InstitutionalDepartmentTypeCodeSequence.clear(); } } @@ -91,7 +99,9 @@ OFBool DRTOperatorIdentificationSequence::Item::isEmpty() PersonTelecomInformation.isEmpty() && InstitutionName.isEmpty() && InstitutionAddress.isEmpty() && - InstitutionCodeSequence.isEmpty(); + InstitutionCodeSequence.isEmpty() && + InstitutionalDepartmentName.isEmpty() && + InstitutionalDepartmentTypeCodeSequence.isEmpty(); } @@ -115,6 +125,8 @@ OFCondition DRTOperatorIdentificationSequence::Item::read(DcmItem &item) getAndCheckElementFromDataset(item, InstitutionName, "1", "1C", "OperatorIdentificationSequence"); getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "OperatorIdentificationSequence"); InstitutionCodeSequence.read(item, "1-n", "1C", "OperatorIdentificationSequence"); + getAndCheckElementFromDataset(item, InstitutionalDepartmentName, "1", "3", "OperatorIdentificationSequence"); + InstitutionalDepartmentTypeCodeSequence.read(item, "1-n", "3", "OperatorIdentificationSequence"); result = EC_Normal; } return result; @@ -134,6 +146,8 @@ OFCondition DRTOperatorIdentificationSequence::Item::write(DcmItem &item) addElementToDataset(result, item, new DcmLongString(InstitutionName), "1", "1C", "OperatorIdentificationSequence"); addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "OperatorIdentificationSequence"); if (result.good()) result = InstitutionCodeSequence.write(item, "1-n", "1C", "OperatorIdentificationSequence"); + addElementToDataset(result, item, new DcmLongString(InstitutionalDepartmentName), "1", "3", "OperatorIdentificationSequence"); + if (result.good()) result = InstitutionalDepartmentTypeCodeSequence.write(item, "1-n", "3", "OperatorIdentificationSequence"); } return result; } @@ -157,6 +171,15 @@ OFCondition DRTOperatorIdentificationSequence::Item::getInstitutionName(OFString } +OFCondition DRTOperatorIdentificationSequence::Item::getInstitutionalDepartmentName(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(InstitutionalDepartmentName, value, pos); +} + + OFCondition DRTOperatorIdentificationSequence::Item::getPersonAddress(OFString &value, const signed long pos) const { if (EmptyDefaultItem) @@ -210,6 +233,19 @@ OFCondition DRTOperatorIdentificationSequence::Item::setInstitutionName(const OF } +OFCondition DRTOperatorIdentificationSequence::Item::setInstitutionalDepartmentName(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = InstitutionalDepartmentName.putOFStringArray(value); + } + return result; +} + + OFCondition DRTOperatorIdentificationSequence::Item::setPersonAddress(const OFString &value, const OFBool check) { OFCondition result = EC_IllegalCall; @@ -373,10 +409,12 @@ OFCondition DRTOperatorIdentificationSequence::gotoFirstItem() OFCondition DRTOperatorIdentificationSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtopis.cc b/dcmrt/libsrc/drtopis.cc index 7dcb7ed4..9c99398e 100644 --- a/dcmrt/libsrc/drtopis.cc +++ b/dcmrt/libsrc/drtopis.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTOtherPatientIDsSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -308,10 +308,12 @@ OFCondition DRTOtherPatientIDsSequence::gotoFirstItem() OFCondition DRTOtherPatientIDsSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtos.cc b/dcmrt/libsrc/drtos.cc index b0fadf2b..4db799b6 100644 --- a/dcmrt/libsrc/drtos.cc +++ b/dcmrt/libsrc/drtos.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTOverrideSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -400,10 +400,12 @@ OFCondition DRTOverrideSequence::gotoFirstItem() OFCondition DRTOverrideSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtosirs.cc b/dcmrt/libsrc/drtosirs.cc new file mode 100644 index 00000000..9f80490b --- /dev/null +++ b/dcmrt/libsrc/drtosirs.cc @@ -0,0 +1,575 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTOriginatingSOPInstanceReferenceSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtosirs.h" + + +// --- item class --- + +DRTOriginatingSOPInstanceReferenceSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + ReferencedSOPClassUID(DCM_ReferencedSOPClassUID), + ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID) +{ +} + + +DRTOriginatingSOPInstanceReferenceSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + ReferencedSOPClassUID(copy.ReferencedSOPClassUID), + ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID) +{ +} + + +DRTOriginatingSOPInstanceReferenceSequence::Item::~Item() +{ +} + + +DRTOriginatingSOPInstanceReferenceSequence::Item &DRTOriginatingSOPInstanceReferenceSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + ReferencedSOPClassUID = copy.ReferencedSOPClassUID; + ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID; + } + return *this; +} + + +void DRTOriginatingSOPInstanceReferenceSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + ReferencedSOPClassUID.clear(); + ReferencedSOPInstanceUID.clear(); + } +} + + +OFBool DRTOriginatingSOPInstanceReferenceSequence::Item::isEmpty() +{ + return ReferencedSOPClassUID.isEmpty() && + ReferencedSOPInstanceUID.isEmpty(); +} + + +OFBool DRTOriginatingSOPInstanceReferenceSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTOriginatingSOPInstanceReferenceSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "OriginatingSOPInstanceReferenceSequence"); + getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "OriginatingSOPInstanceReferenceSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTOriginatingSOPInstanceReferenceSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "OriginatingSOPInstanceReferenceSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "OriginatingSOPInstanceReferenceSequence"); + } + return result; +} + + +OFCondition DRTOriginatingSOPInstanceReferenceSequence::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedSOPClassUID, value, pos); +} + + +OFCondition DRTOriginatingSOPInstanceReferenceSequence::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos); +} + + +OFCondition DRTOriginatingSOPInstanceReferenceSequence::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedSOPClassUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTOriginatingSOPInstanceReferenceSequence::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedSOPInstanceUID.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTOriginatingSOPInstanceReferenceSequence::DRTOriginatingSOPInstanceReferenceSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTOriginatingSOPInstanceReferenceSequence::DRTOriginatingSOPInstanceReferenceSequence(const DRTOriginatingSOPInstanceReferenceSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTOriginatingSOPInstanceReferenceSequence &DRTOriginatingSOPInstanceReferenceSequence::operator=(const DRTOriginatingSOPInstanceReferenceSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTOriginatingSOPInstanceReferenceSequence::~DRTOriginatingSOPInstanceReferenceSequence() +{ + clear(); +} + + +void DRTOriginatingSOPInstanceReferenceSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTOriginatingSOPInstanceReferenceSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTOriginatingSOPInstanceReferenceSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTOriginatingSOPInstanceReferenceSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTOriginatingSOPInstanceReferenceSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTOriginatingSOPInstanceReferenceSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTOriginatingSOPInstanceReferenceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTOriginatingSOPInstanceReferenceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTOriginatingSOPInstanceReferenceSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTOriginatingSOPInstanceReferenceSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTOriginatingSOPInstanceReferenceSequence::Item &DRTOriginatingSOPInstanceReferenceSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTOriginatingSOPInstanceReferenceSequence::Item &DRTOriginatingSOPInstanceReferenceSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTOriginatingSOPInstanceReferenceSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTOriginatingSOPInstanceReferenceSequence::Item &DRTOriginatingSOPInstanceReferenceSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTOriginatingSOPInstanceReferenceSequence::Item &DRTOriginatingSOPInstanceReferenceSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTOriginatingSOPInstanceReferenceSequence::Item &DRTOriginatingSOPInstanceReferenceSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTOriginatingSOPInstanceReferenceSequence::Item &DRTOriginatingSOPInstanceReferenceSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTOriginatingSOPInstanceReferenceSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTOriginatingSOPInstanceReferenceSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTOriginatingSOPInstanceReferenceSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTOriginatingSOPInstanceReferenceSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_OriginatingSOPInstanceReferenceSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_OriginatingSOPInstanceReferenceSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTOriginatingSOPInstanceReferenceSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_OriginatingSOPInstanceReferenceSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtpasms.cc b/dcmrt/libsrc/drtpasms.cc new file mode 100644 index 00000000..d91f19dc --- /dev/null +++ b/dcmrt/libsrc/drtpasms.cc @@ -0,0 +1,959 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTPrimaryAnatomicStructureModifierSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtpasms.h" + + +// --- item class --- + +DRTPrimaryAnatomicStructureModifierSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + CodeMeaning(DCM_CodeMeaning), + CodeValue(DCM_CodeValue), + CodingSchemeDesignator(DCM_CodingSchemeDesignator), + CodingSchemeVersion(DCM_CodingSchemeVersion), + ContextGroupExtensionCreatorUID(DCM_ContextGroupExtensionCreatorUID), + ContextGroupExtensionFlag(DCM_ContextGroupExtensionFlag), + ContextGroupLocalVersion(DCM_ContextGroupLocalVersion), + ContextGroupVersion(DCM_ContextGroupVersion), + ContextIdentifier(DCM_ContextIdentifier), + ContextUID(DCM_ContextUID), + EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), + LongCodeValue(DCM_LongCodeValue), + MappingResource(DCM_MappingResource), + MappingResourceName(DCM_MappingResourceName), + MappingResourceUID(DCM_MappingResourceUID), + URNCodeValue(DCM_URNCodeValue) +{ +} + + +DRTPrimaryAnatomicStructureModifierSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + CodeMeaning(copy.CodeMeaning), + CodeValue(copy.CodeValue), + CodingSchemeDesignator(copy.CodingSchemeDesignator), + CodingSchemeVersion(copy.CodingSchemeVersion), + ContextGroupExtensionCreatorUID(copy.ContextGroupExtensionCreatorUID), + ContextGroupExtensionFlag(copy.ContextGroupExtensionFlag), + ContextGroupLocalVersion(copy.ContextGroupLocalVersion), + ContextGroupVersion(copy.ContextGroupVersion), + ContextIdentifier(copy.ContextIdentifier), + ContextUID(copy.ContextUID), + EquivalentCodeSequence(copy.EquivalentCodeSequence), + LongCodeValue(copy.LongCodeValue), + MappingResource(copy.MappingResource), + MappingResourceName(copy.MappingResourceName), + MappingResourceUID(copy.MappingResourceUID), + URNCodeValue(copy.URNCodeValue) +{ +} + + +DRTPrimaryAnatomicStructureModifierSequence::Item::~Item() +{ +} + + +DRTPrimaryAnatomicStructureModifierSequence::Item &DRTPrimaryAnatomicStructureModifierSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + CodeMeaning = copy.CodeMeaning; + CodeValue = copy.CodeValue; + CodingSchemeDesignator = copy.CodingSchemeDesignator; + CodingSchemeVersion = copy.CodingSchemeVersion; + ContextGroupExtensionCreatorUID = copy.ContextGroupExtensionCreatorUID; + ContextGroupExtensionFlag = copy.ContextGroupExtensionFlag; + ContextGroupLocalVersion = copy.ContextGroupLocalVersion; + ContextGroupVersion = copy.ContextGroupVersion; + ContextIdentifier = copy.ContextIdentifier; + ContextUID = copy.ContextUID; + EquivalentCodeSequence = copy.EquivalentCodeSequence; + LongCodeValue = copy.LongCodeValue; + MappingResource = copy.MappingResource; + MappingResourceName = copy.MappingResourceName; + MappingResourceUID = copy.MappingResourceUID; + URNCodeValue = copy.URNCodeValue; + } + return *this; +} + + +void DRTPrimaryAnatomicStructureModifierSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + CodeValue.clear(); + CodingSchemeDesignator.clear(); + CodingSchemeVersion.clear(); + CodeMeaning.clear(); + LongCodeValue.clear(); + URNCodeValue.clear(); + EquivalentCodeSequence.clear(); + ContextIdentifier.clear(); + ContextUID.clear(); + MappingResource.clear(); + MappingResourceUID.clear(); + MappingResourceName.clear(); + ContextGroupVersion.clear(); + ContextGroupExtensionFlag.clear(); + ContextGroupLocalVersion.clear(); + ContextGroupExtensionCreatorUID.clear(); + } +} + + +OFBool DRTPrimaryAnatomicStructureModifierSequence::Item::isEmpty() +{ + return CodeValue.isEmpty() && + CodingSchemeDesignator.isEmpty() && + CodingSchemeVersion.isEmpty() && + CodeMeaning.isEmpty() && + LongCodeValue.isEmpty() && + URNCodeValue.isEmpty() && + EquivalentCodeSequence.isEmpty() && + ContextIdentifier.isEmpty() && + ContextUID.isEmpty() && + MappingResource.isEmpty() && + MappingResourceUID.isEmpty() && + MappingResourceName.isEmpty() && + ContextGroupVersion.isEmpty() && + ContextGroupExtensionFlag.isEmpty() && + ContextGroupLocalVersion.isEmpty() && + ContextGroupExtensionCreatorUID.isEmpty(); +} + + +OFBool DRTPrimaryAnatomicStructureModifierSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "PrimaryAnatomicStructureModifierSequence"); + getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "PrimaryAnatomicStructureModifierSequence"); + getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "PrimaryAnatomicStructureModifierSequence"); + getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "PrimaryAnatomicStructureModifierSequence"); + getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "PrimaryAnatomicStructureModifierSequence"); + getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "PrimaryAnatomicStructureModifierSequence"); + EquivalentCodeSequence.read(item, "1-n", "3", "PrimaryAnatomicStructureModifierSequence"); + getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "PrimaryAnatomicStructureModifierSequence"); + getAndCheckElementFromDataset(item, ContextUID, "1", "3", "PrimaryAnatomicStructureModifierSequence"); + getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "PrimaryAnatomicStructureModifierSequence"); + getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "PrimaryAnatomicStructureModifierSequence"); + getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "PrimaryAnatomicStructureModifierSequence"); + getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "PrimaryAnatomicStructureModifierSequence"); + getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "PrimaryAnatomicStructureModifierSequence"); + getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "PrimaryAnatomicStructureModifierSequence"); + getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "PrimaryAnatomicStructureModifierSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "PrimaryAnatomicStructureModifierSequence"); + addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "PrimaryAnatomicStructureModifierSequence"); + addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "PrimaryAnatomicStructureModifierSequence"); + addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "PrimaryAnatomicStructureModifierSequence"); + addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "PrimaryAnatomicStructureModifierSequence"); + addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "PrimaryAnatomicStructureModifierSequence"); + if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "PrimaryAnatomicStructureModifierSequence"); + addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "PrimaryAnatomicStructureModifierSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "PrimaryAnatomicStructureModifierSequence"); + addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "PrimaryAnatomicStructureModifierSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "PrimaryAnatomicStructureModifierSequence"); + addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "PrimaryAnatomicStructureModifierSequence"); + addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "PrimaryAnatomicStructureModifierSequence"); + addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "PrimaryAnatomicStructureModifierSequence"); + addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "PrimaryAnatomicStructureModifierSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "PrimaryAnatomicStructureModifierSequence"); + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodeMeaning, value, pos); +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::getCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodeValue, value, pos); +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodingSchemeDesignator, value, pos); +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodingSchemeVersion, value, pos); +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupExtensionCreatorUID, value, pos); +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupExtensionFlag, value, pos); +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupLocalVersion, value, pos); +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupVersion, value, pos); +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextIdentifier, value, pos); +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::getContextUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextUID, value, pos); +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(LongCodeValue, value, pos); +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::getMappingResource(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResource, value, pos); +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResourceName, value, pos); +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResourceUID, value, pos); +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(URNCodeValue, value, pos); +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::setCodeMeaning(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodeMeaning.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::setCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodeValue.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodingSchemeDesignator.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodingSchemeVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupExtensionCreatorUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupExtensionFlag.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupLocalVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::setContextIdentifier(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextIdentifier.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::setContextUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::setLongCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = LongCodeValue.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::setMappingResource(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResource.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::setMappingResourceName(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResourceName.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResourceUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::setURNCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal; + if (result.good()) + result = URNCodeValue.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTPrimaryAnatomicStructureModifierSequence::DRTPrimaryAnatomicStructureModifierSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTPrimaryAnatomicStructureModifierSequence::DRTPrimaryAnatomicStructureModifierSequence(const DRTPrimaryAnatomicStructureModifierSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTPrimaryAnatomicStructureModifierSequence &DRTPrimaryAnatomicStructureModifierSequence::operator=(const DRTPrimaryAnatomicStructureModifierSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTPrimaryAnatomicStructureModifierSequence::~DRTPrimaryAnatomicStructureModifierSequence() +{ + clear(); +} + + +void DRTPrimaryAnatomicStructureModifierSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTPrimaryAnatomicStructureModifierSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTPrimaryAnatomicStructureModifierSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTPrimaryAnatomicStructureModifierSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTPrimaryAnatomicStructureModifierSequence::Item &DRTPrimaryAnatomicStructureModifierSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTPrimaryAnatomicStructureModifierSequence::Item &DRTPrimaryAnatomicStructureModifierSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTPrimaryAnatomicStructureModifierSequence::Item &DRTPrimaryAnatomicStructureModifierSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTPrimaryAnatomicStructureModifierSequence::Item &DRTPrimaryAnatomicStructureModifierSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTPrimaryAnatomicStructureModifierSequence::Item &DRTPrimaryAnatomicStructureModifierSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTPrimaryAnatomicStructureModifierSequence::Item &DRTPrimaryAnatomicStructureModifierSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_PrimaryAnatomicStructureModifierSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_PrimaryAnatomicStructureModifierSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureModifierSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_PrimaryAnatomicStructureModifierSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtpass.cc b/dcmrt/libsrc/drtpass.cc new file mode 100644 index 00000000..b829c3da --- /dev/null +++ b/dcmrt/libsrc/drtpass.cc @@ -0,0 +1,966 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTPrimaryAnatomicStructureSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtpass.h" + + +// --- item class --- + +DRTPrimaryAnatomicStructureSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + CodeMeaning(DCM_CodeMeaning), + CodeValue(DCM_CodeValue), + CodingSchemeDesignator(DCM_CodingSchemeDesignator), + CodingSchemeVersion(DCM_CodingSchemeVersion), + ContextGroupExtensionCreatorUID(DCM_ContextGroupExtensionCreatorUID), + ContextGroupExtensionFlag(DCM_ContextGroupExtensionFlag), + ContextGroupLocalVersion(DCM_ContextGroupLocalVersion), + ContextGroupVersion(DCM_ContextGroupVersion), + ContextIdentifier(DCM_ContextIdentifier), + ContextUID(DCM_ContextUID), + EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), + LongCodeValue(DCM_LongCodeValue), + MappingResource(DCM_MappingResource), + MappingResourceName(DCM_MappingResourceName), + MappingResourceUID(DCM_MappingResourceUID), + PrimaryAnatomicStructureModifierSequence(emptyDefaultItem /*emptyDefaultSequence*/), + URNCodeValue(DCM_URNCodeValue) +{ +} + + +DRTPrimaryAnatomicStructureSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + CodeMeaning(copy.CodeMeaning), + CodeValue(copy.CodeValue), + CodingSchemeDesignator(copy.CodingSchemeDesignator), + CodingSchemeVersion(copy.CodingSchemeVersion), + ContextGroupExtensionCreatorUID(copy.ContextGroupExtensionCreatorUID), + ContextGroupExtensionFlag(copy.ContextGroupExtensionFlag), + ContextGroupLocalVersion(copy.ContextGroupLocalVersion), + ContextGroupVersion(copy.ContextGroupVersion), + ContextIdentifier(copy.ContextIdentifier), + ContextUID(copy.ContextUID), + EquivalentCodeSequence(copy.EquivalentCodeSequence), + LongCodeValue(copy.LongCodeValue), + MappingResource(copy.MappingResource), + MappingResourceName(copy.MappingResourceName), + MappingResourceUID(copy.MappingResourceUID), + PrimaryAnatomicStructureModifierSequence(copy.PrimaryAnatomicStructureModifierSequence), + URNCodeValue(copy.URNCodeValue) +{ +} + + +DRTPrimaryAnatomicStructureSequence::Item::~Item() +{ +} + + +DRTPrimaryAnatomicStructureSequence::Item &DRTPrimaryAnatomicStructureSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + CodeMeaning = copy.CodeMeaning; + CodeValue = copy.CodeValue; + CodingSchemeDesignator = copy.CodingSchemeDesignator; + CodingSchemeVersion = copy.CodingSchemeVersion; + ContextGroupExtensionCreatorUID = copy.ContextGroupExtensionCreatorUID; + ContextGroupExtensionFlag = copy.ContextGroupExtensionFlag; + ContextGroupLocalVersion = copy.ContextGroupLocalVersion; + ContextGroupVersion = copy.ContextGroupVersion; + ContextIdentifier = copy.ContextIdentifier; + ContextUID = copy.ContextUID; + EquivalentCodeSequence = copy.EquivalentCodeSequence; + LongCodeValue = copy.LongCodeValue; + MappingResource = copy.MappingResource; + MappingResourceName = copy.MappingResourceName; + MappingResourceUID = copy.MappingResourceUID; + PrimaryAnatomicStructureModifierSequence = copy.PrimaryAnatomicStructureModifierSequence; + URNCodeValue = copy.URNCodeValue; + } + return *this; +} + + +void DRTPrimaryAnatomicStructureSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + CodeValue.clear(); + CodingSchemeDesignator.clear(); + CodingSchemeVersion.clear(); + CodeMeaning.clear(); + LongCodeValue.clear(); + URNCodeValue.clear(); + EquivalentCodeSequence.clear(); + ContextIdentifier.clear(); + ContextUID.clear(); + MappingResource.clear(); + MappingResourceUID.clear(); + MappingResourceName.clear(); + ContextGroupVersion.clear(); + ContextGroupExtensionFlag.clear(); + ContextGroupLocalVersion.clear(); + ContextGroupExtensionCreatorUID.clear(); + PrimaryAnatomicStructureModifierSequence.clear(); + } +} + + +OFBool DRTPrimaryAnatomicStructureSequence::Item::isEmpty() +{ + return CodeValue.isEmpty() && + CodingSchemeDesignator.isEmpty() && + CodingSchemeVersion.isEmpty() && + CodeMeaning.isEmpty() && + LongCodeValue.isEmpty() && + URNCodeValue.isEmpty() && + EquivalentCodeSequence.isEmpty() && + ContextIdentifier.isEmpty() && + ContextUID.isEmpty() && + MappingResource.isEmpty() && + MappingResourceUID.isEmpty() && + MappingResourceName.isEmpty() && + ContextGroupVersion.isEmpty() && + ContextGroupExtensionFlag.isEmpty() && + ContextGroupLocalVersion.isEmpty() && + ContextGroupExtensionCreatorUID.isEmpty() && + PrimaryAnatomicStructureModifierSequence.isEmpty(); +} + + +OFBool DRTPrimaryAnatomicStructureSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "PrimaryAnatomicStructureSequence"); + getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "PrimaryAnatomicStructureSequence"); + getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "PrimaryAnatomicStructureSequence"); + getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "PrimaryAnatomicStructureSequence"); + getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "PrimaryAnatomicStructureSequence"); + getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "PrimaryAnatomicStructureSequence"); + EquivalentCodeSequence.read(item, "1-n", "3", "PrimaryAnatomicStructureSequence"); + getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "PrimaryAnatomicStructureSequence"); + getAndCheckElementFromDataset(item, ContextUID, "1", "3", "PrimaryAnatomicStructureSequence"); + getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "PrimaryAnatomicStructureSequence"); + getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "PrimaryAnatomicStructureSequence"); + getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "PrimaryAnatomicStructureSequence"); + getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "PrimaryAnatomicStructureSequence"); + getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "PrimaryAnatomicStructureSequence"); + getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "PrimaryAnatomicStructureSequence"); + getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "PrimaryAnatomicStructureSequence"); + PrimaryAnatomicStructureModifierSequence.read(item, "1-n", "3", "PrimaryAnatomicStructureSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "PrimaryAnatomicStructureSequence"); + addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "PrimaryAnatomicStructureSequence"); + addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "PrimaryAnatomicStructureSequence"); + addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "PrimaryAnatomicStructureSequence"); + addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "PrimaryAnatomicStructureSequence"); + addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "PrimaryAnatomicStructureSequence"); + if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "PrimaryAnatomicStructureSequence"); + addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "PrimaryAnatomicStructureSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "PrimaryAnatomicStructureSequence"); + addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "PrimaryAnatomicStructureSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "PrimaryAnatomicStructureSequence"); + addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "PrimaryAnatomicStructureSequence"); + addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "PrimaryAnatomicStructureSequence"); + addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "PrimaryAnatomicStructureSequence"); + addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "PrimaryAnatomicStructureSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "PrimaryAnatomicStructureSequence"); + if (result.good()) result = PrimaryAnatomicStructureModifierSequence.write(item, "1-n", "3", "PrimaryAnatomicStructureSequence"); + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodeMeaning, value, pos); +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::Item::getCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodeValue, value, pos); +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodingSchemeDesignator, value, pos); +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodingSchemeVersion, value, pos); +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupExtensionCreatorUID, value, pos); +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupExtensionFlag, value, pos); +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupLocalVersion, value, pos); +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupVersion, value, pos); +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextIdentifier, value, pos); +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::Item::getContextUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextUID, value, pos); +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(LongCodeValue, value, pos); +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::Item::getMappingResource(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResource, value, pos); +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResourceName, value, pos); +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResourceUID, value, pos); +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(URNCodeValue, value, pos); +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::Item::setCodeMeaning(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodeMeaning.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::Item::setCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodeValue.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodingSchemeDesignator.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodingSchemeVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupExtensionCreatorUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupExtensionFlag.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupLocalVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::Item::setContextIdentifier(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextIdentifier.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::Item::setContextUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::Item::setLongCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = LongCodeValue.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::Item::setMappingResource(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResource.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::Item::setMappingResourceName(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResourceName.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResourceUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::Item::setURNCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal; + if (result.good()) + result = URNCodeValue.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTPrimaryAnatomicStructureSequence::DRTPrimaryAnatomicStructureSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTPrimaryAnatomicStructureSequence::DRTPrimaryAnatomicStructureSequence(const DRTPrimaryAnatomicStructureSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTPrimaryAnatomicStructureSequence &DRTPrimaryAnatomicStructureSequence::operator=(const DRTPrimaryAnatomicStructureSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTPrimaryAnatomicStructureSequence::~DRTPrimaryAnatomicStructureSequence() +{ + clear(); +} + + +void DRTPrimaryAnatomicStructureSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTPrimaryAnatomicStructureSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTPrimaryAnatomicStructureSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTPrimaryAnatomicStructureSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTPrimaryAnatomicStructureSequence::Item &DRTPrimaryAnatomicStructureSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTPrimaryAnatomicStructureSequence::Item &DRTPrimaryAnatomicStructureSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTPrimaryAnatomicStructureSequence::Item &DRTPrimaryAnatomicStructureSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTPrimaryAnatomicStructureSequence::Item &DRTPrimaryAnatomicStructureSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTPrimaryAnatomicStructureSequence::Item &DRTPrimaryAnatomicStructureSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTPrimaryAnatomicStructureSequence::Item &DRTPrimaryAnatomicStructureSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_PrimaryAnatomicStructureSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_PrimaryAnatomicStructureSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTPrimaryAnatomicStructureSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_PrimaryAnatomicStructureSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtpbcs.cc b/dcmrt/libsrc/drtpbcs.cc index 5076218c..792c3a86 100644 --- a/dcmrt/libsrc/drtpbcs.cc +++ b/dcmrt/libsrc/drtpbcs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTPatientBreedCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -656,10 +656,12 @@ OFCondition DRTPatientBreedCodeSequence::gotoFirstItem() OFCondition DRTPatientBreedCodeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtpbdds.cc b/dcmrt/libsrc/drtpbdds.cc new file mode 100644 index 00000000..ade882b1 --- /dev/null +++ b/dcmrt/libsrc/drtpbdds.cc @@ -0,0 +1,657 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTParallelRTBeamDelimiterDeviceSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtpbdds.h" + + +// --- item class --- + +DRTParallelRTBeamDelimiterDeviceSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + NumberOfParallelRTBeamDelimiters(DCM_NumberOfParallelRTBeamDelimiters), + ParallelRTBeamDelimiterBoundaries(DCM_ParallelRTBeamDelimiterBoundaries), + ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), + ParallelRTBeamDelimiterLeafMountingSide(DCM_ParallelRTBeamDelimiterLeafMountingSide), + ParallelRTBeamDelimiterOpeningExtents(DCM_ParallelRTBeamDelimiterOpeningExtents), + ParallelRTBeamDelimiterOpeningMode(DCM_ParallelRTBeamDelimiterOpeningMode) +{ +} + + +DRTParallelRTBeamDelimiterDeviceSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + NumberOfParallelRTBeamDelimiters(copy.NumberOfParallelRTBeamDelimiters), + ParallelRTBeamDelimiterBoundaries(copy.ParallelRTBeamDelimiterBoundaries), + ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence(copy.ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence), + ParallelRTBeamDelimiterLeafMountingSide(copy.ParallelRTBeamDelimiterLeafMountingSide), + ParallelRTBeamDelimiterOpeningExtents(copy.ParallelRTBeamDelimiterOpeningExtents), + ParallelRTBeamDelimiterOpeningMode(copy.ParallelRTBeamDelimiterOpeningMode) +{ +} + + +DRTParallelRTBeamDelimiterDeviceSequence::Item::~Item() +{ +} + + +DRTParallelRTBeamDelimiterDeviceSequence::Item &DRTParallelRTBeamDelimiterDeviceSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + NumberOfParallelRTBeamDelimiters = copy.NumberOfParallelRTBeamDelimiters; + ParallelRTBeamDelimiterBoundaries = copy.ParallelRTBeamDelimiterBoundaries; + ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence = copy.ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence; + ParallelRTBeamDelimiterLeafMountingSide = copy.ParallelRTBeamDelimiterLeafMountingSide; + ParallelRTBeamDelimiterOpeningExtents = copy.ParallelRTBeamDelimiterOpeningExtents; + ParallelRTBeamDelimiterOpeningMode = copy.ParallelRTBeamDelimiterOpeningMode; + } + return *this; +} + + +void DRTParallelRTBeamDelimiterDeviceSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + NumberOfParallelRTBeamDelimiters.clear(); + ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence.clear(); + ParallelRTBeamDelimiterOpeningMode.clear(); + ParallelRTBeamDelimiterBoundaries.clear(); + ParallelRTBeamDelimiterLeafMountingSide.clear(); + ParallelRTBeamDelimiterOpeningExtents.clear(); + } +} + + +OFBool DRTParallelRTBeamDelimiterDeviceSequence::Item::isEmpty() +{ + return NumberOfParallelRTBeamDelimiters.isEmpty() && + ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence.isEmpty() && + ParallelRTBeamDelimiterOpeningMode.isEmpty() && + ParallelRTBeamDelimiterBoundaries.isEmpty() && + ParallelRTBeamDelimiterLeafMountingSide.isEmpty() && + ParallelRTBeamDelimiterOpeningExtents.isEmpty(); +} + + +OFBool DRTParallelRTBeamDelimiterDeviceSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, NumberOfParallelRTBeamDelimiters, "1", "1", "ParallelRTBeamDelimiterDeviceSequence"); + ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence.read(item, "1-n", "1", "ParallelRTBeamDelimiterDeviceSequence"); + getAndCheckElementFromDataset(item, ParallelRTBeamDelimiterOpeningMode, "1", "1", "ParallelRTBeamDelimiterDeviceSequence"); + getAndCheckElementFromDataset(item, ParallelRTBeamDelimiterBoundaries, "2-n", "1", "ParallelRTBeamDelimiterDeviceSequence"); + getAndCheckElementFromDataset(item, ParallelRTBeamDelimiterLeafMountingSide, "1-n", "1C", "ParallelRTBeamDelimiterDeviceSequence"); + getAndCheckElementFromDataset(item, ParallelRTBeamDelimiterOpeningExtents, "2-2n", "1C", "ParallelRTBeamDelimiterDeviceSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmUnsignedShort(NumberOfParallelRTBeamDelimiters), "1", "1", "ParallelRTBeamDelimiterDeviceSequence"); + if (result.good()) result = ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence.write(item, "1-n", "1", "ParallelRTBeamDelimiterDeviceSequence"); + addElementToDataset(result, item, new DcmCodeString(ParallelRTBeamDelimiterOpeningMode), "1", "1", "ParallelRTBeamDelimiterDeviceSequence"); + addElementToDataset(result, item, new DcmFloatingPointDouble(ParallelRTBeamDelimiterBoundaries), "2-n", "1", "ParallelRTBeamDelimiterDeviceSequence"); + addElementToDataset(result, item, new DcmCodeString(ParallelRTBeamDelimiterLeafMountingSide), "1-n", "1C", "ParallelRTBeamDelimiterDeviceSequence"); + addElementToDataset(result, item, new DcmFloatingPointDouble(ParallelRTBeamDelimiterOpeningExtents), "2-2n", "1C", "ParallelRTBeamDelimiterDeviceSequence"); + } + return result; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceSequence::Item::getNumberOfParallelRTBeamDelimiters(Uint16 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmUnsignedShort &, NumberOfParallelRTBeamDelimiters).getUint16(value, pos); +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceSequence::Item::getParallelRTBeamDelimiterBoundaries(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointDouble &, ParallelRTBeamDelimiterBoundaries).getFloat64(value, pos); +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceSequence::Item::getParallelRTBeamDelimiterLeafMountingSide(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ParallelRTBeamDelimiterLeafMountingSide, value, pos); +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceSequence::Item::getParallelRTBeamDelimiterOpeningExtents(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointDouble &, ParallelRTBeamDelimiterOpeningExtents).getFloat64(value, pos); +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceSequence::Item::getParallelRTBeamDelimiterOpeningMode(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ParallelRTBeamDelimiterOpeningMode, value, pos); +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceSequence::Item::setNumberOfParallelRTBeamDelimiters(const Uint16 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return NumberOfParallelRTBeamDelimiters.putUint16(value, pos); +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceSequence::Item::setParallelRTBeamDelimiterBoundaries(const Float64 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return ParallelRTBeamDelimiterBoundaries.putFloat64(value, pos); +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceSequence::Item::setParallelRTBeamDelimiterLeafMountingSide(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1-n") : EC_Normal; + if (result.good()) + result = ParallelRTBeamDelimiterLeafMountingSide.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceSequence::Item::setParallelRTBeamDelimiterOpeningExtents(const Float64 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return ParallelRTBeamDelimiterOpeningExtents.putFloat64(value, pos); +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceSequence::Item::setParallelRTBeamDelimiterOpeningMode(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ParallelRTBeamDelimiterOpeningMode.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTParallelRTBeamDelimiterDeviceSequence::DRTParallelRTBeamDelimiterDeviceSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTParallelRTBeamDelimiterDeviceSequence::DRTParallelRTBeamDelimiterDeviceSequence(const DRTParallelRTBeamDelimiterDeviceSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTParallelRTBeamDelimiterDeviceSequence &DRTParallelRTBeamDelimiterDeviceSequence::operator=(const DRTParallelRTBeamDelimiterDeviceSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTParallelRTBeamDelimiterDeviceSequence::~DRTParallelRTBeamDelimiterDeviceSequence() +{ + clear(); +} + + +void DRTParallelRTBeamDelimiterDeviceSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTParallelRTBeamDelimiterDeviceSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTParallelRTBeamDelimiterDeviceSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTParallelRTBeamDelimiterDeviceSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTParallelRTBeamDelimiterDeviceSequence::Item &DRTParallelRTBeamDelimiterDeviceSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTParallelRTBeamDelimiterDeviceSequence::Item &DRTParallelRTBeamDelimiterDeviceSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTParallelRTBeamDelimiterDeviceSequence::Item &DRTParallelRTBeamDelimiterDeviceSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTParallelRTBeamDelimiterDeviceSequence::Item &DRTParallelRTBeamDelimiterDeviceSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTParallelRTBeamDelimiterDeviceSequence::Item &DRTParallelRTBeamDelimiterDeviceSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTParallelRTBeamDelimiterDeviceSequence::Item &DRTParallelRTBeamDelimiterDeviceSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_ParallelRTBeamDelimiterDeviceSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_ParallelRTBeamDelimiterDeviceSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ParallelRTBeamDelimiterDeviceSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtpbdos.cc b/dcmrt/libsrc/drtpbdos.cc new file mode 100644 index 00000000..6887e2d2 --- /dev/null +++ b/dcmrt/libsrc/drtpbdos.cc @@ -0,0 +1,959 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtpbdos.h" + + +// --- item class --- + +DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + CodeMeaning(DCM_CodeMeaning), + CodeValue(DCM_CodeValue), + CodingSchemeDesignator(DCM_CodingSchemeDesignator), + CodingSchemeVersion(DCM_CodingSchemeVersion), + ContextGroupExtensionCreatorUID(DCM_ContextGroupExtensionCreatorUID), + ContextGroupExtensionFlag(DCM_ContextGroupExtensionFlag), + ContextGroupLocalVersion(DCM_ContextGroupLocalVersion), + ContextGroupVersion(DCM_ContextGroupVersion), + ContextIdentifier(DCM_ContextIdentifier), + ContextUID(DCM_ContextUID), + EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), + LongCodeValue(DCM_LongCodeValue), + MappingResource(DCM_MappingResource), + MappingResourceName(DCM_MappingResourceName), + MappingResourceUID(DCM_MappingResourceUID), + URNCodeValue(DCM_URNCodeValue) +{ +} + + +DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + CodeMeaning(copy.CodeMeaning), + CodeValue(copy.CodeValue), + CodingSchemeDesignator(copy.CodingSchemeDesignator), + CodingSchemeVersion(copy.CodingSchemeVersion), + ContextGroupExtensionCreatorUID(copy.ContextGroupExtensionCreatorUID), + ContextGroupExtensionFlag(copy.ContextGroupExtensionFlag), + ContextGroupLocalVersion(copy.ContextGroupLocalVersion), + ContextGroupVersion(copy.ContextGroupVersion), + ContextIdentifier(copy.ContextIdentifier), + ContextUID(copy.ContextUID), + EquivalentCodeSequence(copy.EquivalentCodeSequence), + LongCodeValue(copy.LongCodeValue), + MappingResource(copy.MappingResource), + MappingResourceName(copy.MappingResourceName), + MappingResourceUID(copy.MappingResourceUID), + URNCodeValue(copy.URNCodeValue) +{ +} + + +DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::~Item() +{ +} + + +DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item &DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + CodeMeaning = copy.CodeMeaning; + CodeValue = copy.CodeValue; + CodingSchemeDesignator = copy.CodingSchemeDesignator; + CodingSchemeVersion = copy.CodingSchemeVersion; + ContextGroupExtensionCreatorUID = copy.ContextGroupExtensionCreatorUID; + ContextGroupExtensionFlag = copy.ContextGroupExtensionFlag; + ContextGroupLocalVersion = copy.ContextGroupLocalVersion; + ContextGroupVersion = copy.ContextGroupVersion; + ContextIdentifier = copy.ContextIdentifier; + ContextUID = copy.ContextUID; + EquivalentCodeSequence = copy.EquivalentCodeSequence; + LongCodeValue = copy.LongCodeValue; + MappingResource = copy.MappingResource; + MappingResourceName = copy.MappingResourceName; + MappingResourceUID = copy.MappingResourceUID; + URNCodeValue = copy.URNCodeValue; + } + return *this; +} + + +void DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + CodeValue.clear(); + CodingSchemeDesignator.clear(); + CodingSchemeVersion.clear(); + CodeMeaning.clear(); + LongCodeValue.clear(); + URNCodeValue.clear(); + EquivalentCodeSequence.clear(); + ContextIdentifier.clear(); + ContextUID.clear(); + MappingResource.clear(); + MappingResourceUID.clear(); + MappingResourceName.clear(); + ContextGroupVersion.clear(); + ContextGroupExtensionFlag.clear(); + ContextGroupLocalVersion.clear(); + ContextGroupExtensionCreatorUID.clear(); + } +} + + +OFBool DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::isEmpty() +{ + return CodeValue.isEmpty() && + CodingSchemeDesignator.isEmpty() && + CodingSchemeVersion.isEmpty() && + CodeMeaning.isEmpty() && + LongCodeValue.isEmpty() && + URNCodeValue.isEmpty() && + EquivalentCodeSequence.isEmpty() && + ContextIdentifier.isEmpty() && + ContextUID.isEmpty() && + MappingResource.isEmpty() && + MappingResourceUID.isEmpty() && + MappingResourceName.isEmpty() && + ContextGroupVersion.isEmpty() && + ContextGroupExtensionFlag.isEmpty() && + ContextGroupLocalVersion.isEmpty() && + ContextGroupExtensionCreatorUID.isEmpty(); +} + + +OFBool DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence"); + getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence"); + getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence"); + getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence"); + getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence"); + getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence"); + EquivalentCodeSequence.read(item, "1-n", "3", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence"); + getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence"); + getAndCheckElementFromDataset(item, ContextUID, "1", "3", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence"); + getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence"); + getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence"); + getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence"); + addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence"); + addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence"); + addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence"); + addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence"); + addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence"); + if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence"); + addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence"); + addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence"); + addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence"); + } + return result; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodeMeaning, value, pos); +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::getCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodeValue, value, pos); +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodingSchemeDesignator, value, pos); +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodingSchemeVersion, value, pos); +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupExtensionCreatorUID, value, pos); +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupExtensionFlag, value, pos); +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupLocalVersion, value, pos); +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupVersion, value, pos); +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextIdentifier, value, pos); +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::getContextUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextUID, value, pos); +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(LongCodeValue, value, pos); +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResource, value, pos); +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResourceName, value, pos); +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResourceUID, value, pos); +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(URNCodeValue, value, pos); +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodeMeaning.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::setCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodeValue.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodingSchemeDesignator.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodingSchemeVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupExtensionCreatorUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupExtensionFlag.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupLocalVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::setContextIdentifier(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextIdentifier.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::setContextUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = LongCodeValue.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResource.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResourceName.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResourceUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal; + if (result.good()) + result = URNCodeValue.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence(const DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence &DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::operator=(const DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::~DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence() +{ + clear(); +} + + +void DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item &DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item &DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item &DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item &DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item &DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item &DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtpcs.cc b/dcmrt/libsrc/drtpcs.cc index b7a3a85b..3f350ea0 100644 --- a/dcmrt/libsrc/drtpcs.cc +++ b/dcmrt/libsrc/drtpcs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTProcedureCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -656,10 +656,12 @@ OFCondition DRTProcedureCodeSequence::gotoFirstItem() OFCondition DRTProcedureCodeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtpcxs.cc b/dcmrt/libsrc/drtpcxs.cc index 8805176c..2668385d 100644 --- a/dcmrt/libsrc/drtpcxs.cc +++ b/dcmrt/libsrc/drtpcxs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTProtocolContextSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -30,6 +30,7 @@ DRTProtocolContextSequence::Item::Item(const OFBool emptyDefaultItem) MeasurementUnitsCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), NumericValue(DCM_NumericValue), ObservationDateTime(DCM_ObservationDateTime), + ObservationStartDateTime(DCM_ObservationStartDateTime), PersonName(DCM_PersonName), RationalDenominatorValue(DCM_RationalDenominatorValue), RationalNumeratorValue(DCM_RationalNumeratorValue), @@ -53,6 +54,7 @@ DRTProtocolContextSequence::Item::Item(const Item ©) MeasurementUnitsCodeSequence(copy.MeasurementUnitsCodeSequence), NumericValue(copy.NumericValue), ObservationDateTime(copy.ObservationDateTime), + ObservationStartDateTime(copy.ObservationStartDateTime), PersonName(copy.PersonName), RationalDenominatorValue(copy.RationalDenominatorValue), RationalNumeratorValue(copy.RationalNumeratorValue), @@ -84,6 +86,7 @@ DRTProtocolContextSequence::Item &DRTProtocolContextSequence::Item::operator=(co MeasurementUnitsCodeSequence = copy.MeasurementUnitsCodeSequence; NumericValue = copy.NumericValue; ObservationDateTime = copy.ObservationDateTime; + ObservationStartDateTime = copy.ObservationStartDateTime; PersonName = copy.PersonName; RationalDenominatorValue = copy.RationalDenominatorValue; RationalNumeratorValue = copy.RationalNumeratorValue; @@ -104,6 +107,7 @@ void DRTProtocolContextSequence::Item::clear() /* clear all DICOM attributes */ ValueType.clear(); ObservationDateTime.clear(); + ObservationStartDateTime.clear(); ConceptNameCodeSequence.clear(); DateTime.clear(); Date.clear(); @@ -127,6 +131,7 @@ OFBool DRTProtocolContextSequence::Item::isEmpty() { return ValueType.isEmpty() && ObservationDateTime.isEmpty() && + ObservationStartDateTime.isEmpty() && ConceptNameCodeSequence.isEmpty() && DateTime.isEmpty() && Date.isEmpty() && @@ -160,6 +165,7 @@ OFCondition DRTProtocolContextSequence::Item::read(DcmItem &item) clear(); getAndCheckElementFromDataset(item, ValueType, "1", "1", "ProtocolContextSequence"); getAndCheckElementFromDataset(item, ObservationDateTime, "1", "3", "ProtocolContextSequence"); + getAndCheckElementFromDataset(item, ObservationStartDateTime, "1", "3", "ProtocolContextSequence"); ConceptNameCodeSequence.read(item, "1-n", "1", "ProtocolContextSequence"); getAndCheckElementFromDataset(item, DateTime, "1", "1C", "ProtocolContextSequence"); getAndCheckElementFromDataset(item, Date, "1", "1C", "ProtocolContextSequence"); @@ -189,6 +195,7 @@ OFCondition DRTProtocolContextSequence::Item::write(DcmItem &item) result = EC_Normal; addElementToDataset(result, item, new DcmCodeString(ValueType), "1", "1", "ProtocolContextSequence"); addElementToDataset(result, item, new DcmDateTime(ObservationDateTime), "1", "3", "ProtocolContextSequence"); + addElementToDataset(result, item, new DcmDateTime(ObservationStartDateTime), "1", "3", "ProtocolContextSequence"); if (result.good()) result = ConceptNameCodeSequence.write(item, "1-n", "1", "ProtocolContextSequence"); addElementToDataset(result, item, new DcmDateTime(DateTime), "1", "1C", "ProtocolContextSequence"); addElementToDataset(result, item, new DcmDate(Date), "1", "1C", "ProtocolContextSequence"); @@ -272,6 +279,15 @@ OFCondition DRTProtocolContextSequence::Item::getObservationDateTime(OFString &v } +OFCondition DRTProtocolContextSequence::Item::getObservationStartDateTime(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ObservationStartDateTime, value, pos); +} + + OFCondition DRTProtocolContextSequence::Item::getPersonName(OFString &value, const signed long pos) const { if (EmptyDefaultItem) @@ -396,6 +412,19 @@ OFCondition DRTProtocolContextSequence::Item::setObservationDateTime(const OFStr } +OFCondition DRTProtocolContextSequence::Item::setObservationStartDateTime(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ObservationStartDateTime.putOFStringArray(value); + } + return result; +} + + OFCondition DRTProtocolContextSequence::Item::setPersonName(const OFString &value, const OFBool check) { OFCondition result = EC_IllegalCall; @@ -603,10 +632,12 @@ OFCondition DRTProtocolContextSequence::gotoFirstItem() OFCondition DRTProtocolContextSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtpdecs.cc b/dcmrt/libsrc/drtpdecs.cc index 1c00ae75..67c3de1a 100644 --- a/dcmrt/libsrc/drtpdecs.cc +++ b/dcmrt/libsrc/drtpdecs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTPrivateDataElementCharacteristicsSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -336,10 +336,12 @@ OFCondition DRTPrivateDataElementCharacteristicsSequence::gotoFirstItem() OFCondition DRTPrivateDataElementCharacteristicsSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtpdeds.cc b/dcmrt/libsrc/drtpdeds.cc index a99bf9e2..41069998 100644 --- a/dcmrt/libsrc/drtpdeds.cc +++ b/dcmrt/libsrc/drtpdeds.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTPrivateDataElementDefinitionSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -463,10 +463,12 @@ OFCondition DRTPrivateDataElementDefinitionSequence::gotoFirstItem() OFCondition DRTPrivateDataElementDefinitionSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtpfms.cc b/dcmrt/libsrc/drtpfms.cc index 1a630558..07ffa3fb 100644 --- a/dcmrt/libsrc/drtpfms.cc +++ b/dcmrt/libsrc/drtpfms.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTPrimaryFluenceModeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -272,10 +272,12 @@ OFCondition DRTPrimaryFluenceModeSequence::gotoFirstItem() OFCondition DRTPrimaryFluenceModeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtpics.cc b/dcmrt/libsrc/drtpics.cc index 9ececd0b..51502f16 100644 --- a/dcmrt/libsrc/drtpics.cc +++ b/dcmrt/libsrc/drtpics.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTPersonIdentificationCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -656,10 +656,12 @@ OFCondition DRTPersonIdentificationCodeSequence::gotoFirstItem() OFCondition DRTPersonIdentificationCodeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtplan.cc b/dcmrt/libsrc/drtplan.cc index 7ee0a627..1c47f8fd 100644 --- a/dcmrt/libsrc/drtplan.cc +++ b/dcmrt/libsrc/drtplan.cc @@ -1,14 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTPlanIOD * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * Last modified on 2022-01-26 by Riesmeier + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -23,6 +22,7 @@ DRTPlanIOD::DRTPlanIOD() PatientID(DCM_PatientID), IssuerOfPatientID(DCM_IssuerOfPatientID), IssuerOfPatientIDQualifiersSequence(), + TypeOfPatientID(DCM_TypeOfPatientID), PatientBirthDate(DCM_PatientBirthDate), PatientBirthDateInAlternativeCalendar(DCM_PatientBirthDateInAlternativeCalendar), PatientDeathDateInAlternativeCalendar(DCM_PatientDeathDateInAlternativeCalendar), @@ -79,6 +79,7 @@ DRTPlanIOD::DRTPlanIOD() PhysiciansOfRecordIdentificationSequence(), NameOfPhysiciansReadingStudy(DCM_NameOfPhysiciansReadingStudy), PhysiciansReadingStudyIdentificationSequence(), + RequestingService(DCM_RequestingService), RequestingServiceCodeSequence(), ReferencedStudySequence(), ProcedureCodeSequence(), @@ -102,12 +103,15 @@ DRTPlanIOD::DRTPlanIOD() AdditionalPatientHistory(DCM_AdditionalPatientHistory), AdmissionID(DCM_AdmissionID), IssuerOfAdmissionIDSequence(), + ReasonForVisit(DCM_ReasonForVisit), + ReasonForVisitCodeSequence(), ServiceEpisodeID(DCM_ServiceEpisodeID), IssuerOfServiceEpisodeIDSequence(), ServiceEpisodeDescription(DCM_ServiceEpisodeDescription), PatientSexNeutered(DCM_PatientSexNeutered), ClinicalTrialTimePointID(DCM_ClinicalTrialTimePointID), ClinicalTrialTimePointDescription(DCM_ClinicalTrialTimePointDescription), + ClinicalTrialTimePointTypeCodeSequence(), LongitudinalTemporalOffsetFromEvent(DCM_LongitudinalTemporalOffsetFromEvent), LongitudinalTemporalEventType(DCM_LongitudinalTemporalEventType), ConsentForClinicalTrialUseSequence(), @@ -130,6 +134,7 @@ DRTPlanIOD::DRTPlanIOD() PerformedProcedureStepDescription(DCM_PerformedProcedureStepDescription), PerformedProtocolCodeSequence(), CommentsOnThePerformedProcedureStep(DCM_CommentsOnThePerformedProcedureStep), + TreatmentSessionUID(DCM_TreatmentSessionUID), ClinicalTrialCoordinatingCenterName(DCM_ClinicalTrialCoordinatingCenterName), ClinicalTrialSeriesID(DCM_ClinicalTrialSeriesID), ClinicalTrialSeriesDescription(DCM_ClinicalTrialSeriesDescription), @@ -140,11 +145,14 @@ DRTPlanIOD::DRTPlanIOD() InstitutionAddress(DCM_InstitutionAddress), StationName(DCM_StationName), InstitutionalDepartmentName(DCM_InstitutionalDepartmentName), + InstitutionalDepartmentTypeCodeSequence(), ManufacturerModelName(DCM_ManufacturerModelName), + ManufacturerDeviceClassUID(DCM_ManufacturerDeviceClassUID), DeviceSerialNumber(DCM_DeviceSerialNumber), SoftwareVersions(DCM_SoftwareVersions), GantryID(DCM_GantryID), UDISequence(), + DeviceUID(DCM_DeviceUID), SpatialResolution(DCM_SpatialResolution), DateOfLastCalibration(DCM_DateOfLastCalibration), TimeOfLastCalibration(DCM_TimeOfLastCalibration), @@ -157,7 +165,8 @@ DRTPlanIOD::DRTPlanIOD() RTPlanTime(DCM_RTPlanTime), TreatmentProtocols(DCM_TreatmentProtocols), PlanIntent(DCM_PlanIntent), - TreatmentSites(DCM_RETIRED_TreatmentSites), + TreatmentSite(DCM_TreatmentSite), + TreatmentSiteCodeSequence(), RTPlanGeometry(DCM_RTPlanGeometry), ReferencedStructureSetSequence(), ReferencedDoseSequence(), @@ -212,6 +221,10 @@ DRTPlanIOD::DRTPlanIOD() ConversionSourceAttributesSequence(), ContentQualification(DCM_ContentQualification), PrivateDataElementCharacteristicsSequence(), + InstanceOriginStatus(DCM_InstanceOriginStatus), + BarcodeValue(DCM_BarcodeValue), + ReferencedDefinedProtocolSequence(), + ReferencedPerformedProtocolSequence(), ReferencedSeriesSequence(), StudiesContainingOtherReferencedInstancesSequence() { @@ -225,6 +238,7 @@ DRTPlanIOD::DRTPlanIOD(const DRTPlanIOD ©) PatientID(copy.PatientID), IssuerOfPatientID(copy.IssuerOfPatientID), IssuerOfPatientIDQualifiersSequence(copy.IssuerOfPatientIDQualifiersSequence), + TypeOfPatientID(copy.TypeOfPatientID), PatientBirthDate(copy.PatientBirthDate), PatientBirthDateInAlternativeCalendar(copy.PatientBirthDateInAlternativeCalendar), PatientDeathDateInAlternativeCalendar(copy.PatientDeathDateInAlternativeCalendar), @@ -281,6 +295,7 @@ DRTPlanIOD::DRTPlanIOD(const DRTPlanIOD ©) PhysiciansOfRecordIdentificationSequence(copy.PhysiciansOfRecordIdentificationSequence), NameOfPhysiciansReadingStudy(copy.NameOfPhysiciansReadingStudy), PhysiciansReadingStudyIdentificationSequence(copy.PhysiciansReadingStudyIdentificationSequence), + RequestingService(copy.RequestingService), RequestingServiceCodeSequence(copy.RequestingServiceCodeSequence), ReferencedStudySequence(copy.ReferencedStudySequence), ProcedureCodeSequence(copy.ProcedureCodeSequence), @@ -304,12 +319,15 @@ DRTPlanIOD::DRTPlanIOD(const DRTPlanIOD ©) AdditionalPatientHistory(copy.AdditionalPatientHistory), AdmissionID(copy.AdmissionID), IssuerOfAdmissionIDSequence(copy.IssuerOfAdmissionIDSequence), + ReasonForVisit(copy.ReasonForVisit), + ReasonForVisitCodeSequence(copy.ReasonForVisitCodeSequence), ServiceEpisodeID(copy.ServiceEpisodeID), IssuerOfServiceEpisodeIDSequence(copy.IssuerOfServiceEpisodeIDSequence), ServiceEpisodeDescription(copy.ServiceEpisodeDescription), PatientSexNeutered(copy.PatientSexNeutered), ClinicalTrialTimePointID(copy.ClinicalTrialTimePointID), ClinicalTrialTimePointDescription(copy.ClinicalTrialTimePointDescription), + ClinicalTrialTimePointTypeCodeSequence(copy.ClinicalTrialTimePointTypeCodeSequence), LongitudinalTemporalOffsetFromEvent(copy.LongitudinalTemporalOffsetFromEvent), LongitudinalTemporalEventType(copy.LongitudinalTemporalEventType), ConsentForClinicalTrialUseSequence(copy.ConsentForClinicalTrialUseSequence), @@ -332,6 +350,7 @@ DRTPlanIOD::DRTPlanIOD(const DRTPlanIOD ©) PerformedProcedureStepDescription(copy.PerformedProcedureStepDescription), PerformedProtocolCodeSequence(copy.PerformedProtocolCodeSequence), CommentsOnThePerformedProcedureStep(copy.CommentsOnThePerformedProcedureStep), + TreatmentSessionUID(copy.TreatmentSessionUID), ClinicalTrialCoordinatingCenterName(copy.ClinicalTrialCoordinatingCenterName), ClinicalTrialSeriesID(copy.ClinicalTrialSeriesID), ClinicalTrialSeriesDescription(copy.ClinicalTrialSeriesDescription), @@ -342,11 +361,14 @@ DRTPlanIOD::DRTPlanIOD(const DRTPlanIOD ©) InstitutionAddress(copy.InstitutionAddress), StationName(copy.StationName), InstitutionalDepartmentName(copy.InstitutionalDepartmentName), + InstitutionalDepartmentTypeCodeSequence(copy.InstitutionalDepartmentTypeCodeSequence), ManufacturerModelName(copy.ManufacturerModelName), + ManufacturerDeviceClassUID(copy.ManufacturerDeviceClassUID), DeviceSerialNumber(copy.DeviceSerialNumber), SoftwareVersions(copy.SoftwareVersions), GantryID(copy.GantryID), UDISequence(copy.UDISequence), + DeviceUID(copy.DeviceUID), SpatialResolution(copy.SpatialResolution), DateOfLastCalibration(copy.DateOfLastCalibration), TimeOfLastCalibration(copy.TimeOfLastCalibration), @@ -359,7 +381,8 @@ DRTPlanIOD::DRTPlanIOD(const DRTPlanIOD ©) RTPlanTime(copy.RTPlanTime), TreatmentProtocols(copy.TreatmentProtocols), PlanIntent(copy.PlanIntent), - TreatmentSites(copy.TreatmentSites), + TreatmentSite(copy.TreatmentSite), + TreatmentSiteCodeSequence(copy.TreatmentSiteCodeSequence), RTPlanGeometry(copy.RTPlanGeometry), ReferencedStructureSetSequence(copy.ReferencedStructureSetSequence), ReferencedDoseSequence(copy.ReferencedDoseSequence), @@ -414,6 +437,10 @@ DRTPlanIOD::DRTPlanIOD(const DRTPlanIOD ©) ConversionSourceAttributesSequence(copy.ConversionSourceAttributesSequence), ContentQualification(copy.ContentQualification), PrivateDataElementCharacteristicsSequence(copy.PrivateDataElementCharacteristicsSequence), + InstanceOriginStatus(copy.InstanceOriginStatus), + BarcodeValue(copy.BarcodeValue), + ReferencedDefinedProtocolSequence(copy.ReferencedDefinedProtocolSequence), + ReferencedPerformedProtocolSequence(copy.ReferencedPerformedProtocolSequence), ReferencedSeriesSequence(copy.ReferencedSeriesSequence), StudiesContainingOtherReferencedInstancesSequence(copy.StudiesContainingOtherReferencedInstancesSequence) { @@ -433,6 +460,7 @@ DRTPlanIOD &DRTPlanIOD::operator=(const DRTPlanIOD ©) PatientID = copy.PatientID; IssuerOfPatientID = copy.IssuerOfPatientID; IssuerOfPatientIDQualifiersSequence = copy.IssuerOfPatientIDQualifiersSequence; + TypeOfPatientID = copy.TypeOfPatientID; PatientBirthDate = copy.PatientBirthDate; PatientBirthDateInAlternativeCalendar = copy.PatientBirthDateInAlternativeCalendar; PatientDeathDateInAlternativeCalendar = copy.PatientDeathDateInAlternativeCalendar; @@ -489,6 +517,7 @@ DRTPlanIOD &DRTPlanIOD::operator=(const DRTPlanIOD ©) PhysiciansOfRecordIdentificationSequence = copy.PhysiciansOfRecordIdentificationSequence; NameOfPhysiciansReadingStudy = copy.NameOfPhysiciansReadingStudy; PhysiciansReadingStudyIdentificationSequence = copy.PhysiciansReadingStudyIdentificationSequence; + RequestingService = copy.RequestingService; RequestingServiceCodeSequence = copy.RequestingServiceCodeSequence; ReferencedStudySequence = copy.ReferencedStudySequence; ProcedureCodeSequence = copy.ProcedureCodeSequence; @@ -512,12 +541,15 @@ DRTPlanIOD &DRTPlanIOD::operator=(const DRTPlanIOD ©) AdditionalPatientHistory = copy.AdditionalPatientHistory; AdmissionID = copy.AdmissionID; IssuerOfAdmissionIDSequence = copy.IssuerOfAdmissionIDSequence; + ReasonForVisit = copy.ReasonForVisit; + ReasonForVisitCodeSequence = copy.ReasonForVisitCodeSequence; ServiceEpisodeID = copy.ServiceEpisodeID; IssuerOfServiceEpisodeIDSequence = copy.IssuerOfServiceEpisodeIDSequence; ServiceEpisodeDescription = copy.ServiceEpisodeDescription; PatientSexNeutered = copy.PatientSexNeutered; ClinicalTrialTimePointID = copy.ClinicalTrialTimePointID; ClinicalTrialTimePointDescription = copy.ClinicalTrialTimePointDescription; + ClinicalTrialTimePointTypeCodeSequence = copy.ClinicalTrialTimePointTypeCodeSequence; LongitudinalTemporalOffsetFromEvent = copy.LongitudinalTemporalOffsetFromEvent; LongitudinalTemporalEventType = copy.LongitudinalTemporalEventType; ConsentForClinicalTrialUseSequence = copy.ConsentForClinicalTrialUseSequence; @@ -540,6 +572,7 @@ DRTPlanIOD &DRTPlanIOD::operator=(const DRTPlanIOD ©) PerformedProcedureStepDescription = copy.PerformedProcedureStepDescription; PerformedProtocolCodeSequence = copy.PerformedProtocolCodeSequence; CommentsOnThePerformedProcedureStep = copy.CommentsOnThePerformedProcedureStep; + TreatmentSessionUID = copy.TreatmentSessionUID; ClinicalTrialCoordinatingCenterName = copy.ClinicalTrialCoordinatingCenterName; ClinicalTrialSeriesID = copy.ClinicalTrialSeriesID; ClinicalTrialSeriesDescription = copy.ClinicalTrialSeriesDescription; @@ -550,11 +583,14 @@ DRTPlanIOD &DRTPlanIOD::operator=(const DRTPlanIOD ©) InstitutionAddress = copy.InstitutionAddress; StationName = copy.StationName; InstitutionalDepartmentName = copy.InstitutionalDepartmentName; + InstitutionalDepartmentTypeCodeSequence = copy.InstitutionalDepartmentTypeCodeSequence; ManufacturerModelName = copy.ManufacturerModelName; + ManufacturerDeviceClassUID = copy.ManufacturerDeviceClassUID; DeviceSerialNumber = copy.DeviceSerialNumber; SoftwareVersions = copy.SoftwareVersions; GantryID = copy.GantryID; UDISequence = copy.UDISequence; + DeviceUID = copy.DeviceUID; SpatialResolution = copy.SpatialResolution; DateOfLastCalibration = copy.DateOfLastCalibration; TimeOfLastCalibration = copy.TimeOfLastCalibration; @@ -567,7 +603,8 @@ DRTPlanIOD &DRTPlanIOD::operator=(const DRTPlanIOD ©) RTPlanTime = copy.RTPlanTime; TreatmentProtocols = copy.TreatmentProtocols; PlanIntent = copy.PlanIntent; - TreatmentSites = copy.TreatmentSites; + TreatmentSite = copy.TreatmentSite; + TreatmentSiteCodeSequence = copy.TreatmentSiteCodeSequence; RTPlanGeometry = copy.RTPlanGeometry; ReferencedStructureSetSequence = copy.ReferencedStructureSetSequence; ReferencedDoseSequence = copy.ReferencedDoseSequence; @@ -622,6 +659,10 @@ DRTPlanIOD &DRTPlanIOD::operator=(const DRTPlanIOD ©) ConversionSourceAttributesSequence = copy.ConversionSourceAttributesSequence; ContentQualification = copy.ContentQualification; PrivateDataElementCharacteristicsSequence = copy.PrivateDataElementCharacteristicsSequence; + InstanceOriginStatus = copy.InstanceOriginStatus; + BarcodeValue = copy.BarcodeValue; + ReferencedDefinedProtocolSequence = copy.ReferencedDefinedProtocolSequence; + ReferencedPerformedProtocolSequence = copy.ReferencedPerformedProtocolSequence; ReferencedSeriesSequence = copy.ReferencedSeriesSequence; StudiesContainingOtherReferencedInstancesSequence = copy.StudiesContainingOtherReferencedInstancesSequence; } @@ -636,6 +677,7 @@ void DRTPlanIOD::clear() PatientID.clear(); IssuerOfPatientID.clear(); IssuerOfPatientIDQualifiersSequence.clear(); + TypeOfPatientID.clear(); PatientBirthDate.clear(); PatientBirthDateInAlternativeCalendar.clear(); PatientDeathDateInAlternativeCalendar.clear(); @@ -692,6 +734,7 @@ void DRTPlanIOD::clear() PhysiciansOfRecordIdentificationSequence.clear(); NameOfPhysiciansReadingStudy.clear(); PhysiciansReadingStudyIdentificationSequence.clear(); + RequestingService.clear(); RequestingServiceCodeSequence.clear(); ReferencedStudySequence.clear(); ProcedureCodeSequence.clear(); @@ -715,12 +758,15 @@ void DRTPlanIOD::clear() AdditionalPatientHistory.clear(); AdmissionID.clear(); IssuerOfAdmissionIDSequence.clear(); + ReasonForVisit.clear(); + ReasonForVisitCodeSequence.clear(); ServiceEpisodeID.clear(); IssuerOfServiceEpisodeIDSequence.clear(); ServiceEpisodeDescription.clear(); PatientSexNeutered.clear(); ClinicalTrialTimePointID.clear(); ClinicalTrialTimePointDescription.clear(); + ClinicalTrialTimePointTypeCodeSequence.clear(); LongitudinalTemporalOffsetFromEvent.clear(); LongitudinalTemporalEventType.clear(); ConsentForClinicalTrialUseSequence.clear(); @@ -743,6 +789,7 @@ void DRTPlanIOD::clear() PerformedProcedureStepDescription.clear(); PerformedProtocolCodeSequence.clear(); CommentsOnThePerformedProcedureStep.clear(); + TreatmentSessionUID.clear(); ClinicalTrialCoordinatingCenterName.clear(); ClinicalTrialSeriesID.clear(); ClinicalTrialSeriesDescription.clear(); @@ -753,11 +800,14 @@ void DRTPlanIOD::clear() InstitutionAddress.clear(); StationName.clear(); InstitutionalDepartmentName.clear(); + InstitutionalDepartmentTypeCodeSequence.clear(); ManufacturerModelName.clear(); + ManufacturerDeviceClassUID.clear(); DeviceSerialNumber.clear(); SoftwareVersions.clear(); GantryID.clear(); UDISequence.clear(); + DeviceUID.clear(); SpatialResolution.clear(); DateOfLastCalibration.clear(); TimeOfLastCalibration.clear(); @@ -770,7 +820,8 @@ void DRTPlanIOD::clear() RTPlanTime.clear(); TreatmentProtocols.clear(); PlanIntent.clear(); - TreatmentSites.clear(); + TreatmentSite.clear(); + TreatmentSiteCodeSequence.clear(); RTPlanGeometry.clear(); ReferencedStructureSetSequence.clear(); ReferencedDoseSequence.clear(); @@ -825,6 +876,10 @@ void DRTPlanIOD::clear() ConversionSourceAttributesSequence.clear(); ContentQualification.clear(); PrivateDataElementCharacteristicsSequence.clear(); + InstanceOriginStatus.clear(); + BarcodeValue.clear(); + ReferencedDefinedProtocolSequence.clear(); + ReferencedPerformedProtocolSequence.clear(); ReferencedSeriesSequence.clear(); StudiesContainingOtherReferencedInstancesSequence.clear(); } @@ -888,11 +943,14 @@ OFCondition DRTPlanIOD::read(DcmItem &dataset) getAndCheckElementFromDataset(dataset, InstitutionAddress, "1", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, StationName, "1", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, InstitutionalDepartmentName, "1", "3", "GeneralEquipmentModule"); + InstitutionalDepartmentTypeCodeSequence.read(dataset, "1-n", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, ManufacturerModelName, "1", "3", "GeneralEquipmentModule"); + getAndCheckElementFromDataset(dataset, ManufacturerDeviceClassUID, "1-n", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, DeviceSerialNumber, "1", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, SoftwareVersions, "1-n", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, GantryID, "1", "3", "GeneralEquipmentModule"); UDISequence.read(dataset, "1-n", "3", "GeneralEquipmentModule"); + getAndCheckElementFromDataset(dataset, DeviceUID, "1", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, SpatialResolution, "1", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, DateOfLastCalibration, "1-n", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, TimeOfLastCalibration, "1-n", "3", "GeneralEquipmentModule"); @@ -907,7 +965,8 @@ OFCondition DRTPlanIOD::read(DcmItem &dataset) getAndCheckElementFromDataset(dataset, RTPlanTime, "1", "2", "RTGeneralPlanModule"); getAndCheckElementFromDataset(dataset, TreatmentProtocols, "1-n", "3", "RTGeneralPlanModule"); getAndCheckElementFromDataset(dataset, PlanIntent, "1", "3", "RTGeneralPlanModule"); - getAndCheckElementFromDataset(dataset, TreatmentSites, "1-n", "3", "RTGeneralPlanModule"); + getAndCheckElementFromDataset(dataset, TreatmentSite, "1", "3", "RTGeneralPlanModule"); + TreatmentSiteCodeSequence.read(dataset, "1-n", "3", "RTGeneralPlanModule"); getAndCheckElementFromDataset(dataset, RTPlanGeometry, "1", "1", "RTGeneralPlanModule"); ReferencedStructureSetSequence.read(dataset, "1-n", "1C", "RTGeneralPlanModule"); ReferencedDoseSequence.read(dataset, "1-n", "3", "RTGeneralPlanModule"); @@ -1000,6 +1059,10 @@ OFCondition DRTPlanIOD::read(DcmItem &dataset) ConversionSourceAttributesSequence.read(dataset, "1-n", "1C", "SOPCommonModule"); getAndCheckElementFromDataset(dataset, ContentQualification, "1", "3", "SOPCommonModule"); PrivateDataElementCharacteristicsSequence.read(dataset, "1-n", "3", "SOPCommonModule"); + getAndCheckElementFromDataset(dataset, InstanceOriginStatus, "1", "3", "SOPCommonModule"); + getAndCheckElementFromDataset(dataset, BarcodeValue, "1", "3", "SOPCommonModule"); + ReferencedDefinedProtocolSequence.read(dataset, "1-n", "1C", "SOPCommonModule"); + ReferencedPerformedProtocolSequence.read(dataset, "1-n", "1C", "SOPCommonModule"); // --- CommonInstanceReferenceModule (U) --- ReferencedSeriesSequence.read(dataset, "1-n", "1C", "CommonInstanceReferenceModule"); @@ -1018,6 +1081,7 @@ OFCondition DRTPlanIOD::readPatientData(DcmItem &dataset) getAndCheckElementFromDataset(dataset, PatientID, "1", "2", "PatientModule"); getAndCheckElementFromDataset(dataset, IssuerOfPatientID, "1", "3", "PatientModule"); IssuerOfPatientIDQualifiersSequence.read(dataset, "1-n", "3", "PatientModule"); + getAndCheckElementFromDataset(dataset, TypeOfPatientID, "1", "3", "PatientModule"); getAndCheckElementFromDataset(dataset, PatientBirthDate, "1", "2", "PatientModule"); getAndCheckElementFromDataset(dataset, PatientBirthDateInAlternativeCalendar, "1", "3", "PatientModule"); getAndCheckElementFromDataset(dataset, PatientDeathDateInAlternativeCalendar, "1", "3", "PatientModule"); @@ -1094,6 +1158,7 @@ OFCondition DRTPlanIOD::readStudyData(DcmItem &dataset) PhysiciansOfRecordIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule"); getAndCheckElementFromDataset(dataset, NameOfPhysiciansReadingStudy, "1-n", "3", "GeneralStudyModule"); PhysiciansReadingStudyIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule"); + getAndCheckElementFromDataset(dataset, RequestingService, "1", "3", "GeneralStudyModule"); RequestingServiceCodeSequence.read(dataset, "1-n", "3", "GeneralStudyModule"); ReferencedStudySequence.read(dataset, "1-n", "3", "GeneralStudyModule"); ProcedureCodeSequence.read(dataset, "1-n", "3", "GeneralStudyModule"); @@ -1119,6 +1184,8 @@ OFCondition DRTPlanIOD::readStudyData(DcmItem &dataset) getAndCheckElementFromDataset(dataset, AdditionalPatientHistory, "1", "3", "PatientStudyModule"); getAndCheckElementFromDataset(dataset, AdmissionID, "1", "3", "PatientStudyModule"); IssuerOfAdmissionIDSequence.read(dataset, "1-n", "3", "PatientStudyModule"); + getAndCheckElementFromDataset(dataset, ReasonForVisit, "1", "3", "PatientStudyModule"); + ReasonForVisitCodeSequence.read(dataset, "1-n", "3", "PatientStudyModule"); getAndCheckElementFromDataset(dataset, ServiceEpisodeID, "1", "3", "PatientStudyModule"); IssuerOfServiceEpisodeIDSequence.read(dataset, "1-n", "3", "PatientStudyModule"); getAndCheckElementFromDataset(dataset, ServiceEpisodeDescription, "1", "3", "PatientStudyModule"); @@ -1129,6 +1196,7 @@ OFCondition DRTPlanIOD::readStudyData(DcmItem &dataset) { getAndCheckElementFromDataset(dataset, ClinicalTrialTimePointID, "1", "2", "ClinicalTrialStudyModule"); getAndCheckElementFromDataset(dataset, ClinicalTrialTimePointDescription, "1", "3", "ClinicalTrialStudyModule"); + ClinicalTrialTimePointTypeCodeSequence.read(dataset, "1-n", "3", "ClinicalTrialStudyModule"); getAndCheckElementFromDataset(dataset, LongitudinalTemporalOffsetFromEvent, "1", "3", "ClinicalTrialStudyModule"); getAndCheckElementFromDataset(dataset, LongitudinalTemporalEventType, "1", "1C", "ClinicalTrialStudyModule"); ConsentForClinicalTrialUseSequence.read(dataset, "1-n", "3", "ClinicalTrialStudyModule"); @@ -1164,6 +1232,7 @@ OFCondition DRTPlanIOD::readSeriesData(DcmItem &dataset) getAndCheckElementFromDataset(dataset, PerformedProcedureStepDescription, "1", "3", "RTSeriesModule"); PerformedProtocolCodeSequence.read(dataset, "1-n", "3", "RTSeriesModule"); getAndCheckElementFromDataset(dataset, CommentsOnThePerformedProcedureStep, "1", "3", "RTSeriesModule"); + getAndCheckElementFromDataset(dataset, TreatmentSessionUID, "1", "3", "RTSeriesModule"); // --- ClinicalTrialSeriesModule (U) --- if (dataset.tagExists(DCM_ClinicalTrialCoordinatingCenterName)) @@ -1191,6 +1260,7 @@ OFCondition DRTPlanIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmLongString(PatientID), "1", "2", "PatientModule"); addElementToDataset(result, dataset, new DcmLongString(IssuerOfPatientID), "1", "3", "PatientModule"); if (result.good()) result = IssuerOfPatientIDQualifiersSequence.write(dataset, "1-n" ,"3", "PatientModule"); + addElementToDataset(result, dataset, new DcmCodeString(TypeOfPatientID), "1", "3", "PatientModule"); addElementToDataset(result, dataset, new DcmDate(PatientBirthDate), "1", "2", "PatientModule"); addElementToDataset(result, dataset, new DcmLongString(PatientBirthDateInAlternativeCalendar), "1", "3", "PatientModule"); addElementToDataset(result, dataset, new DcmLongString(PatientDeathDateInAlternativeCalendar), "1", "3", "PatientModule"); @@ -1254,6 +1324,7 @@ OFCondition DRTPlanIOD::write(DcmItem &dataset) if (result.good()) result = PhysiciansOfRecordIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule"); addElementToDataset(result, dataset, new DcmPersonName(NameOfPhysiciansReadingStudy), "1-n", "3", "GeneralStudyModule"); if (result.good()) result = PhysiciansReadingStudyIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule"); + addElementToDataset(result, dataset, new DcmLongString(RequestingService), "1", "3", "GeneralStudyModule"); if (result.good()) result = RequestingServiceCodeSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule"); if (result.good()) result = ReferencedStudySequence.write(dataset, "1-n" ,"3", "GeneralStudyModule"); if (result.good()) result = ProcedureCodeSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule"); @@ -1281,6 +1352,8 @@ OFCondition DRTPlanIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmLongText(AdditionalPatientHistory), "1", "3", "PatientStudyModule"); addElementToDataset(result, dataset, new DcmLongString(AdmissionID), "1", "3", "PatientStudyModule"); if (result.good()) result = IssuerOfAdmissionIDSequence.write(dataset, "1-n" ,"3", "PatientStudyModule"); + addElementToDataset(result, dataset, new DcmUnlimitedText(ReasonForVisit), "1", "3", "PatientStudyModule"); + if (result.good()) result = ReasonForVisitCodeSequence.write(dataset, "1-n" ,"3", "PatientStudyModule"); addElementToDataset(result, dataset, new DcmLongString(ServiceEpisodeID), "1", "3", "PatientStudyModule"); if (result.good()) result = IssuerOfServiceEpisodeIDSequence.write(dataset, "1-n" ,"3", "PatientStudyModule"); addElementToDataset(result, dataset, new DcmLongString(ServiceEpisodeDescription), "1", "3", "PatientStudyModule"); @@ -1292,6 +1365,7 @@ OFCondition DRTPlanIOD::write(DcmItem &dataset) { addElementToDataset(result, dataset, new DcmLongString(ClinicalTrialTimePointID), "1", "2", "ClinicalTrialStudyModule"); addElementToDataset(result, dataset, new DcmShortText(ClinicalTrialTimePointDescription), "1", "3", "ClinicalTrialStudyModule"); + if (result.good()) result = ClinicalTrialTimePointTypeCodeSequence.write(dataset, "1-n" ,"3", "ClinicalTrialStudyModule"); addElementToDataset(result, dataset, new DcmFloatingPointDouble(LongitudinalTemporalOffsetFromEvent), "1", "3", "ClinicalTrialStudyModule"); addElementToDataset(result, dataset, new DcmCodeString(LongitudinalTemporalEventType), "1", "1C", "ClinicalTrialStudyModule"); if (result.good()) result = ConsentForClinicalTrialUseSequence.write(dataset, "1-n" ,"3", "ClinicalTrialStudyModule"); @@ -1317,6 +1391,7 @@ OFCondition DRTPlanIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmLongString(PerformedProcedureStepDescription), "1", "3", "RTSeriesModule"); if (result.good()) result = PerformedProtocolCodeSequence.write(dataset, "1-n" ,"3", "RTSeriesModule"); addElementToDataset(result, dataset, new DcmShortText(CommentsOnThePerformedProcedureStep), "1", "3", "RTSeriesModule"); + addElementToDataset(result, dataset, new DcmUniqueIdentifier(TreatmentSessionUID), "1", "3", "RTSeriesModule"); // --- ClinicalTrialSeriesModule (U) --- if (isClinicalTrialSeriesModulePresent(OFFalse /*complete*/)) @@ -1339,11 +1414,14 @@ OFCondition DRTPlanIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmShortText(InstitutionAddress), "1", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmShortString(StationName), "1", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmLongString(InstitutionalDepartmentName), "1", "3", "GeneralEquipmentModule"); + if (result.good()) result = InstitutionalDepartmentTypeCodeSequence.write(dataset, "1-n" ,"3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmLongString(ManufacturerModelName), "1", "3", "GeneralEquipmentModule"); + addElementToDataset(result, dataset, new DcmUniqueIdentifier(ManufacturerDeviceClassUID), "1-n", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmLongString(DeviceSerialNumber), "1", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmLongString(SoftwareVersions), "1-n", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmLongString(GantryID), "1", "3", "GeneralEquipmentModule"); if (result.good()) result = UDISequence.write(dataset, "1-n" ,"3", "GeneralEquipmentModule"); + addElementToDataset(result, dataset, new DcmUniqueIdentifier(DeviceUID), "1", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmDecimalString(SpatialResolution), "1", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmDate(DateOfLastCalibration), "1-n", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmTime(TimeOfLastCalibration), "1-n", "3", "GeneralEquipmentModule"); @@ -1358,7 +1436,8 @@ OFCondition DRTPlanIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmTime(RTPlanTime), "1", "2", "RTGeneralPlanModule"); addElementToDataset(result, dataset, new DcmLongString(TreatmentProtocols), "1-n", "3", "RTGeneralPlanModule"); addElementToDataset(result, dataset, new DcmCodeString(PlanIntent), "1", "3", "RTGeneralPlanModule"); - addElementToDataset(result, dataset, new DcmLongString(TreatmentSites), "1-n", "3", "RTGeneralPlanModule"); + addElementToDataset(result, dataset, new DcmLongString(TreatmentSite), "1", "3", "RTGeneralPlanModule"); + if (result.good()) result = TreatmentSiteCodeSequence.write(dataset, "1-n" ,"3", "RTGeneralPlanModule"); addElementToDataset(result, dataset, new DcmCodeString(RTPlanGeometry), "1", "1", "RTGeneralPlanModule"); if (result.good()) result = ReferencedStructureSetSequence.write(dataset, "1-n" ,"1C", "RTGeneralPlanModule"); if (result.good()) result = ReferencedDoseSequence.write(dataset, "1-n" ,"3", "RTGeneralPlanModule"); @@ -1456,6 +1535,10 @@ OFCondition DRTPlanIOD::write(DcmItem &dataset) if (result.good()) result = ConversionSourceAttributesSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule"); addElementToDataset(result, dataset, new DcmCodeString(ContentQualification), "1", "3", "SOPCommonModule"); if (result.good()) result = PrivateDataElementCharacteristicsSequence.write(dataset, "1-n" ,"3", "SOPCommonModule"); + addElementToDataset(result, dataset, new DcmCodeString(InstanceOriginStatus), "1", "3", "SOPCommonModule"); + addElementToDataset(result, dataset, new DcmLongText(BarcodeValue), "1", "3", "SOPCommonModule"); + if (result.good()) result = ReferencedDefinedProtocolSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule"); + if (result.good()) result = ReferencedPerformedProtocolSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule"); // --- CommonInstanceReferenceModule (U) --- if (isCommonInstanceReferenceModulePresent(OFFalse /*complete*/)) @@ -1513,6 +1596,8 @@ OFBool DRTPlanIOD::isPatientStudyModulePresent(const OFBool /*complete*/) !AdditionalPatientHistory.isEmpty() || !AdmissionID.isEmpty() || !IssuerOfAdmissionIDSequence.isEmpty() || + !ReasonForVisit.isEmpty() || + !ReasonForVisitCodeSequence.isEmpty() || !ServiceEpisodeID.isEmpty() || !IssuerOfServiceEpisodeIDSequence.isEmpty() || !ServiceEpisodeDescription.isEmpty() || @@ -1525,6 +1610,7 @@ OFBool DRTPlanIOD::isClinicalTrialStudyModulePresent(const OFBool /*complete*/) /* check whether at least one attribute is present */ return !ClinicalTrialTimePointID.isEmpty() || !ClinicalTrialTimePointDescription.isEmpty() || + !ClinicalTrialTimePointTypeCodeSequence.isEmpty() || !LongitudinalTemporalOffsetFromEvent.isEmpty() || !LongitudinalTemporalEventType.isEmpty() || !ConsentForClinicalTrialUseSequence.isEmpty(); @@ -1689,6 +1775,12 @@ OFCondition DRTPlanIOD::getAuthorizationEquipmentCertificationNumber(OFString &v } +OFCondition DRTPlanIOD::getBarcodeValue(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(BarcodeValue, value, pos); +} + + OFCondition DRTPlanIOD::getBrachyTreatmentTechnique(OFString &value, const signed long pos) const { return getStringValueFromElement(BrachyTreatmentTechnique, value, pos); @@ -1827,6 +1919,12 @@ OFCondition DRTPlanIOD::getDeviceSerialNumber(OFString &value, const signed long } +OFCondition DRTPlanIOD::getDeviceUID(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(DeviceUID, value, pos); +} + + OFCondition DRTPlanIOD::getEthnicGroup(OFString &value, const signed long pos) const { return getStringValueFromElement(EthnicGroup, value, pos); @@ -1887,6 +1985,12 @@ OFCondition DRTPlanIOD::getInstanceNumber(Sint32 &value, const unsigned long pos } +OFCondition DRTPlanIOD::getInstanceOriginStatus(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(InstanceOriginStatus, value, pos); +} + + OFCondition DRTPlanIOD::getInstitutionAddress(OFString &value, const signed long pos) const { return getStringValueFromElement(InstitutionAddress, value, pos); @@ -1941,6 +2045,12 @@ OFCondition DRTPlanIOD::getManufacturer(OFString &value, const signed long pos) } +OFCondition DRTPlanIOD::getManufacturerDeviceClassUID(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(ManufacturerDeviceClassUID, value, pos); +} + + OFCondition DRTPlanIOD::getManufacturerModelName(OFString &value, const signed long pos) const { return getStringValueFromElement(ManufacturerModelName, value, pos); @@ -2259,6 +2369,12 @@ OFCondition DRTPlanIOD::getRTPlanTime(OFString &value, const signed long pos) co } +OFCondition DRTPlanIOD::getReasonForVisit(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(ReasonForVisit, value, pos); +} + + OFCondition DRTPlanIOD::getReferringPhysicianName(OFString &value, const signed long pos) const { return getStringValueFromElement(ReferringPhysicianName, value, pos); @@ -2271,6 +2387,12 @@ OFCondition DRTPlanIOD::getRelatedGeneralSOPClassUID(OFString &value, const sign } +OFCondition DRTPlanIOD::getRequestingService(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(RequestingService, value, pos); +} + + OFCondition DRTPlanIOD::getResponsibleOrganization(OFString &value, const signed long pos) const { return getStringValueFromElement(ResponsibleOrganization, value, pos); @@ -2487,9 +2609,21 @@ OFCondition DRTPlanIOD::getTreatmentProtocols(OFString &value, const signed long } -OFCondition DRTPlanIOD::getTreatmentSites(OFString &value, const signed long pos) const +OFCondition DRTPlanIOD::getTreatmentSessionUID(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(TreatmentSessionUID, value, pos); +} + + +OFCondition DRTPlanIOD::getTreatmentSite(OFString &value, const signed long pos) const { - return getStringValueFromElement(TreatmentSites, value, pos); + return getStringValueFromElement(TreatmentSite, value, pos); +} + + +OFCondition DRTPlanIOD::getTypeOfPatientID(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(TypeOfPatientID, value, pos); } @@ -2556,6 +2690,15 @@ OFCondition DRTPlanIOD::setAuthorizationEquipmentCertificationNumber(const OFStr } +OFCondition DRTPlanIOD::setBarcodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmLongText::checkStringValue(value) : EC_Normal; + if (result.good()) + result = BarcodeValue.putOFStringArray(value); + return result; +} + + OFCondition DRTPlanIOD::setBrachyTreatmentTechnique(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; @@ -2763,6 +2906,15 @@ OFCondition DRTPlanIOD::setDeviceSerialNumber(const OFString &value, const OFBoo } +OFCondition DRTPlanIOD::setDeviceUID(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = DeviceUID.putOFStringArray(value); + return result; +} + + OFCondition DRTPlanIOD::setEthnicGroup(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; @@ -2841,6 +2993,15 @@ OFCondition DRTPlanIOD::setInstanceNumber(const OFString &value, const OFBool ch } +OFCondition DRTPlanIOD::setInstanceOriginStatus(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = InstanceOriginStatus.putOFStringArray(value); + return result; +} + + OFCondition DRTPlanIOD::setInstitutionAddress(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal; @@ -2919,6 +3080,15 @@ OFCondition DRTPlanIOD::setManufacturer(const OFString &value, const OFBool chec } +OFCondition DRTPlanIOD::setManufacturerDeviceClassUID(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1-n") : EC_Normal; + if (result.good()) + result = ManufacturerDeviceClassUID.putOFStringArray(value); + return result; +} + + OFCondition DRTPlanIOD::setManufacturerModelName(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; @@ -3345,6 +3515,15 @@ OFCondition DRTPlanIOD::setRTPlanTime(const OFString &value, const OFBool check) } +OFCondition DRTPlanIOD::setReasonForVisit(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmUnlimitedText::checkStringValue(value) : EC_Normal; + if (result.good()) + result = ReasonForVisit.putOFStringArray(value); + return result; +} + + OFCondition DRTPlanIOD::setReferringPhysicianName(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmPersonName::checkStringValue(value, "1") : EC_Normal; @@ -3363,6 +3542,15 @@ OFCondition DRTPlanIOD::setRelatedGeneralSOPClassUID(const OFString &value, cons } +OFCondition DRTPlanIOD::setRequestingService(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = RequestingService.putOFStringArray(value); + return result; +} + + OFCondition DRTPlanIOD::setResponsibleOrganization(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; @@ -3669,11 +3857,29 @@ OFCondition DRTPlanIOD::setTreatmentProtocols(const OFString &value, const OFBoo } -OFCondition DRTPlanIOD::setTreatmentSites(const OFString &value, const OFBool check) +OFCondition DRTPlanIOD::setTreatmentSessionUID(const OFString &value, const OFBool check) { - OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1-n") : EC_Normal; + OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = TreatmentSessionUID.putOFStringArray(value); + return result; +} + + +OFCondition DRTPlanIOD::setTreatmentSite(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = TreatmentSite.putOFStringArray(value); + return result; +} + + +OFCondition DRTPlanIOD::setTypeOfPatientID(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; if (result.good()) - result = TreatmentSites.putOFStringArray(value); + result = TypeOfPatientID.putOFStringArray(value); return result; } diff --git a/dcmrt/libsrc/drtplos.cc b/dcmrt/libsrc/drtplos.cc new file mode 100644 index 00000000..982fe587 --- /dev/null +++ b/dcmrt/libsrc/drtplos.cc @@ -0,0 +1,691 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTPlanOverviewSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtplos.h" + + +// --- item class --- + +DRTPlanOverviewSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + CurrentFractionNumber(DCM_CurrentFractionNumber), + NumberOfFractionsIncluded(DCM_NumberOfFractionsIncluded), + PlanOverviewIndex(DCM_PlanOverviewIndex), + PrescriptionOverviewSequence(emptyDefaultItem /*emptyDefaultSequence*/), + RTPlanLabel(DCM_RTPlanLabel), + ReferencedImageSequence(emptyDefaultItem /*emptyDefaultSequence*/), + ReferencedStructureSetSequence(emptyDefaultItem /*emptyDefaultSequence*/), + TreatmentSite(DCM_TreatmentSite), + TreatmentSiteCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/) +{ +} + + +DRTPlanOverviewSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + CurrentFractionNumber(copy.CurrentFractionNumber), + NumberOfFractionsIncluded(copy.NumberOfFractionsIncluded), + PlanOverviewIndex(copy.PlanOverviewIndex), + PrescriptionOverviewSequence(copy.PrescriptionOverviewSequence), + RTPlanLabel(copy.RTPlanLabel), + ReferencedImageSequence(copy.ReferencedImageSequence), + ReferencedStructureSetSequence(copy.ReferencedStructureSetSequence), + TreatmentSite(copy.TreatmentSite), + TreatmentSiteCodeSequence(copy.TreatmentSiteCodeSequence) +{ +} + + +DRTPlanOverviewSequence::Item::~Item() +{ +} + + +DRTPlanOverviewSequence::Item &DRTPlanOverviewSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + CurrentFractionNumber = copy.CurrentFractionNumber; + NumberOfFractionsIncluded = copy.NumberOfFractionsIncluded; + PlanOverviewIndex = copy.PlanOverviewIndex; + PrescriptionOverviewSequence = copy.PrescriptionOverviewSequence; + RTPlanLabel = copy.RTPlanLabel; + ReferencedImageSequence = copy.ReferencedImageSequence; + ReferencedStructureSetSequence = copy.ReferencedStructureSetSequence; + TreatmentSite = copy.TreatmentSite; + TreatmentSiteCodeSequence = copy.TreatmentSiteCodeSequence; + } + return *this; +} + + +void DRTPlanOverviewSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + PlanOverviewIndex.clear(); + RTPlanLabel.clear(); + NumberOfFractionsIncluded.clear(); + CurrentFractionNumber.clear(); + TreatmentSite.clear(); + TreatmentSiteCodeSequence.clear(); + PrescriptionOverviewSequence.clear(); + ReferencedStructureSetSequence.clear(); + ReferencedImageSequence.clear(); + } +} + + +OFBool DRTPlanOverviewSequence::Item::isEmpty() +{ + return PlanOverviewIndex.isEmpty() && + RTPlanLabel.isEmpty() && + NumberOfFractionsIncluded.isEmpty() && + CurrentFractionNumber.isEmpty() && + TreatmentSite.isEmpty() && + TreatmentSiteCodeSequence.isEmpty() && + PrescriptionOverviewSequence.isEmpty() && + ReferencedStructureSetSequence.isEmpty() && + ReferencedImageSequence.isEmpty(); +} + + +OFBool DRTPlanOverviewSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTPlanOverviewSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, PlanOverviewIndex, "1", "1", "PlanOverviewSequence"); + getAndCheckElementFromDataset(item, RTPlanLabel, "1", "2", "PlanOverviewSequence"); + getAndCheckElementFromDataset(item, NumberOfFractionsIncluded, "1", "1C", "PlanOverviewSequence"); + getAndCheckElementFromDataset(item, CurrentFractionNumber, "1", "1C", "PlanOverviewSequence"); + getAndCheckElementFromDataset(item, TreatmentSite, "1", "2", "PlanOverviewSequence"); + TreatmentSiteCodeSequence.read(item, "1-n", "2", "PlanOverviewSequence"); + PrescriptionOverviewSequence.read(item, "1-n", "2", "PlanOverviewSequence"); + ReferencedStructureSetSequence.read(item, "1-n", "1C", "PlanOverviewSequence"); + ReferencedImageSequence.read(item, "1-n", "1C", "PlanOverviewSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTPlanOverviewSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmUnsignedShort(PlanOverviewIndex), "1", "1", "PlanOverviewSequence"); + addElementToDataset(result, item, new DcmShortString(RTPlanLabel), "1", "2", "PlanOverviewSequence"); + addElementToDataset(result, item, new DcmUnsignedShort(NumberOfFractionsIncluded), "1", "1C", "PlanOverviewSequence"); + addElementToDataset(result, item, new DcmIntegerString(CurrentFractionNumber), "1", "1C", "PlanOverviewSequence"); + addElementToDataset(result, item, new DcmLongString(TreatmentSite), "1", "2", "PlanOverviewSequence"); + if (result.good()) result = TreatmentSiteCodeSequence.write(item, "1-n", "2", "PlanOverviewSequence"); + if (result.good()) result = PrescriptionOverviewSequence.write(item, "1-n", "2", "PlanOverviewSequence"); + if (result.good()) result = ReferencedStructureSetSequence.write(item, "1-n", "1C", "PlanOverviewSequence"); + if (result.good()) result = ReferencedImageSequence.write(item, "1-n", "1C", "PlanOverviewSequence"); + } + return result; +} + + +OFCondition DRTPlanOverviewSequence::Item::getCurrentFractionNumber(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CurrentFractionNumber, value, pos); +} + + +OFCondition DRTPlanOverviewSequence::Item::getCurrentFractionNumber(Sint32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmIntegerString &, CurrentFractionNumber).getSint32(value, pos); +} + + +OFCondition DRTPlanOverviewSequence::Item::getNumberOfFractionsIncluded(Uint16 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmUnsignedShort &, NumberOfFractionsIncluded).getUint16(value, pos); +} + + +OFCondition DRTPlanOverviewSequence::Item::getPlanOverviewIndex(Uint16 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmUnsignedShort &, PlanOverviewIndex).getUint16(value, pos); +} + + +OFCondition DRTPlanOverviewSequence::Item::getRTPlanLabel(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(RTPlanLabel, value, pos); +} + + +OFCondition DRTPlanOverviewSequence::Item::getTreatmentSite(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(TreatmentSite, value, pos); +} + + +OFCondition DRTPlanOverviewSequence::Item::setCurrentFractionNumber(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CurrentFractionNumber.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTPlanOverviewSequence::Item::setNumberOfFractionsIncluded(const Uint16 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return NumberOfFractionsIncluded.putUint16(value, pos); +} + + +OFCondition DRTPlanOverviewSequence::Item::setPlanOverviewIndex(const Uint16 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return PlanOverviewIndex.putUint16(value, pos); +} + + +OFCondition DRTPlanOverviewSequence::Item::setRTPlanLabel(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = RTPlanLabel.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTPlanOverviewSequence::Item::setTreatmentSite(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = TreatmentSite.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTPlanOverviewSequence::DRTPlanOverviewSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTPlanOverviewSequence::DRTPlanOverviewSequence(const DRTPlanOverviewSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTPlanOverviewSequence &DRTPlanOverviewSequence::operator=(const DRTPlanOverviewSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTPlanOverviewSequence::~DRTPlanOverviewSequence() +{ + clear(); +} + + +void DRTPlanOverviewSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTPlanOverviewSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTPlanOverviewSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTPlanOverviewSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTPlanOverviewSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTPlanOverviewSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTPlanOverviewSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTPlanOverviewSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTPlanOverviewSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTPlanOverviewSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTPlanOverviewSequence::Item &DRTPlanOverviewSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTPlanOverviewSequence::Item &DRTPlanOverviewSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTPlanOverviewSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTPlanOverviewSequence::Item &DRTPlanOverviewSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTPlanOverviewSequence::Item &DRTPlanOverviewSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTPlanOverviewSequence::Item &DRTPlanOverviewSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTPlanOverviewSequence::Item &DRTPlanOverviewSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTPlanOverviewSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTPlanOverviewSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTPlanOverviewSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTPlanOverviewSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_PlanOverviewSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_PlanOverviewSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTPlanOverviewSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_PlanOverviewSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtporcs.cc b/dcmrt/libsrc/drtporcs.cc index 0e8ae045..e8d701a3 100644 --- a/dcmrt/libsrc/drtporcs.cc +++ b/dcmrt/libsrc/drtporcs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTPurposeOfReferenceCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -656,10 +656,12 @@ OFCondition DRTPurposeOfReferenceCodeSequence::gotoFirstItem() OFCondition DRTPurposeOfReferenceCodeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtporis.cc b/dcmrt/libsrc/drtporis.cc index 55294207..ca0a8f21 100644 --- a/dcmrt/libsrc/drtporis.cc +++ b/dcmrt/libsrc/drtporis.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTPhysiciansOfRecordIdentificationSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -24,6 +24,8 @@ DRTPhysiciansOfRecordIdentificationSequence::Item::Item(const OFBool emptyDefaul InstitutionAddress(DCM_InstitutionAddress), InstitutionCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), InstitutionName(DCM_InstitutionName), + InstitutionalDepartmentName(DCM_InstitutionalDepartmentName), + InstitutionalDepartmentTypeCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), PersonAddress(DCM_PersonAddress), PersonIdentificationCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), PersonTelecomInformation(DCM_PersonTelecomInformation), @@ -37,6 +39,8 @@ DRTPhysiciansOfRecordIdentificationSequence::Item::Item(const Item ©) InstitutionAddress(copy.InstitutionAddress), InstitutionCodeSequence(copy.InstitutionCodeSequence), InstitutionName(copy.InstitutionName), + InstitutionalDepartmentName(copy.InstitutionalDepartmentName), + InstitutionalDepartmentTypeCodeSequence(copy.InstitutionalDepartmentTypeCodeSequence), PersonAddress(copy.PersonAddress), PersonIdentificationCodeSequence(copy.PersonIdentificationCodeSequence), PersonTelecomInformation(copy.PersonTelecomInformation), @@ -58,6 +62,8 @@ DRTPhysiciansOfRecordIdentificationSequence::Item &DRTPhysiciansOfRecordIdentifi InstitutionAddress = copy.InstitutionAddress; InstitutionCodeSequence = copy.InstitutionCodeSequence; InstitutionName = copy.InstitutionName; + InstitutionalDepartmentName = copy.InstitutionalDepartmentName; + InstitutionalDepartmentTypeCodeSequence = copy.InstitutionalDepartmentTypeCodeSequence; PersonAddress = copy.PersonAddress; PersonIdentificationCodeSequence = copy.PersonIdentificationCodeSequence; PersonTelecomInformation = copy.PersonTelecomInformation; @@ -79,6 +85,8 @@ void DRTPhysiciansOfRecordIdentificationSequence::Item::clear() InstitutionName.clear(); InstitutionAddress.clear(); InstitutionCodeSequence.clear(); + InstitutionalDepartmentName.clear(); + InstitutionalDepartmentTypeCodeSequence.clear(); } } @@ -91,7 +99,9 @@ OFBool DRTPhysiciansOfRecordIdentificationSequence::Item::isEmpty() PersonTelecomInformation.isEmpty() && InstitutionName.isEmpty() && InstitutionAddress.isEmpty() && - InstitutionCodeSequence.isEmpty(); + InstitutionCodeSequence.isEmpty() && + InstitutionalDepartmentName.isEmpty() && + InstitutionalDepartmentTypeCodeSequence.isEmpty(); } @@ -115,6 +125,8 @@ OFCondition DRTPhysiciansOfRecordIdentificationSequence::Item::read(DcmItem &ite getAndCheckElementFromDataset(item, InstitutionName, "1", "1C", "PhysiciansOfRecordIdentificationSequence"); getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "PhysiciansOfRecordIdentificationSequence"); InstitutionCodeSequence.read(item, "1-n", "1C", "PhysiciansOfRecordIdentificationSequence"); + getAndCheckElementFromDataset(item, InstitutionalDepartmentName, "1", "3", "PhysiciansOfRecordIdentificationSequence"); + InstitutionalDepartmentTypeCodeSequence.read(item, "1-n", "3", "PhysiciansOfRecordIdentificationSequence"); result = EC_Normal; } return result; @@ -134,6 +146,8 @@ OFCondition DRTPhysiciansOfRecordIdentificationSequence::Item::write(DcmItem &it addElementToDataset(result, item, new DcmLongString(InstitutionName), "1", "1C", "PhysiciansOfRecordIdentificationSequence"); addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "PhysiciansOfRecordIdentificationSequence"); if (result.good()) result = InstitutionCodeSequence.write(item, "1-n", "1C", "PhysiciansOfRecordIdentificationSequence"); + addElementToDataset(result, item, new DcmLongString(InstitutionalDepartmentName), "1", "3", "PhysiciansOfRecordIdentificationSequence"); + if (result.good()) result = InstitutionalDepartmentTypeCodeSequence.write(item, "1-n", "3", "PhysiciansOfRecordIdentificationSequence"); } return result; } @@ -157,6 +171,15 @@ OFCondition DRTPhysiciansOfRecordIdentificationSequence::Item::getInstitutionNam } +OFCondition DRTPhysiciansOfRecordIdentificationSequence::Item::getInstitutionalDepartmentName(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(InstitutionalDepartmentName, value, pos); +} + + OFCondition DRTPhysiciansOfRecordIdentificationSequence::Item::getPersonAddress(OFString &value, const signed long pos) const { if (EmptyDefaultItem) @@ -210,6 +233,19 @@ OFCondition DRTPhysiciansOfRecordIdentificationSequence::Item::setInstitutionNam } +OFCondition DRTPhysiciansOfRecordIdentificationSequence::Item::setInstitutionalDepartmentName(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = InstitutionalDepartmentName.putOFStringArray(value); + } + return result; +} + + OFCondition DRTPhysiciansOfRecordIdentificationSequence::Item::setPersonAddress(const OFString &value, const OFBool check) { OFCondition result = EC_IllegalCall; @@ -373,10 +409,12 @@ OFCondition DRTPhysiciansOfRecordIdentificationSequence::gotoFirstItem() OFCondition DRTPhysiciansOfRecordIdentificationSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtppcs.cc b/dcmrt/libsrc/drtppcs.cc index eca35b64..33e57b69 100644 --- a/dcmrt/libsrc/drtppcs.cc +++ b/dcmrt/libsrc/drtppcs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTPerformedProtocolCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -663,10 +663,12 @@ OFCondition DRTPerformedProtocolCodeSequence::gotoFirstItem() OFCondition DRTPerformedProtocolCodeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtpros.cc b/dcmrt/libsrc/drtpros.cc new file mode 100644 index 00000000..d81b1d33 --- /dev/null +++ b/dcmrt/libsrc/drtpros.cc @@ -0,0 +1,609 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTPrescriptionOverviewSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtpros.h" + + +// --- item class --- + +DRTPrescriptionOverviewSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + EntityLongLabel(DCM_EntityLongLabel), + ReferencedROINumber(DCM_ReferencedROINumber), + TotalPrescriptionDose(DCM_TotalPrescriptionDose) +{ +} + + +DRTPrescriptionOverviewSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + EntityLongLabel(copy.EntityLongLabel), + ReferencedROINumber(copy.ReferencedROINumber), + TotalPrescriptionDose(copy.TotalPrescriptionDose) +{ +} + + +DRTPrescriptionOverviewSequence::Item::~Item() +{ +} + + +DRTPrescriptionOverviewSequence::Item &DRTPrescriptionOverviewSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + EntityLongLabel = copy.EntityLongLabel; + ReferencedROINumber = copy.ReferencedROINumber; + TotalPrescriptionDose = copy.TotalPrescriptionDose; + } + return *this; +} + + +void DRTPrescriptionOverviewSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + EntityLongLabel.clear(); + TotalPrescriptionDose.clear(); + ReferencedROINumber.clear(); + } +} + + +OFBool DRTPrescriptionOverviewSequence::Item::isEmpty() +{ + return EntityLongLabel.isEmpty() && + TotalPrescriptionDose.isEmpty() && + ReferencedROINumber.isEmpty(); +} + + +OFBool DRTPrescriptionOverviewSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTPrescriptionOverviewSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, EntityLongLabel, "1", "1C", "PrescriptionOverviewSequence"); + getAndCheckElementFromDataset(item, TotalPrescriptionDose, "1", "1", "PrescriptionOverviewSequence"); + getAndCheckElementFromDataset(item, ReferencedROINumber, "1", "3", "PrescriptionOverviewSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTPrescriptionOverviewSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmLongString(EntityLongLabel), "1", "1C", "PrescriptionOverviewSequence"); + addElementToDataset(result, item, new DcmFloatingPointSingle(TotalPrescriptionDose), "1", "1", "PrescriptionOverviewSequence"); + addElementToDataset(result, item, new DcmIntegerString(ReferencedROINumber), "1", "3", "PrescriptionOverviewSequence"); + } + return result; +} + + +OFCondition DRTPrescriptionOverviewSequence::Item::getEntityLongLabel(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(EntityLongLabel, value, pos); +} + + +OFCondition DRTPrescriptionOverviewSequence::Item::getReferencedROINumber(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedROINumber, value, pos); +} + + +OFCondition DRTPrescriptionOverviewSequence::Item::getReferencedROINumber(Sint32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmIntegerString &, ReferencedROINumber).getSint32(value, pos); +} + + +OFCondition DRTPrescriptionOverviewSequence::Item::getTotalPrescriptionDose(Float32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointSingle &, TotalPrescriptionDose).getFloat32(value, pos); +} + + +OFCondition DRTPrescriptionOverviewSequence::Item::setEntityLongLabel(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = EntityLongLabel.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTPrescriptionOverviewSequence::Item::setReferencedROINumber(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedROINumber.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTPrescriptionOverviewSequence::Item::setTotalPrescriptionDose(const Float32 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return TotalPrescriptionDose.putFloat32(value, pos); +} + + +// --- sequence class --- + +DRTPrescriptionOverviewSequence::DRTPrescriptionOverviewSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTPrescriptionOverviewSequence::DRTPrescriptionOverviewSequence(const DRTPrescriptionOverviewSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTPrescriptionOverviewSequence &DRTPrescriptionOverviewSequence::operator=(const DRTPrescriptionOverviewSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTPrescriptionOverviewSequence::~DRTPrescriptionOverviewSequence() +{ + clear(); +} + + +void DRTPrescriptionOverviewSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTPrescriptionOverviewSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTPrescriptionOverviewSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTPrescriptionOverviewSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTPrescriptionOverviewSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTPrescriptionOverviewSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTPrescriptionOverviewSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTPrescriptionOverviewSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTPrescriptionOverviewSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTPrescriptionOverviewSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTPrescriptionOverviewSequence::Item &DRTPrescriptionOverviewSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTPrescriptionOverviewSequence::Item &DRTPrescriptionOverviewSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTPrescriptionOverviewSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTPrescriptionOverviewSequence::Item &DRTPrescriptionOverviewSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTPrescriptionOverviewSequence::Item &DRTPrescriptionOverviewSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTPrescriptionOverviewSequence::Item &DRTPrescriptionOverviewSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTPrescriptionOverviewSequence::Item &DRTPrescriptionOverviewSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTPrescriptionOverviewSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTPrescriptionOverviewSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTPrescriptionOverviewSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTPrescriptionOverviewSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_PrescriptionOverviewSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_PrescriptionOverviewSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTPrescriptionOverviewSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_PrescriptionOverviewSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtprsis.cc b/dcmrt/libsrc/drtprsis.cc index f6063721..adbf8aff 100644 --- a/dcmrt/libsrc/drtprsis.cc +++ b/dcmrt/libsrc/drtprsis.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTPhysiciansReadingStudyIdentificationSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -24,6 +24,8 @@ DRTPhysiciansReadingStudyIdentificationSequence::Item::Item(const OFBool emptyDe InstitutionAddress(DCM_InstitutionAddress), InstitutionCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), InstitutionName(DCM_InstitutionName), + InstitutionalDepartmentName(DCM_InstitutionalDepartmentName), + InstitutionalDepartmentTypeCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), PersonAddress(DCM_PersonAddress), PersonIdentificationCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), PersonTelecomInformation(DCM_PersonTelecomInformation), @@ -37,6 +39,8 @@ DRTPhysiciansReadingStudyIdentificationSequence::Item::Item(const Item ©) InstitutionAddress(copy.InstitutionAddress), InstitutionCodeSequence(copy.InstitutionCodeSequence), InstitutionName(copy.InstitutionName), + InstitutionalDepartmentName(copy.InstitutionalDepartmentName), + InstitutionalDepartmentTypeCodeSequence(copy.InstitutionalDepartmentTypeCodeSequence), PersonAddress(copy.PersonAddress), PersonIdentificationCodeSequence(copy.PersonIdentificationCodeSequence), PersonTelecomInformation(copy.PersonTelecomInformation), @@ -58,6 +62,8 @@ DRTPhysiciansReadingStudyIdentificationSequence::Item &DRTPhysiciansReadingStudy InstitutionAddress = copy.InstitutionAddress; InstitutionCodeSequence = copy.InstitutionCodeSequence; InstitutionName = copy.InstitutionName; + InstitutionalDepartmentName = copy.InstitutionalDepartmentName; + InstitutionalDepartmentTypeCodeSequence = copy.InstitutionalDepartmentTypeCodeSequence; PersonAddress = copy.PersonAddress; PersonIdentificationCodeSequence = copy.PersonIdentificationCodeSequence; PersonTelecomInformation = copy.PersonTelecomInformation; @@ -79,6 +85,8 @@ void DRTPhysiciansReadingStudyIdentificationSequence::Item::clear() InstitutionName.clear(); InstitutionAddress.clear(); InstitutionCodeSequence.clear(); + InstitutionalDepartmentName.clear(); + InstitutionalDepartmentTypeCodeSequence.clear(); } } @@ -91,7 +99,9 @@ OFBool DRTPhysiciansReadingStudyIdentificationSequence::Item::isEmpty() PersonTelecomInformation.isEmpty() && InstitutionName.isEmpty() && InstitutionAddress.isEmpty() && - InstitutionCodeSequence.isEmpty(); + InstitutionCodeSequence.isEmpty() && + InstitutionalDepartmentName.isEmpty() && + InstitutionalDepartmentTypeCodeSequence.isEmpty(); } @@ -115,6 +125,8 @@ OFCondition DRTPhysiciansReadingStudyIdentificationSequence::Item::read(DcmItem getAndCheckElementFromDataset(item, InstitutionName, "1", "1C", "PhysiciansReadingStudyIdentificationSequence"); getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "PhysiciansReadingStudyIdentificationSequence"); InstitutionCodeSequence.read(item, "1-n", "1C", "PhysiciansReadingStudyIdentificationSequence"); + getAndCheckElementFromDataset(item, InstitutionalDepartmentName, "1", "3", "PhysiciansReadingStudyIdentificationSequence"); + InstitutionalDepartmentTypeCodeSequence.read(item, "1-n", "3", "PhysiciansReadingStudyIdentificationSequence"); result = EC_Normal; } return result; @@ -134,6 +146,8 @@ OFCondition DRTPhysiciansReadingStudyIdentificationSequence::Item::write(DcmItem addElementToDataset(result, item, new DcmLongString(InstitutionName), "1", "1C", "PhysiciansReadingStudyIdentificationSequence"); addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "PhysiciansReadingStudyIdentificationSequence"); if (result.good()) result = InstitutionCodeSequence.write(item, "1-n", "1C", "PhysiciansReadingStudyIdentificationSequence"); + addElementToDataset(result, item, new DcmLongString(InstitutionalDepartmentName), "1", "3", "PhysiciansReadingStudyIdentificationSequence"); + if (result.good()) result = InstitutionalDepartmentTypeCodeSequence.write(item, "1-n", "3", "PhysiciansReadingStudyIdentificationSequence"); } return result; } @@ -157,6 +171,15 @@ OFCondition DRTPhysiciansReadingStudyIdentificationSequence::Item::getInstitutio } +OFCondition DRTPhysiciansReadingStudyIdentificationSequence::Item::getInstitutionalDepartmentName(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(InstitutionalDepartmentName, value, pos); +} + + OFCondition DRTPhysiciansReadingStudyIdentificationSequence::Item::getPersonAddress(OFString &value, const signed long pos) const { if (EmptyDefaultItem) @@ -210,6 +233,19 @@ OFCondition DRTPhysiciansReadingStudyIdentificationSequence::Item::setInstitutio } +OFCondition DRTPhysiciansReadingStudyIdentificationSequence::Item::setInstitutionalDepartmentName(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = InstitutionalDepartmentName.putOFStringArray(value); + } + return result; +} + + OFCondition DRTPhysiciansReadingStudyIdentificationSequence::Item::setPersonAddress(const OFString &value, const OFBool check) { OFCondition result = EC_IllegalCall; @@ -373,10 +409,12 @@ OFCondition DRTPhysiciansReadingStudyIdentificationSequence::gotoFirstItem() OFCondition DRTPhysiciansReadingStudyIdentificationSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtpscs.cc b/dcmrt/libsrc/drtpscs.cc index e0c6e875..841a6519 100644 --- a/dcmrt/libsrc/drtpscs.cc +++ b/dcmrt/libsrc/drtpscs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTPatientSpeciesCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -656,10 +656,12 @@ OFCondition DRTPatientSpeciesCodeSequence::gotoFirstItem() OFCondition DRTPatientSpeciesCodeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtpsics.cc b/dcmrt/libsrc/drtpsics.cc index 4632ec95..d554987e 100644 --- a/dcmrt/libsrc/drtpsics.cc +++ b/dcmrt/libsrc/drtpsics.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTPatientSizeCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -656,10 +656,12 @@ OFCondition DRTPatientSizeCodeSequence::gotoFirstItem() OFCondition DRTPatientSizeCodeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtpss.cc b/dcmrt/libsrc/drtpss.cc index e6ce1bda..0248ed32 100644 --- a/dcmrt/libsrc/drtpss.cc +++ b/dcmrt/libsrc/drtpss.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTPatientSetupSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -546,10 +546,12 @@ OFCondition DRTPatientSetupSequence::gotoFirstItem() OFCondition DRTPatientSetupSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtpsss.cc b/dcmrt/libsrc/drtpsss.cc index 7933cda4..cbe94f0f 100644 --- a/dcmrt/libsrc/drtpsss.cc +++ b/dcmrt/libsrc/drtpsss.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTPredecessorStructureSetSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -272,10 +272,12 @@ OFCondition DRTPredecessorStructureSetSequence::gotoFirstItem() OFCondition DRTPredecessorStructureSetSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtpvis.cc b/dcmrt/libsrc/drtpvis.cc index 90b2bade..8a944c33 100644 --- a/dcmrt/libsrc/drtpvis.cc +++ b/dcmrt/libsrc/drtpvis.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTPlannedVerificationImageSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -594,10 +594,12 @@ OFCondition DRTPlannedVerificationImageSequence::gotoFirstItem() OFCondition DRTPlannedVerificationImageSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtqds.cc b/dcmrt/libsrc/drtqds.cc index 2d6994bb..e8b16168 100644 --- a/dcmrt/libsrc/drtqds.cc +++ b/dcmrt/libsrc/drtqds.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTQuantityDefinitionSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -23,12 +23,14 @@ DRTQuantityDefinitionSequence::Item::Item(const OFBool emptyDefaultItem) : EmptyDefaultItem(emptyDefaultItem), ConceptCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), ConceptNameCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), + ContentItemModifierSequence(emptyDefaultItem /*emptyDefaultSequence*/), Date(DCM_Date), DateTime(DCM_DateTime), FloatingPointValue(DCM_FloatingPointValue), MeasurementUnitsCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), NumericValue(DCM_NumericValue), ObservationDateTime(DCM_ObservationDateTime), + ObservationStartDateTime(DCM_ObservationStartDateTime), PersonName(DCM_PersonName), RationalDenominatorValue(DCM_RationalDenominatorValue), RationalNumeratorValue(DCM_RationalNumeratorValue), @@ -45,12 +47,14 @@ DRTQuantityDefinitionSequence::Item::Item(const Item ©) : EmptyDefaultItem(copy.EmptyDefaultItem), ConceptCodeSequence(copy.ConceptCodeSequence), ConceptNameCodeSequence(copy.ConceptNameCodeSequence), + ContentItemModifierSequence(copy.ContentItemModifierSequence), Date(copy.Date), DateTime(copy.DateTime), FloatingPointValue(copy.FloatingPointValue), MeasurementUnitsCodeSequence(copy.MeasurementUnitsCodeSequence), NumericValue(copy.NumericValue), ObservationDateTime(copy.ObservationDateTime), + ObservationStartDateTime(copy.ObservationStartDateTime), PersonName(copy.PersonName), RationalDenominatorValue(copy.RationalDenominatorValue), RationalNumeratorValue(copy.RationalNumeratorValue), @@ -75,12 +79,14 @@ DRTQuantityDefinitionSequence::Item &DRTQuantityDefinitionSequence::Item::operat EmptyDefaultItem = copy.EmptyDefaultItem; ConceptCodeSequence = copy.ConceptCodeSequence; ConceptNameCodeSequence = copy.ConceptNameCodeSequence; + ContentItemModifierSequence = copy.ContentItemModifierSequence; Date = copy.Date; DateTime = copy.DateTime; FloatingPointValue = copy.FloatingPointValue; MeasurementUnitsCodeSequence = copy.MeasurementUnitsCodeSequence; NumericValue = copy.NumericValue; ObservationDateTime = copy.ObservationDateTime; + ObservationStartDateTime = copy.ObservationStartDateTime; PersonName = copy.PersonName; RationalDenominatorValue = copy.RationalDenominatorValue; RationalNumeratorValue = copy.RationalNumeratorValue; @@ -101,6 +107,7 @@ void DRTQuantityDefinitionSequence::Item::clear() /* clear all DICOM attributes */ ValueType.clear(); ObservationDateTime.clear(); + ObservationStartDateTime.clear(); ConceptNameCodeSequence.clear(); DateTime.clear(); Date.clear(); @@ -115,6 +122,7 @@ void DRTQuantityDefinitionSequence::Item::clear() RationalDenominatorValue.clear(); MeasurementUnitsCodeSequence.clear(); ReferencedSOPSequence.clear(); + ContentItemModifierSequence.clear(); } } @@ -123,6 +131,7 @@ OFBool DRTQuantityDefinitionSequence::Item::isEmpty() { return ValueType.isEmpty() && ObservationDateTime.isEmpty() && + ObservationStartDateTime.isEmpty() && ConceptNameCodeSequence.isEmpty() && DateTime.isEmpty() && Date.isEmpty() && @@ -136,7 +145,8 @@ OFBool DRTQuantityDefinitionSequence::Item::isEmpty() RationalNumeratorValue.isEmpty() && RationalDenominatorValue.isEmpty() && MeasurementUnitsCodeSequence.isEmpty() && - ReferencedSOPSequence.isEmpty(); + ReferencedSOPSequence.isEmpty() && + ContentItemModifierSequence.isEmpty(); } @@ -155,6 +165,7 @@ OFCondition DRTQuantityDefinitionSequence::Item::read(DcmItem &item) clear(); getAndCheckElementFromDataset(item, ValueType, "1", "1", "QuantityDefinitionSequence"); getAndCheckElementFromDataset(item, ObservationDateTime, "1", "3", "QuantityDefinitionSequence"); + getAndCheckElementFromDataset(item, ObservationStartDateTime, "1", "3", "QuantityDefinitionSequence"); ConceptNameCodeSequence.read(item, "1-n", "1", "QuantityDefinitionSequence"); getAndCheckElementFromDataset(item, DateTime, "1", "1C", "QuantityDefinitionSequence"); getAndCheckElementFromDataset(item, Date, "1", "1C", "QuantityDefinitionSequence"); @@ -169,6 +180,7 @@ OFCondition DRTQuantityDefinitionSequence::Item::read(DcmItem &item) getAndCheckElementFromDataset(item, RationalDenominatorValue, "1-n", "1C", "QuantityDefinitionSequence"); MeasurementUnitsCodeSequence.read(item, "1-n", "1C", "QuantityDefinitionSequence"); ReferencedSOPSequence.read(item, "1-n", "1C", "QuantityDefinitionSequence"); + ContentItemModifierSequence.read(item, "1-n", "3", "QuantityDefinitionSequence"); result = EC_Normal; } return result; @@ -183,6 +195,7 @@ OFCondition DRTQuantityDefinitionSequence::Item::write(DcmItem &item) result = EC_Normal; addElementToDataset(result, item, new DcmCodeString(ValueType), "1", "1", "QuantityDefinitionSequence"); addElementToDataset(result, item, new DcmDateTime(ObservationDateTime), "1", "3", "QuantityDefinitionSequence"); + addElementToDataset(result, item, new DcmDateTime(ObservationStartDateTime), "1", "3", "QuantityDefinitionSequence"); if (result.good()) result = ConceptNameCodeSequence.write(item, "1-n", "1", "QuantityDefinitionSequence"); addElementToDataset(result, item, new DcmDateTime(DateTime), "1", "1C", "QuantityDefinitionSequence"); addElementToDataset(result, item, new DcmDate(Date), "1", "1C", "QuantityDefinitionSequence"); @@ -197,6 +210,7 @@ OFCondition DRTQuantityDefinitionSequence::Item::write(DcmItem &item) addElementToDataset(result, item, new DcmUnsignedLong(RationalDenominatorValue), "1-n", "1C", "QuantityDefinitionSequence"); if (result.good()) result = MeasurementUnitsCodeSequence.write(item, "1-n", "1C", "QuantityDefinitionSequence"); if (result.good()) result = ReferencedSOPSequence.write(item, "1-n", "1C", "QuantityDefinitionSequence"); + if (result.good()) result = ContentItemModifierSequence.write(item, "1-n", "3", "QuantityDefinitionSequence"); } return result; } @@ -265,6 +279,15 @@ OFCondition DRTQuantityDefinitionSequence::Item::getObservationDateTime(OFString } +OFCondition DRTQuantityDefinitionSequence::Item::getObservationStartDateTime(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ObservationStartDateTime, value, pos); +} + + OFCondition DRTQuantityDefinitionSequence::Item::getPersonName(OFString &value, const signed long pos) const { if (EmptyDefaultItem) @@ -389,6 +412,19 @@ OFCondition DRTQuantityDefinitionSequence::Item::setObservationDateTime(const OF } +OFCondition DRTQuantityDefinitionSequence::Item::setObservationStartDateTime(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ObservationStartDateTime.putOFStringArray(value); + } + return result; +} + + OFCondition DRTQuantityDefinitionSequence::Item::setPersonName(const OFString &value, const OFBool check) { OFCondition result = EC_IllegalCall; @@ -596,10 +632,12 @@ OFCondition DRTQuantityDefinitionSequence::gotoFirstItem() OFCondition DRTQuantityDefinitionSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtras.cc b/dcmrt/libsrc/drtras.cc index bbf3ba11..8d79f355 100644 --- a/dcmrt/libsrc/drtras.cc +++ b/dcmrt/libsrc/drtras.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTRequestAttributesSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -452,10 +452,12 @@ OFCondition DRTRequestAttributesSequence::gotoFirstItem() OFCondition DRTRequestAttributesSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrbas1.cc b/dcmrt/libsrc/drtrbas1.cc new file mode 100644 index 00000000..f7e07e38 --- /dev/null +++ b/dcmrt/libsrc/drtrbas1.cc @@ -0,0 +1,555 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtrbas1.h" + + +// --- item class --- + +DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + ReferencedBrachyApplicationSetupNumber(DCM_ReferencedBrachyApplicationSetupNumber) +{ +} + + +DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + ReferencedBrachyApplicationSetupNumber(copy.ReferencedBrachyApplicationSetupNumber) +{ +} + + +DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::~Item() +{ +} + + +DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + ReferencedBrachyApplicationSetupNumber = copy.ReferencedBrachyApplicationSetupNumber; + } + return *this; +} + + +void DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + ReferencedBrachyApplicationSetupNumber.clear(); + } +} + + +OFBool DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::isEmpty() +{ + return ReferencedBrachyApplicationSetupNumber.isEmpty(); +} + + +OFBool DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, ReferencedBrachyApplicationSetupNumber, "1", "1", "ReferencedBrachyApplicationSetupSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmIntegerString(ReferencedBrachyApplicationSetupNumber), "1", "1", "ReferencedBrachyApplicationSetupSequence"); + } + return result; +} + + +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::getReferencedBrachyApplicationSetupNumber(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedBrachyApplicationSetupNumber, value, pos); +} + + +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::getReferencedBrachyApplicationSetupNumber(Sint32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmIntegerString &, ReferencedBrachyApplicationSetupNumber).getSint32(value, pos); +} + + +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::setReferencedBrachyApplicationSetupNumber(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedBrachyApplicationSetupNumber.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule(const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::operator=(const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::~DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule() +{ + clear(); +} + + +void DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_ReferencedBrachyApplicationSetupSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_ReferencedBrachyApplicationSetupSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedBrachyApplicationSetupSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtrbas2.cc b/dcmrt/libsrc/drtrbas2.cc index d9007f45..247930e4 100644 --- a/dcmrt/libsrc/drtrbas2.cc +++ b/dcmrt/libsrc/drtrbas2.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * - * Source file for class DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule + * Source file for class DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -19,59 +19,74 @@ // --- item class --- -DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::Item(const OFBool emptyDefaultItem) +DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::Item(const OFBool emptyDefaultItem) : EmptyDefaultItem(emptyDefaultItem), - ReferencedBrachyApplicationSetupNumber(DCM_ReferencedBrachyApplicationSetupNumber) + BrachyApplicationSetupDose(DCM_BrachyApplicationSetupDose), + BrachyApplicationSetupDoseSpecificationPoint(DCM_BrachyApplicationSetupDoseSpecificationPoint), + ReferencedBrachyApplicationSetupNumber(DCM_ReferencedBrachyApplicationSetupNumber), + ReferencedDoseReferenceUID(DCM_ReferencedDoseReferenceUID) { } -DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::Item(const Item ©) +DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::Item(const Item ©) : EmptyDefaultItem(copy.EmptyDefaultItem), - ReferencedBrachyApplicationSetupNumber(copy.ReferencedBrachyApplicationSetupNumber) + BrachyApplicationSetupDose(copy.BrachyApplicationSetupDose), + BrachyApplicationSetupDoseSpecificationPoint(copy.BrachyApplicationSetupDoseSpecificationPoint), + ReferencedBrachyApplicationSetupNumber(copy.ReferencedBrachyApplicationSetupNumber), + ReferencedDoseReferenceUID(copy.ReferencedDoseReferenceUID) { } -DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::~Item() +DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::~Item() { } -DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::operator=(const Item ©) +DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::operator=(const Item ©) { if (this != ©) { EmptyDefaultItem = copy.EmptyDefaultItem; + BrachyApplicationSetupDose = copy.BrachyApplicationSetupDose; + BrachyApplicationSetupDoseSpecificationPoint = copy.BrachyApplicationSetupDoseSpecificationPoint; ReferencedBrachyApplicationSetupNumber = copy.ReferencedBrachyApplicationSetupNumber; + ReferencedDoseReferenceUID = copy.ReferencedDoseReferenceUID; } return *this; } -void DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::clear() +void DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::clear() { if (!EmptyDefaultItem) { /* clear all DICOM attributes */ ReferencedBrachyApplicationSetupNumber.clear(); + BrachyApplicationSetupDoseSpecificationPoint.clear(); + BrachyApplicationSetupDose.clear(); + ReferencedDoseReferenceUID.clear(); } } -OFBool DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::isEmpty() +OFBool DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::isEmpty() { - return ReferencedBrachyApplicationSetupNumber.isEmpty(); + return ReferencedBrachyApplicationSetupNumber.isEmpty() && + BrachyApplicationSetupDoseSpecificationPoint.isEmpty() && + BrachyApplicationSetupDose.isEmpty() && + ReferencedDoseReferenceUID.isEmpty(); } -OFBool DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::isValid() const +OFBool DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::isValid() const { return !EmptyDefaultItem; } -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::read(DcmItem &item) +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::read(DcmItem &item) { OFCondition result = EC_IllegalCall; if (!EmptyDefaultItem) @@ -79,25 +94,76 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::rea /* re-initialize object */ clear(); getAndCheckElementFromDataset(item, ReferencedBrachyApplicationSetupNumber, "1", "1", "ReferencedBrachyApplicationSetupSequence"); + getAndCheckElementFromDataset(item, BrachyApplicationSetupDoseSpecificationPoint, "3", "3", "ReferencedBrachyApplicationSetupSequence"); + getAndCheckElementFromDataset(item, BrachyApplicationSetupDose, "1", "3", "ReferencedBrachyApplicationSetupSequence"); + getAndCheckElementFromDataset(item, ReferencedDoseReferenceUID, "1", "3", "ReferencedBrachyApplicationSetupSequence"); result = EC_Normal; } return result; } -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::write(DcmItem &item) +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::write(DcmItem &item) { OFCondition result = EC_IllegalCall; if (!EmptyDefaultItem) { result = EC_Normal; addElementToDataset(result, item, new DcmIntegerString(ReferencedBrachyApplicationSetupNumber), "1", "1", "ReferencedBrachyApplicationSetupSequence"); + addElementToDataset(result, item, new DcmDecimalString(BrachyApplicationSetupDoseSpecificationPoint), "3", "3", "ReferencedBrachyApplicationSetupSequence"); + addElementToDataset(result, item, new DcmDecimalString(BrachyApplicationSetupDose), "1", "3", "ReferencedBrachyApplicationSetupSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedDoseReferenceUID), "1", "3", "ReferencedBrachyApplicationSetupSequence"); } return result; } -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::getReferencedBrachyApplicationSetupNumber(OFString &value, const signed long pos) const +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::getBrachyApplicationSetupDose(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(BrachyApplicationSetupDose, value, pos); +} + + +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::getBrachyApplicationSetupDose(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, BrachyApplicationSetupDose).getFloat64(value, pos); +} + + +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::getBrachyApplicationSetupDoseSpecificationPoint(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(BrachyApplicationSetupDoseSpecificationPoint, value, pos); +} + + +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::getBrachyApplicationSetupDoseSpecificationPoint(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, BrachyApplicationSetupDoseSpecificationPoint).getFloat64(value, pos); +} + + +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::getBrachyApplicationSetupDoseSpecificationPoint(OFVector &value) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, BrachyApplicationSetupDoseSpecificationPoint).getFloat64Vector(value); +} + + +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::getReferencedBrachyApplicationSetupNumber(OFString &value, const signed long pos) const { if (EmptyDefaultItem) return EC_IllegalCall; @@ -106,7 +172,7 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::get } -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::getReferencedBrachyApplicationSetupNumber(Sint32 &value, const unsigned long pos) const +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::getReferencedBrachyApplicationSetupNumber(Sint32 &value, const unsigned long pos) const { if (EmptyDefaultItem) return EC_IllegalCall; @@ -115,7 +181,42 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::get } -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::setReferencedBrachyApplicationSetupNumber(const OFString &value, const OFBool check) +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::getReferencedDoseReferenceUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedDoseReferenceUID, value, pos); +} + + +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::setBrachyApplicationSetupDose(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = BrachyApplicationSetupDose.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::setBrachyApplicationSetupDoseSpecificationPoint(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDecimalString::checkStringValue(value, "3") : EC_Normal; + if (result.good()) + result = BrachyApplicationSetupDoseSpecificationPoint.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::setReferencedBrachyApplicationSetupNumber(const OFString &value, const OFBool check) { OFCondition result = EC_IllegalCall; if (!EmptyDefaultItem) @@ -128,9 +229,22 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::set } +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::setReferencedDoseReferenceUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedDoseReferenceUID.putOFStringArray(value); + } + return result; +} + + // --- sequence class --- -DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule(const OFBool emptyDefaultSequence) +DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule(const OFBool emptyDefaultSequence) : EmptyDefaultSequence(emptyDefaultSequence), SequenceOfItems(), CurrentItem(), @@ -140,7 +254,7 @@ DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::DRTReferencedBrachyAp } -DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule(const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule ©) +DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule(const DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule ©) : EmptyDefaultSequence(copy.EmptyDefaultSequence), SequenceOfItems(), CurrentItem(), @@ -166,7 +280,7 @@ DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::DRTReferencedBrachyAp } -DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::operator=(const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule ©) +DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::operator=(const DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule ©) { if (this != ©) { @@ -194,13 +308,13 @@ DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule &DRTReferencedBrachyAp } -DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::~DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule() +DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::~DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule() { clear(); } -void DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::clear() +void DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::clear() { if (!EmptyDefaultSequence) { @@ -219,25 +333,25 @@ void DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::clear() } -OFBool DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::isEmpty() +OFBool DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::isEmpty() { return SequenceOfItems.empty(); } -OFBool DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::isValid() const +OFBool DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::isValid() const { return !EmptyDefaultSequence; } -size_t DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getNumberOfItems() const +size_t DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getNumberOfItems() const { return SequenceOfItems.size(); } -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::gotoFirstItem() +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::gotoFirstItem() { OFCondition result = EC_IllegalCall; if (!SequenceOfItems.empty()) @@ -249,19 +363,21 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::gotoFirst } -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::gotoNextItem() +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) { OFCondition result = EC_IllegalCall; if (!SequenceOfItems.empty()) @@ -281,7 +397,7 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::gotoItem( } -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const { OFCondition result = EC_IllegalCall; if (!SequenceOfItems.empty()) @@ -301,13 +417,13 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::gotoItem( } -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::gotoItem(const size_t num) +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::gotoItem(const size_t num) { return gotoItem(num, CurrentItem); } -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getCurrentItem(Item *&item) const +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getCurrentItem(Item *&item) const { OFCondition result = EC_IllegalCall; if (CurrentItem != SequenceOfItems.end()) @@ -319,7 +435,7 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getCurren } -DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getCurrentItem() +DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getCurrentItem() { if (CurrentItem != SequenceOfItems.end()) return **CurrentItem; @@ -328,7 +444,7 @@ DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBr } -const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getCurrentItem() const +const DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getCurrentItem() const { if (CurrentItem != SequenceOfItems.end()) return **CurrentItem; @@ -337,7 +453,7 @@ const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTRefere } -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getItem(const size_t num, Item *&item) +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getItem(const size_t num, Item *&item) { OFListIterator(Item *) iterator; OFCondition result = gotoItem(num, iterator); @@ -347,7 +463,7 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getItem(c } -DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getItem(const size_t num) +DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getItem(const size_t num) { OFListIterator(Item *) iterator; if (gotoItem(num, iterator).good()) @@ -357,7 +473,7 @@ DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBr } -const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getItem(const size_t num) const +const DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getItem(const size_t num) const { OFListConstIterator(Item *) iterator; if (gotoItem(num, iterator).good()) @@ -367,19 +483,19 @@ const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTRefere } -DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::operator[](const size_t num) +DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::operator[](const size_t num) { return getItem(num); } -const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::operator[](const size_t num) const +const DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::operator[](const size_t num) const { return getItem(num); } -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::addItem(Item *&item) +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::addItem(Item *&item) { OFCondition result = EC_IllegalCall; if (!EmptyDefaultSequence) @@ -396,7 +512,7 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::addItem(I } -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::insertItem(const size_t pos, Item *&item) +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::insertItem(const size_t pos, Item *&item) { OFCondition result = EC_IllegalCall; if (!EmptyDefaultSequence) @@ -419,7 +535,7 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::insertIte } -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::removeItem(const size_t pos) +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::removeItem(const size_t pos) { OFCondition result = EC_IllegalCall; if (!EmptyDefaultSequence) @@ -437,10 +553,10 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::removeIte } -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) { OFCondition result = EC_IllegalCall; if (!EmptyDefaultSequence) @@ -487,10 +603,10 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::read(DcmI } -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) +OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) { OFCondition result = EC_IllegalCall; if (!EmptyDefaultSequence) diff --git a/dcmrt/libsrc/drtrbas8.cc b/dcmrt/libsrc/drtrbas8.cc deleted file mode 100644 index aabb0171..00000000 --- a/dcmrt/libsrc/drtrbas8.cc +++ /dev/null @@ -1,638 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Source file for class DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/dcmrt/seq/drtrbas8.h" - - -// --- item class --- - -DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::Item(const OFBool emptyDefaultItem) - : EmptyDefaultItem(emptyDefaultItem), - BrachyApplicationSetupDose(DCM_BrachyApplicationSetupDose), - BrachyApplicationSetupDoseSpecificationPoint(DCM_BrachyApplicationSetupDoseSpecificationPoint), - ReferencedBrachyApplicationSetupNumber(DCM_ReferencedBrachyApplicationSetupNumber) -{ -} - - -DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::Item(const Item ©) - : EmptyDefaultItem(copy.EmptyDefaultItem), - BrachyApplicationSetupDose(copy.BrachyApplicationSetupDose), - BrachyApplicationSetupDoseSpecificationPoint(copy.BrachyApplicationSetupDoseSpecificationPoint), - ReferencedBrachyApplicationSetupNumber(copy.ReferencedBrachyApplicationSetupNumber) -{ -} - - -DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::~Item() -{ -} - - -DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::operator=(const Item ©) -{ - if (this != ©) - { - EmptyDefaultItem = copy.EmptyDefaultItem; - BrachyApplicationSetupDose = copy.BrachyApplicationSetupDose; - BrachyApplicationSetupDoseSpecificationPoint = copy.BrachyApplicationSetupDoseSpecificationPoint; - ReferencedBrachyApplicationSetupNumber = copy.ReferencedBrachyApplicationSetupNumber; - } - return *this; -} - - -void DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::clear() -{ - if (!EmptyDefaultItem) - { - /* clear all DICOM attributes */ - ReferencedBrachyApplicationSetupNumber.clear(); - BrachyApplicationSetupDoseSpecificationPoint.clear(); - BrachyApplicationSetupDose.clear(); - } -} - - -OFBool DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::isEmpty() -{ - return ReferencedBrachyApplicationSetupNumber.isEmpty() && - BrachyApplicationSetupDoseSpecificationPoint.isEmpty() && - BrachyApplicationSetupDose.isEmpty(); -} - - -OFBool DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::isValid() const -{ - return !EmptyDefaultItem; -} - - -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::read(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - /* re-initialize object */ - clear(); - getAndCheckElementFromDataset(item, ReferencedBrachyApplicationSetupNumber, "1", "1", "ReferencedBrachyApplicationSetupSequence"); - getAndCheckElementFromDataset(item, BrachyApplicationSetupDoseSpecificationPoint, "3", "3", "ReferencedBrachyApplicationSetupSequence"); - getAndCheckElementFromDataset(item, BrachyApplicationSetupDose, "1", "3", "ReferencedBrachyApplicationSetupSequence"); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::write(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = EC_Normal; - addElementToDataset(result, item, new DcmIntegerString(ReferencedBrachyApplicationSetupNumber), "1", "1", "ReferencedBrachyApplicationSetupSequence"); - addElementToDataset(result, item, new DcmDecimalString(BrachyApplicationSetupDoseSpecificationPoint), "3", "3", "ReferencedBrachyApplicationSetupSequence"); - addElementToDataset(result, item, new DcmDecimalString(BrachyApplicationSetupDose), "1", "3", "ReferencedBrachyApplicationSetupSequence"); - } - return result; -} - - -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::getBrachyApplicationSetupDose(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(BrachyApplicationSetupDose, value, pos); -} - - -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::getBrachyApplicationSetupDose(Float64 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, BrachyApplicationSetupDose).getFloat64(value, pos); -} - - -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::getBrachyApplicationSetupDoseSpecificationPoint(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(BrachyApplicationSetupDoseSpecificationPoint, value, pos); -} - - -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::getBrachyApplicationSetupDoseSpecificationPoint(Float64 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, BrachyApplicationSetupDoseSpecificationPoint).getFloat64(value, pos); -} - - -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::getBrachyApplicationSetupDoseSpecificationPoint(OFVector &value) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, BrachyApplicationSetupDoseSpecificationPoint).getFloat64Vector(value); -} - - -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::getReferencedBrachyApplicationSetupNumber(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ReferencedBrachyApplicationSetupNumber, value, pos); -} - - -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::getReferencedBrachyApplicationSetupNumber(Sint32 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmIntegerString &, ReferencedBrachyApplicationSetupNumber).getSint32(value, pos); -} - - -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::setBrachyApplicationSetupDose(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = BrachyApplicationSetupDose.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::setBrachyApplicationSetupDoseSpecificationPoint(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmDecimalString::checkStringValue(value, "3") : EC_Normal; - if (result.good()) - result = BrachyApplicationSetupDoseSpecificationPoint.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::setReferencedBrachyApplicationSetupNumber(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ReferencedBrachyApplicationSetupNumber.putOFStringArray(value); - } - return result; -} - - -// --- sequence class --- - -DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule(const OFBool emptyDefaultSequence) - : EmptyDefaultSequence(emptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - CurrentItem = SequenceOfItems.end(); -} - - -DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule(const DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule ©) - : EmptyDefaultSequence(copy.EmptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); -} - - -DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::operator=(const DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule ©) -{ - if (this != ©) - { - clear(); - EmptyDefaultSequence = copy.EmptyDefaultSequence; - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); - } - return *this; -} - - -DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::~DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule() -{ - clear(); -} - - -void DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::clear() -{ - if (!EmptyDefaultSequence) - { - CurrentItem = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* delete all items and free memory */ - while (CurrentItem != last) - { - delete (*CurrentItem); - CurrentItem = SequenceOfItems.erase(CurrentItem); - } - /* make sure that the list is empty */ - SequenceOfItems.clear(); - CurrentItem = SequenceOfItems.end(); - } -} - - -OFBool DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::isEmpty() -{ - return SequenceOfItems.empty(); -} - - -OFBool DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::isValid() const -{ - return !EmptyDefaultSequence; -} - - -size_t DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getNumberOfItems() const -{ - return SequenceOfItems.size(); -} - - -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::gotoFirstItem() -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - CurrentItem = SequenceOfItems.begin(); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::gotoNextItem() -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - ++CurrentItem; - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::gotoItem(const size_t num) -{ - return gotoItem(num, CurrentItem); -} - - -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getCurrentItem(Item *&item) const -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - item = *CurrentItem; - result = EC_Normal; - } - return result; -} - - -DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getCurrentItem() -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -const DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getCurrentItem() const -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getItem(const size_t num, Item *&item) -{ - OFListIterator(Item *) iterator; - OFCondition result = gotoItem(num, iterator); - if (result.good()) - item = *iterator; - return result; -} - - -DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getItem(const size_t num) -{ - OFListIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -const DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getItem(const size_t num) const -{ - OFListConstIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::operator[](const size_t num) -{ - return getItem(num); -} - - -const DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::operator[](const size_t num) const -{ - return getItem(num); -} - - -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::addItem(Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.push_back(item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } - return result; -} - - -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::insertItem(const size_t pos, Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - result = gotoItem(pos, iterator); - if (result.good()) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.insert(iterator, 1, item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } else - result = addItem(item); - } - return result; -} - - -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::removeItem(const size_t pos) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - if (gotoItem(pos, iterator).good()) - { - delete *iterator; - iterator = SequenceOfItems.erase(iterator); - result = EC_Normal; - } else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - /* re-initialize object */ - clear(); - /* retrieve sequence element from dataset */ - DcmSequenceOfItems *sequence; - result = dataset.findAndGetSequence(DCM_ReferencedBrachyApplicationSetupSequence, sequence); - if (sequence != NULL) - { - if (checkElementValue(*sequence, card, type, result, moduleName)) - { - DcmStack stack; - OFBool first = OFTrue; - /* iterate over all sequence items */ - while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) - { - DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); - if (ditem != NULL) - { - Item *item = new Item(); - if (item != NULL) - { - result = item->read(*ditem); - if (result.good()) - { - /* append new item to the end of the list */ - SequenceOfItems.push_back(item); - first = OFFalse; - } - } else - result = EC_MemoryExhausted; - } else - result = EC_CorruptedData; - } - } - } else { - DcmSequenceOfItems element(DCM_ReferencedBrachyApplicationSetupSequence); - checkElementValue(element, card, type, result, moduleName); - } - } - return result; -} - - -OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - result = EC_MemoryExhausted; - DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedBrachyApplicationSetupSequence); - if (sequence != NULL) - { - result = EC_Normal; - /* an empty optional sequence is not written */ - if ((type == "2") || !SequenceOfItems.empty()) - { - OFListIterator(Item *) iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* iterate over all sequence items */ - while (result.good() && (iterator != last)) - { - DcmItem *item = new DcmItem(); - if (item != NULL) - { - /* append new item to the end of the sequence */ - result = sequence->append(item); - if (result.good()) - { - result = (*iterator)->write(*item); - ++iterator; - } else - delete item; - } else - result = EC_MemoryExhausted; - } - if (result.good()) - { - /* insert sequence element into the dataset */ - result = dataset.insert(sequence, OFTrue /*replaceOld*/); - } - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - if (result.good()) - { - /* forget reference to sequence object (avoid deletion below) */ - sequence = NULL; - } - } - else if (type == "1") - { - /* empty type 1 sequence not allowed */ - result = RT_EC_InvalidValue; - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - } - /* delete sequence (if not inserted into the dataset) */ - delete sequence; - } - } - return result; -} - - -// end of source file diff --git a/dcmrt/libsrc/drtrbdgs.cc b/dcmrt/libsrc/drtrbdgs.cc new file mode 100644 index 00000000..090b29c5 --- /dev/null +++ b/dcmrt/libsrc/drtrbdgs.cc @@ -0,0 +1,728 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTRTBeamDelimiterGeometrySequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtrbdgs.h" + + +// --- item class --- + +DRTRTBeamDelimiterGeometrySequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + CenterOfCircularOutline(DCM_CenterOfCircularOutline), + DiameterOfCircularOutline(DCM_DiameterOfCircularOutline), + NumberOfPolygonalVertices(DCM_NumberOfPolygonalVertices), + OutlineLeftVerticalEdge(DCM_OutlineLeftVerticalEdge), + OutlineLowerHorizontalEdge(DCM_OutlineLowerHorizontalEdge), + OutlineRightVerticalEdge(DCM_OutlineRightVerticalEdge), + OutlineShapeType(DCM_OutlineShapeType), + OutlineUpperHorizontalEdge(DCM_OutlineUpperHorizontalEdge), + VerticesOfThePolygonalOutline(DCM_VerticesOfThePolygonalOutline) +{ +} + + +DRTRTBeamDelimiterGeometrySequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + CenterOfCircularOutline(copy.CenterOfCircularOutline), + DiameterOfCircularOutline(copy.DiameterOfCircularOutline), + NumberOfPolygonalVertices(copy.NumberOfPolygonalVertices), + OutlineLeftVerticalEdge(copy.OutlineLeftVerticalEdge), + OutlineLowerHorizontalEdge(copy.OutlineLowerHorizontalEdge), + OutlineRightVerticalEdge(copy.OutlineRightVerticalEdge), + OutlineShapeType(copy.OutlineShapeType), + OutlineUpperHorizontalEdge(copy.OutlineUpperHorizontalEdge), + VerticesOfThePolygonalOutline(copy.VerticesOfThePolygonalOutline) +{ +} + + +DRTRTBeamDelimiterGeometrySequence::Item::~Item() +{ +} + + +DRTRTBeamDelimiterGeometrySequence::Item &DRTRTBeamDelimiterGeometrySequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + CenterOfCircularOutline = copy.CenterOfCircularOutline; + DiameterOfCircularOutline = copy.DiameterOfCircularOutline; + NumberOfPolygonalVertices = copy.NumberOfPolygonalVertices; + OutlineLeftVerticalEdge = copy.OutlineLeftVerticalEdge; + OutlineLowerHorizontalEdge = copy.OutlineLowerHorizontalEdge; + OutlineRightVerticalEdge = copy.OutlineRightVerticalEdge; + OutlineShapeType = copy.OutlineShapeType; + OutlineUpperHorizontalEdge = copy.OutlineUpperHorizontalEdge; + VerticesOfThePolygonalOutline = copy.VerticesOfThePolygonalOutline; + } + return *this; +} + + +void DRTRTBeamDelimiterGeometrySequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + OutlineShapeType.clear(); + OutlineLeftVerticalEdge.clear(); + OutlineRightVerticalEdge.clear(); + OutlineUpperHorizontalEdge.clear(); + OutlineLowerHorizontalEdge.clear(); + CenterOfCircularOutline.clear(); + DiameterOfCircularOutline.clear(); + NumberOfPolygonalVertices.clear(); + VerticesOfThePolygonalOutline.clear(); + } +} + + +OFBool DRTRTBeamDelimiterGeometrySequence::Item::isEmpty() +{ + return OutlineShapeType.isEmpty() && + OutlineLeftVerticalEdge.isEmpty() && + OutlineRightVerticalEdge.isEmpty() && + OutlineUpperHorizontalEdge.isEmpty() && + OutlineLowerHorizontalEdge.isEmpty() && + CenterOfCircularOutline.isEmpty() && + DiameterOfCircularOutline.isEmpty() && + NumberOfPolygonalVertices.isEmpty() && + VerticesOfThePolygonalOutline.isEmpty(); +} + + +OFBool DRTRTBeamDelimiterGeometrySequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTRTBeamDelimiterGeometrySequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, OutlineShapeType, "1", "1", "RTBeamDelimiterGeometrySequence"); + getAndCheckElementFromDataset(item, OutlineLeftVerticalEdge, "1", "1C", "RTBeamDelimiterGeometrySequence"); + getAndCheckElementFromDataset(item, OutlineRightVerticalEdge, "1", "1C", "RTBeamDelimiterGeometrySequence"); + getAndCheckElementFromDataset(item, OutlineUpperHorizontalEdge, "1", "1C", "RTBeamDelimiterGeometrySequence"); + getAndCheckElementFromDataset(item, OutlineLowerHorizontalEdge, "1", "1C", "RTBeamDelimiterGeometrySequence"); + getAndCheckElementFromDataset(item, CenterOfCircularOutline, "2", "1C", "RTBeamDelimiterGeometrySequence"); + getAndCheckElementFromDataset(item, DiameterOfCircularOutline, "1", "1C", "RTBeamDelimiterGeometrySequence"); + getAndCheckElementFromDataset(item, NumberOfPolygonalVertices, "1", "1C", "RTBeamDelimiterGeometrySequence"); + getAndCheckElementFromDataset(item, VerticesOfThePolygonalOutline, "1", "1C", "RTBeamDelimiterGeometrySequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTRTBeamDelimiterGeometrySequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmCodeString(OutlineShapeType), "1", "1", "RTBeamDelimiterGeometrySequence"); + addElementToDataset(result, item, new DcmFloatingPointDouble(OutlineLeftVerticalEdge), "1", "1C", "RTBeamDelimiterGeometrySequence"); + addElementToDataset(result, item, new DcmFloatingPointDouble(OutlineRightVerticalEdge), "1", "1C", "RTBeamDelimiterGeometrySequence"); + addElementToDataset(result, item, new DcmFloatingPointDouble(OutlineUpperHorizontalEdge), "1", "1C", "RTBeamDelimiterGeometrySequence"); + addElementToDataset(result, item, new DcmFloatingPointDouble(OutlineLowerHorizontalEdge), "1", "1C", "RTBeamDelimiterGeometrySequence"); + addElementToDataset(result, item, new DcmFloatingPointDouble(CenterOfCircularOutline), "2", "1C", "RTBeamDelimiterGeometrySequence"); + addElementToDataset(result, item, new DcmFloatingPointDouble(DiameterOfCircularOutline), "1", "1C", "RTBeamDelimiterGeometrySequence"); + addElementToDataset(result, item, new DcmUnsignedLong(NumberOfPolygonalVertices), "1", "1C", "RTBeamDelimiterGeometrySequence"); + addElementToDataset(result, item, new DcmOtherFloat(VerticesOfThePolygonalOutline), "1", "1C", "RTBeamDelimiterGeometrySequence"); + } + return result; +} + + +OFCondition DRTRTBeamDelimiterGeometrySequence::Item::getCenterOfCircularOutline(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointDouble &, CenterOfCircularOutline).getFloat64(value, pos); +} + + +OFCondition DRTRTBeamDelimiterGeometrySequence::Item::getDiameterOfCircularOutline(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointDouble &, DiameterOfCircularOutline).getFloat64(value, pos); +} + + +OFCondition DRTRTBeamDelimiterGeometrySequence::Item::getNumberOfPolygonalVertices(Uint32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmUnsignedLong &, NumberOfPolygonalVertices).getUint32(value, pos); +} + + +OFCondition DRTRTBeamDelimiterGeometrySequence::Item::getOutlineLeftVerticalEdge(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointDouble &, OutlineLeftVerticalEdge).getFloat64(value, pos); +} + + +OFCondition DRTRTBeamDelimiterGeometrySequence::Item::getOutlineLowerHorizontalEdge(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointDouble &, OutlineLowerHorizontalEdge).getFloat64(value, pos); +} + + +OFCondition DRTRTBeamDelimiterGeometrySequence::Item::getOutlineRightVerticalEdge(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointDouble &, OutlineRightVerticalEdge).getFloat64(value, pos); +} + + +OFCondition DRTRTBeamDelimiterGeometrySequence::Item::getOutlineShapeType(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(OutlineShapeType, value, pos); +} + + +OFCondition DRTRTBeamDelimiterGeometrySequence::Item::getOutlineUpperHorizontalEdge(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointDouble &, OutlineUpperHorizontalEdge).getFloat64(value, pos); +} + + +OFCondition DRTRTBeamDelimiterGeometrySequence::Item::setCenterOfCircularOutline(const Float64 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return CenterOfCircularOutline.putFloat64(value, pos); +} + + +OFCondition DRTRTBeamDelimiterGeometrySequence::Item::setDiameterOfCircularOutline(const Float64 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return DiameterOfCircularOutline.putFloat64(value, pos); +} + + +OFCondition DRTRTBeamDelimiterGeometrySequence::Item::setNumberOfPolygonalVertices(const Uint32 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return NumberOfPolygonalVertices.putUint32(value, pos); +} + + +OFCondition DRTRTBeamDelimiterGeometrySequence::Item::setOutlineLeftVerticalEdge(const Float64 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OutlineLeftVerticalEdge.putFloat64(value, pos); +} + + +OFCondition DRTRTBeamDelimiterGeometrySequence::Item::setOutlineLowerHorizontalEdge(const Float64 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OutlineLowerHorizontalEdge.putFloat64(value, pos); +} + + +OFCondition DRTRTBeamDelimiterGeometrySequence::Item::setOutlineRightVerticalEdge(const Float64 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OutlineRightVerticalEdge.putFloat64(value, pos); +} + + +OFCondition DRTRTBeamDelimiterGeometrySequence::Item::setOutlineShapeType(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = OutlineShapeType.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTRTBeamDelimiterGeometrySequence::Item::setOutlineUpperHorizontalEdge(const Float64 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OutlineUpperHorizontalEdge.putFloat64(value, pos); +} + + +// --- sequence class --- + +DRTRTBeamDelimiterGeometrySequence::DRTRTBeamDelimiterGeometrySequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTRTBeamDelimiterGeometrySequence::DRTRTBeamDelimiterGeometrySequence(const DRTRTBeamDelimiterGeometrySequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTRTBeamDelimiterGeometrySequence &DRTRTBeamDelimiterGeometrySequence::operator=(const DRTRTBeamDelimiterGeometrySequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTRTBeamDelimiterGeometrySequence::~DRTRTBeamDelimiterGeometrySequence() +{ + clear(); +} + + +void DRTRTBeamDelimiterGeometrySequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTRTBeamDelimiterGeometrySequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTRTBeamDelimiterGeometrySequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTRTBeamDelimiterGeometrySequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTRTBeamDelimiterGeometrySequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTRTBeamDelimiterGeometrySequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTRTBeamDelimiterGeometrySequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTRTBeamDelimiterGeometrySequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTRTBeamDelimiterGeometrySequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTRTBeamDelimiterGeometrySequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTRTBeamDelimiterGeometrySequence::Item &DRTRTBeamDelimiterGeometrySequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTRTBeamDelimiterGeometrySequence::Item &DRTRTBeamDelimiterGeometrySequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTRTBeamDelimiterGeometrySequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTRTBeamDelimiterGeometrySequence::Item &DRTRTBeamDelimiterGeometrySequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTRTBeamDelimiterGeometrySequence::Item &DRTRTBeamDelimiterGeometrySequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTRTBeamDelimiterGeometrySequence::Item &DRTRTBeamDelimiterGeometrySequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTRTBeamDelimiterGeometrySequence::Item &DRTRTBeamDelimiterGeometrySequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTRTBeamDelimiterGeometrySequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTRTBeamDelimiterGeometrySequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTRTBeamDelimiterGeometrySequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTRTBeamDelimiterGeometrySequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_RTBeamDelimiterGeometrySequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_RTBeamDelimiterGeometrySequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTRTBeamDelimiterGeometrySequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_RTBeamDelimiterGeometrySequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtrbls.cc b/dcmrt/libsrc/drtrbls.cc index defb874d..66cfd0f1 100644 --- a/dcmrt/libsrc/drtrbls.cc +++ b/dcmrt/libsrc/drtrbls.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTRecordedBlockSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -24,6 +24,8 @@ DRTRecordedBlockSequence::Item::Item(const OFBool emptyDefaultItem) AccessoryCode(DCM_AccessoryCode), BlockName(DCM_BlockName), BlockTrayID(DCM_BlockTrayID), + NumberOfBlockSlabItems(DCM_NumberOfBlockSlabItems), + RecordedBlockSlabSequence(emptyDefaultItem /*emptyDefaultSequence*/), ReferencedBlockNumber(DCM_ReferencedBlockNumber) { } @@ -34,6 +36,8 @@ DRTRecordedBlockSequence::Item::Item(const Item ©) AccessoryCode(copy.AccessoryCode), BlockName(copy.BlockName), BlockTrayID(copy.BlockTrayID), + NumberOfBlockSlabItems(copy.NumberOfBlockSlabItems), + RecordedBlockSlabSequence(copy.RecordedBlockSlabSequence), ReferencedBlockNumber(copy.ReferencedBlockNumber) { } @@ -52,6 +56,8 @@ DRTRecordedBlockSequence::Item &DRTRecordedBlockSequence::Item::operator=(const AccessoryCode = copy.AccessoryCode; BlockName = copy.BlockName; BlockTrayID = copy.BlockTrayID; + NumberOfBlockSlabItems = copy.NumberOfBlockSlabItems; + RecordedBlockSlabSequence = copy.RecordedBlockSlabSequence; ReferencedBlockNumber = copy.ReferencedBlockNumber; } return *this; @@ -67,6 +73,8 @@ void DRTRecordedBlockSequence::Item::clear() AccessoryCode.clear(); ReferencedBlockNumber.clear(); BlockName.clear(); + NumberOfBlockSlabItems.clear(); + RecordedBlockSlabSequence.clear(); } } @@ -76,7 +84,9 @@ OFBool DRTRecordedBlockSequence::Item::isEmpty() return BlockTrayID.isEmpty() && AccessoryCode.isEmpty() && ReferencedBlockNumber.isEmpty() && - BlockName.isEmpty(); + BlockName.isEmpty() && + NumberOfBlockSlabItems.isEmpty() && + RecordedBlockSlabSequence.isEmpty(); } @@ -97,6 +107,8 @@ OFCondition DRTRecordedBlockSequence::Item::read(DcmItem &item) getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "RecordedBlockSequence"); getAndCheckElementFromDataset(item, ReferencedBlockNumber, "1", "1", "RecordedBlockSequence"); getAndCheckElementFromDataset(item, BlockName, "1", "3", "RecordedBlockSequence"); + getAndCheckElementFromDataset(item, NumberOfBlockSlabItems, "1", "3", "RecordedBlockSequence"); + RecordedBlockSlabSequence.read(item, "1-n", "1C", "RecordedBlockSequence"); result = EC_Normal; } return result; @@ -113,6 +125,8 @@ OFCondition DRTRecordedBlockSequence::Item::write(DcmItem &item) addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "RecordedBlockSequence"); addElementToDataset(result, item, new DcmIntegerString(ReferencedBlockNumber), "1", "1", "RecordedBlockSequence"); addElementToDataset(result, item, new DcmLongString(BlockName), "1", "3", "RecordedBlockSequence"); + addElementToDataset(result, item, new DcmIntegerString(NumberOfBlockSlabItems), "1", "3", "RecordedBlockSequence"); + if (result.good()) result = RecordedBlockSlabSequence.write(item, "1-n", "1C", "RecordedBlockSequence"); } return result; } @@ -145,6 +159,24 @@ OFCondition DRTRecordedBlockSequence::Item::getBlockTrayID(OFString &value, cons } +OFCondition DRTRecordedBlockSequence::Item::getNumberOfBlockSlabItems(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(NumberOfBlockSlabItems, value, pos); +} + + +OFCondition DRTRecordedBlockSequence::Item::getNumberOfBlockSlabItems(Sint32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmIntegerString &, NumberOfBlockSlabItems).getSint32(value, pos); +} + + OFCondition DRTRecordedBlockSequence::Item::getReferencedBlockNumber(OFString &value, const signed long pos) const { if (EmptyDefaultItem) @@ -202,6 +234,19 @@ OFCondition DRTRecordedBlockSequence::Item::setBlockTrayID(const OFString &value } +OFCondition DRTRecordedBlockSequence::Item::setNumberOfBlockSlabItems(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = NumberOfBlockSlabItems.putOFStringArray(value); + } + return result; +} + + OFCondition DRTRecordedBlockSequence::Item::setReferencedBlockNumber(const OFString &value, const OFBool check) { OFCondition result = EC_IllegalCall; @@ -339,10 +384,12 @@ OFCondition DRTRecordedBlockSequence::gotoFirstItem() OFCondition DRTRecordedBlockSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrbos1.cc b/dcmrt/libsrc/drtrbos1.cc index 3512f182..29d109e9 100644 --- a/dcmrt/libsrc/drtrbos1.cc +++ b/dcmrt/libsrc/drtrbos1.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTReferencedBolusSequenceInRTBeamsModule * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -339,10 +339,12 @@ OFCondition DRTReferencedBolusSequenceInRTBeamsModule::gotoFirstItem() OFCondition DRTReferencedBolusSequenceInRTBeamsModule::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrbos2.cc b/dcmrt/libsrc/drtrbos2.cc new file mode 100644 index 00000000..79ca73a9 --- /dev/null +++ b/dcmrt/libsrc/drtrbos2.cc @@ -0,0 +1,584 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTReferencedBolusSequenceInRTIonBeamsModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtrbos2.h" + + +// --- item class --- + +DRTReferencedBolusSequenceInRTIonBeamsModule::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + AccessoryCode(DCM_AccessoryCode), + ReferencedROINumber(DCM_ReferencedROINumber) +{ +} + + +DRTReferencedBolusSequenceInRTIonBeamsModule::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + AccessoryCode(copy.AccessoryCode), + ReferencedROINumber(copy.ReferencedROINumber) +{ +} + + +DRTReferencedBolusSequenceInRTIonBeamsModule::Item::~Item() +{ +} + + +DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + AccessoryCode = copy.AccessoryCode; + ReferencedROINumber = copy.ReferencedROINumber; + } + return *this; +} + + +void DRTReferencedBolusSequenceInRTIonBeamsModule::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + ReferencedROINumber.clear(); + AccessoryCode.clear(); + } +} + + +OFBool DRTReferencedBolusSequenceInRTIonBeamsModule::Item::isEmpty() +{ + return ReferencedROINumber.isEmpty() && + AccessoryCode.isEmpty(); +} + + +OFBool DRTReferencedBolusSequenceInRTIonBeamsModule::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, ReferencedROINumber, "1", "1", "ReferencedBolusSequence"); + getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "ReferencedBolusSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmIntegerString(ReferencedROINumber), "1", "1", "ReferencedBolusSequence"); + addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "ReferencedBolusSequence"); + } + return result; +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::Item::getAccessoryCode(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(AccessoryCode, value, pos); +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::Item::getReferencedROINumber(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedROINumber, value, pos); +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::Item::getReferencedROINumber(Sint32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmIntegerString &, ReferencedROINumber).getSint32(value, pos); +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::Item::setAccessoryCode(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = AccessoryCode.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::Item::setReferencedROINumber(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedROINumber.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTReferencedBolusSequenceInRTIonBeamsModule::DRTReferencedBolusSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTReferencedBolusSequenceInRTIonBeamsModule::DRTReferencedBolusSequenceInRTIonBeamsModule(const DRTReferencedBolusSequenceInRTIonBeamsModule ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTReferencedBolusSequenceInRTIonBeamsModule &DRTReferencedBolusSequenceInRTIonBeamsModule::operator=(const DRTReferencedBolusSequenceInRTIonBeamsModule ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTReferencedBolusSequenceInRTIonBeamsModule::~DRTReferencedBolusSequenceInRTIonBeamsModule() +{ + clear(); +} + + +void DRTReferencedBolusSequenceInRTIonBeamsModule::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTReferencedBolusSequenceInRTIonBeamsModule::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTReferencedBolusSequenceInRTIonBeamsModule::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTReferencedBolusSequenceInRTIonBeamsModule::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_ReferencedBolusSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_ReferencedBolusSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedBolusSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtrbos3.cc b/dcmrt/libsrc/drtrbos3.cc new file mode 100644 index 00000000..edf1e5ee --- /dev/null +++ b/dcmrt/libsrc/drtrbos3.cc @@ -0,0 +1,584 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtrbos3.h" + + +// --- item class --- + +DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + AccessoryCode(DCM_AccessoryCode), + ReferencedROINumber(DCM_ReferencedROINumber) +{ +} + + +DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + AccessoryCode(copy.AccessoryCode), + ReferencedROINumber(copy.ReferencedROINumber) +{ +} + + +DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::~Item() +{ +} + + +DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + AccessoryCode = copy.AccessoryCode; + ReferencedROINumber = copy.ReferencedROINumber; + } + return *this; +} + + +void DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + ReferencedROINumber.clear(); + AccessoryCode.clear(); + } +} + + +OFBool DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::isEmpty() +{ + return ReferencedROINumber.isEmpty() && + AccessoryCode.isEmpty(); +} + + +OFBool DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, ReferencedROINumber, "1", "1", "ReferencedBolusSequence"); + getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "ReferencedBolusSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmIntegerString(ReferencedROINumber), "1", "1", "ReferencedBolusSequence"); + addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "ReferencedBolusSequence"); + } + return result; +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::getAccessoryCode(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(AccessoryCode, value, pos); +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::getReferencedROINumber(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedROINumber, value, pos); +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::getReferencedROINumber(Sint32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmIntegerString &, ReferencedROINumber).getSint32(value, pos); +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::setAccessoryCode(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = AccessoryCode.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::setReferencedROINumber(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedROINumber.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule(const DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::operator=(const DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::~DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule() +{ + clear(); +} + + +void DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_ReferencedBolusSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_ReferencedBolusSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedBolusSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtrbos6.cc b/dcmrt/libsrc/drtrbos6.cc deleted file mode 100644 index e9367e51..00000000 --- a/dcmrt/libsrc/drtrbos6.cc +++ /dev/null @@ -1,582 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Source file for class DRTReferencedBolusSequenceInRTIonBeamsModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/dcmrt/seq/drtrbos6.h" - - -// --- item class --- - -DRTReferencedBolusSequenceInRTIonBeamsModule::Item::Item(const OFBool emptyDefaultItem) - : EmptyDefaultItem(emptyDefaultItem), - AccessoryCode(DCM_AccessoryCode), - ReferencedROINumber(DCM_ReferencedROINumber) -{ -} - - -DRTReferencedBolusSequenceInRTIonBeamsModule::Item::Item(const Item ©) - : EmptyDefaultItem(copy.EmptyDefaultItem), - AccessoryCode(copy.AccessoryCode), - ReferencedROINumber(copy.ReferencedROINumber) -{ -} - - -DRTReferencedBolusSequenceInRTIonBeamsModule::Item::~Item() -{ -} - - -DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::Item::operator=(const Item ©) -{ - if (this != ©) - { - EmptyDefaultItem = copy.EmptyDefaultItem; - AccessoryCode = copy.AccessoryCode; - ReferencedROINumber = copy.ReferencedROINumber; - } - return *this; -} - - -void DRTReferencedBolusSequenceInRTIonBeamsModule::Item::clear() -{ - if (!EmptyDefaultItem) - { - /* clear all DICOM attributes */ - ReferencedROINumber.clear(); - AccessoryCode.clear(); - } -} - - -OFBool DRTReferencedBolusSequenceInRTIonBeamsModule::Item::isEmpty() -{ - return ReferencedROINumber.isEmpty() && - AccessoryCode.isEmpty(); -} - - -OFBool DRTReferencedBolusSequenceInRTIonBeamsModule::Item::isValid() const -{ - return !EmptyDefaultItem; -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::Item::read(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - /* re-initialize object */ - clear(); - getAndCheckElementFromDataset(item, ReferencedROINumber, "1", "1", "ReferencedBolusSequence"); - getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "ReferencedBolusSequence"); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::Item::write(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = EC_Normal; - addElementToDataset(result, item, new DcmIntegerString(ReferencedROINumber), "1", "1", "ReferencedBolusSequence"); - addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "ReferencedBolusSequence"); - } - return result; -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::Item::getAccessoryCode(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(AccessoryCode, value, pos); -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::Item::getReferencedROINumber(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ReferencedROINumber, value, pos); -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::Item::getReferencedROINumber(Sint32 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmIntegerString &, ReferencedROINumber).getSint32(value, pos); -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::Item::setAccessoryCode(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = AccessoryCode.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::Item::setReferencedROINumber(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ReferencedROINumber.putOFStringArray(value); - } - return result; -} - - -// --- sequence class --- - -DRTReferencedBolusSequenceInRTIonBeamsModule::DRTReferencedBolusSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence) - : EmptyDefaultSequence(emptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - CurrentItem = SequenceOfItems.end(); -} - - -DRTReferencedBolusSequenceInRTIonBeamsModule::DRTReferencedBolusSequenceInRTIonBeamsModule(const DRTReferencedBolusSequenceInRTIonBeamsModule ©) - : EmptyDefaultSequence(copy.EmptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); -} - - -DRTReferencedBolusSequenceInRTIonBeamsModule &DRTReferencedBolusSequenceInRTIonBeamsModule::operator=(const DRTReferencedBolusSequenceInRTIonBeamsModule ©) -{ - if (this != ©) - { - clear(); - EmptyDefaultSequence = copy.EmptyDefaultSequence; - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); - } - return *this; -} - - -DRTReferencedBolusSequenceInRTIonBeamsModule::~DRTReferencedBolusSequenceInRTIonBeamsModule() -{ - clear(); -} - - -void DRTReferencedBolusSequenceInRTIonBeamsModule::clear() -{ - if (!EmptyDefaultSequence) - { - CurrentItem = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* delete all items and free memory */ - while (CurrentItem != last) - { - delete (*CurrentItem); - CurrentItem = SequenceOfItems.erase(CurrentItem); - } - /* make sure that the list is empty */ - SequenceOfItems.clear(); - CurrentItem = SequenceOfItems.end(); - } -} - - -OFBool DRTReferencedBolusSequenceInRTIonBeamsModule::isEmpty() -{ - return SequenceOfItems.empty(); -} - - -OFBool DRTReferencedBolusSequenceInRTIonBeamsModule::isValid() const -{ - return !EmptyDefaultSequence; -} - - -size_t DRTReferencedBolusSequenceInRTIonBeamsModule::getNumberOfItems() const -{ - return SequenceOfItems.size(); -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::gotoFirstItem() -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - CurrentItem = SequenceOfItems.begin(); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::gotoNextItem() -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - ++CurrentItem; - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::gotoItem(const size_t num) -{ - return gotoItem(num, CurrentItem); -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::getCurrentItem(Item *&item) const -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - item = *CurrentItem; - result = EC_Normal; - } - return result; -} - - -DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::getCurrentItem() -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -const DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::getCurrentItem() const -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item) -{ - OFListIterator(Item *) iterator; - OFCondition result = gotoItem(num, iterator); - if (result.good()) - item = *iterator; - return result; -} - - -DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::getItem(const size_t num) -{ - OFListIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -const DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::getItem(const size_t num) const -{ - OFListConstIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::operator[](const size_t num) -{ - return getItem(num); -} - - -const DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::operator[](const size_t num) const -{ - return getItem(num); -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::addItem(Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.push_back(item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } - return result; -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - result = gotoItem(pos, iterator); - if (result.good()) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.insert(iterator, 1, item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } else - result = addItem(item); - } - return result; -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::removeItem(const size_t pos) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - if (gotoItem(pos, iterator).good()) - { - delete *iterator; - iterator = SequenceOfItems.erase(iterator); - result = EC_Normal; - } else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - /* re-initialize object */ - clear(); - /* retrieve sequence element from dataset */ - DcmSequenceOfItems *sequence; - result = dataset.findAndGetSequence(DCM_ReferencedBolusSequence, sequence); - if (sequence != NULL) - { - if (checkElementValue(*sequence, card, type, result, moduleName)) - { - DcmStack stack; - OFBool first = OFTrue; - /* iterate over all sequence items */ - while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) - { - DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); - if (ditem != NULL) - { - Item *item = new Item(); - if (item != NULL) - { - result = item->read(*ditem); - if (result.good()) - { - /* append new item to the end of the list */ - SequenceOfItems.push_back(item); - first = OFFalse; - } - } else - result = EC_MemoryExhausted; - } else - result = EC_CorruptedData; - } - } - } else { - DcmSequenceOfItems element(DCM_ReferencedBolusSequence); - checkElementValue(element, card, type, result, moduleName); - } - } - return result; -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - result = EC_MemoryExhausted; - DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedBolusSequence); - if (sequence != NULL) - { - result = EC_Normal; - /* an empty optional sequence is not written */ - if ((type == "2") || !SequenceOfItems.empty()) - { - OFListIterator(Item *) iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* iterate over all sequence items */ - while (result.good() && (iterator != last)) - { - DcmItem *item = new DcmItem(); - if (item != NULL) - { - /* append new item to the end of the sequence */ - result = sequence->append(item); - if (result.good()) - { - result = (*iterator)->write(*item); - ++iterator; - } else - delete item; - } else - result = EC_MemoryExhausted; - } - if (result.good()) - { - /* insert sequence element into the dataset */ - result = dataset.insert(sequence, OFTrue /*replaceOld*/); - } - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - if (result.good()) - { - /* forget reference to sequence object (avoid deletion below) */ - sequence = NULL; - } - } - else if (type == "1") - { - /* empty type 1 sequence not allowed */ - result = RT_EC_InvalidValue; - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - } - /* delete sequence (if not inserted into the dataset) */ - delete sequence; - } - } - return result; -} - - -// end of source file diff --git a/dcmrt/libsrc/drtrbos7.cc b/dcmrt/libsrc/drtrbos7.cc deleted file mode 100644 index ed7176d9..00000000 --- a/dcmrt/libsrc/drtrbos7.cc +++ /dev/null @@ -1,582 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Source file for class DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/dcmrt/seq/drtrbos7.h" - - -// --- item class --- - -DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::Item(const OFBool emptyDefaultItem) - : EmptyDefaultItem(emptyDefaultItem), - AccessoryCode(DCM_AccessoryCode), - ReferencedROINumber(DCM_ReferencedROINumber) -{ -} - - -DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::Item(const Item ©) - : EmptyDefaultItem(copy.EmptyDefaultItem), - AccessoryCode(copy.AccessoryCode), - ReferencedROINumber(copy.ReferencedROINumber) -{ -} - - -DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::~Item() -{ -} - - -DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::operator=(const Item ©) -{ - if (this != ©) - { - EmptyDefaultItem = copy.EmptyDefaultItem; - AccessoryCode = copy.AccessoryCode; - ReferencedROINumber = copy.ReferencedROINumber; - } - return *this; -} - - -void DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::clear() -{ - if (!EmptyDefaultItem) - { - /* clear all DICOM attributes */ - ReferencedROINumber.clear(); - AccessoryCode.clear(); - } -} - - -OFBool DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::isEmpty() -{ - return ReferencedROINumber.isEmpty() && - AccessoryCode.isEmpty(); -} - - -OFBool DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::isValid() const -{ - return !EmptyDefaultItem; -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::read(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - /* re-initialize object */ - clear(); - getAndCheckElementFromDataset(item, ReferencedROINumber, "1", "1", "ReferencedBolusSequence"); - getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "ReferencedBolusSequence"); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::write(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = EC_Normal; - addElementToDataset(result, item, new DcmIntegerString(ReferencedROINumber), "1", "1", "ReferencedBolusSequence"); - addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "ReferencedBolusSequence"); - } - return result; -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::getAccessoryCode(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(AccessoryCode, value, pos); -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::getReferencedROINumber(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ReferencedROINumber, value, pos); -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::getReferencedROINumber(Sint32 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmIntegerString &, ReferencedROINumber).getSint32(value, pos); -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::setAccessoryCode(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = AccessoryCode.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::setReferencedROINumber(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ReferencedROINumber.putOFStringArray(value); - } - return result; -} - - -// --- sequence class --- - -DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence) - : EmptyDefaultSequence(emptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - CurrentItem = SequenceOfItems.end(); -} - - -DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule(const DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule ©) - : EmptyDefaultSequence(copy.EmptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); -} - - -DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::operator=(const DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule ©) -{ - if (this != ©) - { - clear(); - EmptyDefaultSequence = copy.EmptyDefaultSequence; - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); - } - return *this; -} - - -DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::~DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule() -{ - clear(); -} - - -void DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::clear() -{ - if (!EmptyDefaultSequence) - { - CurrentItem = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* delete all items and free memory */ - while (CurrentItem != last) - { - delete (*CurrentItem); - CurrentItem = SequenceOfItems.erase(CurrentItem); - } - /* make sure that the list is empty */ - SequenceOfItems.clear(); - CurrentItem = SequenceOfItems.end(); - } -} - - -OFBool DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::isEmpty() -{ - return SequenceOfItems.empty(); -} - - -OFBool DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::isValid() const -{ - return !EmptyDefaultSequence; -} - - -size_t DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getNumberOfItems() const -{ - return SequenceOfItems.size(); -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::gotoFirstItem() -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - CurrentItem = SequenceOfItems.begin(); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::gotoNextItem() -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - ++CurrentItem; - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num) -{ - return gotoItem(num, CurrentItem); -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getCurrentItem(Item *&item) const -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - item = *CurrentItem; - result = EC_Normal; - } - return result; -} - - -DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getCurrentItem() -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -const DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getCurrentItem() const -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num, Item *&item) -{ - OFListIterator(Item *) iterator; - OFCondition result = gotoItem(num, iterator); - if (result.good()) - item = *iterator; - return result; -} - - -DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) -{ - OFListIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -const DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) const -{ - OFListConstIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) -{ - return getItem(num); -} - - -const DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) const -{ - return getItem(num); -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::addItem(Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.push_back(item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } - return result; -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::insertItem(const size_t pos, Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - result = gotoItem(pos, iterator); - if (result.good()) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.insert(iterator, 1, item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } else - result = addItem(item); - } - return result; -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::removeItem(const size_t pos) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - if (gotoItem(pos, iterator).good()) - { - delete *iterator; - iterator = SequenceOfItems.erase(iterator); - result = EC_Normal; - } else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - /* re-initialize object */ - clear(); - /* retrieve sequence element from dataset */ - DcmSequenceOfItems *sequence; - result = dataset.findAndGetSequence(DCM_ReferencedBolusSequence, sequence); - if (sequence != NULL) - { - if (checkElementValue(*sequence, card, type, result, moduleName)) - { - DcmStack stack; - OFBool first = OFTrue; - /* iterate over all sequence items */ - while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) - { - DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); - if (ditem != NULL) - { - Item *item = new Item(); - if (item != NULL) - { - result = item->read(*ditem); - if (result.good()) - { - /* append new item to the end of the list */ - SequenceOfItems.push_back(item); - first = OFFalse; - } - } else - result = EC_MemoryExhausted; - } else - result = EC_CorruptedData; - } - } - } else { - DcmSequenceOfItems element(DCM_ReferencedBolusSequence); - checkElementValue(element, card, type, result, moduleName); - } - } - return result; -} - - -OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - result = EC_MemoryExhausted; - DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedBolusSequence); - if (sequence != NULL) - { - result = EC_Normal; - /* an empty optional sequence is not written */ - if ((type == "2") || !SequenceOfItems.empty()) - { - OFListIterator(Item *) iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* iterate over all sequence items */ - while (result.good() && (iterator != last)) - { - DcmItem *item = new DcmItem(); - if (item != NULL) - { - /* append new item to the end of the sequence */ - result = sequence->append(item); - if (result.good()) - { - result = (*iterator)->write(*item); - ++iterator; - } else - delete item; - } else - result = EC_MemoryExhausted; - } - if (result.good()) - { - /* insert sequence element into the dataset */ - result = dataset.insert(sequence, OFTrue /*replaceOld*/); - } - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - if (result.good()) - { - /* forget reference to sequence object (avoid deletion below) */ - sequence = NULL; - } - } - else if (type == "1") - { - /* empty type 1 sequence not allowed */ - result = RT_EC_InvalidValue; - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - } - /* delete sequence (if not inserted into the dataset) */ - delete sequence; - } - } - return result; -} - - -// end of source file diff --git a/dcmrt/libsrc/drtrbs1.cc b/dcmrt/libsrc/drtrbs1.cc new file mode 100644 index 00000000..ff2379da --- /dev/null +++ b/dcmrt/libsrc/drtrbs1.cc @@ -0,0 +1,562 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTReferencedBeamSequenceInRTDoseModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtrbs1.h" + + +// --- item class --- + +DRTReferencedBeamSequenceInRTDoseModule::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + ReferencedBeamNumber(DCM_ReferencedBeamNumber), + ReferencedControlPointSequence(emptyDefaultItem /*emptyDefaultSequence*/) +{ +} + + +DRTReferencedBeamSequenceInRTDoseModule::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + ReferencedBeamNumber(copy.ReferencedBeamNumber), + ReferencedControlPointSequence(copy.ReferencedControlPointSequence) +{ +} + + +DRTReferencedBeamSequenceInRTDoseModule::Item::~Item() +{ +} + + +DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + ReferencedBeamNumber = copy.ReferencedBeamNumber; + ReferencedControlPointSequence = copy.ReferencedControlPointSequence; + } + return *this; +} + + +void DRTReferencedBeamSequenceInRTDoseModule::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + ReferencedBeamNumber.clear(); + ReferencedControlPointSequence.clear(); + } +} + + +OFBool DRTReferencedBeamSequenceInRTDoseModule::Item::isEmpty() +{ + return ReferencedBeamNumber.isEmpty() && + ReferencedControlPointSequence.isEmpty(); +} + + +OFBool DRTReferencedBeamSequenceInRTDoseModule::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTReferencedBeamSequenceInRTDoseModule::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, ReferencedBeamNumber, "1", "1", "ReferencedBeamSequence"); + ReferencedControlPointSequence.read(item, "1-n", "1C", "ReferencedBeamSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReferencedBeamSequenceInRTDoseModule::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmIntegerString(ReferencedBeamNumber), "1", "1", "ReferencedBeamSequence"); + if (result.good()) result = ReferencedControlPointSequence.write(item, "1-n", "1C", "ReferencedBeamSequence"); + } + return result; +} + + +OFCondition DRTReferencedBeamSequenceInRTDoseModule::Item::getReferencedBeamNumber(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedBeamNumber, value, pos); +} + + +OFCondition DRTReferencedBeamSequenceInRTDoseModule::Item::getReferencedBeamNumber(Sint32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmIntegerString &, ReferencedBeamNumber).getSint32(value, pos); +} + + +OFCondition DRTReferencedBeamSequenceInRTDoseModule::Item::setReferencedBeamNumber(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedBeamNumber.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTReferencedBeamSequenceInRTDoseModule::DRTReferencedBeamSequenceInRTDoseModule(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTReferencedBeamSequenceInRTDoseModule::DRTReferencedBeamSequenceInRTDoseModule(const DRTReferencedBeamSequenceInRTDoseModule ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTReferencedBeamSequenceInRTDoseModule &DRTReferencedBeamSequenceInRTDoseModule::operator=(const DRTReferencedBeamSequenceInRTDoseModule ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTReferencedBeamSequenceInRTDoseModule::~DRTReferencedBeamSequenceInRTDoseModule() +{ + clear(); +} + + +void DRTReferencedBeamSequenceInRTDoseModule::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTReferencedBeamSequenceInRTDoseModule::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTReferencedBeamSequenceInRTDoseModule::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTReferencedBeamSequenceInRTDoseModule::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTReferencedBeamSequenceInRTDoseModule::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReferencedBeamSequenceInRTDoseModule::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTReferencedBeamSequenceInRTDoseModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedBeamSequenceInRTDoseModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedBeamSequenceInRTDoseModule::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTReferencedBeamSequenceInRTDoseModule::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTReferencedBeamSequenceInRTDoseModule::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTReferencedBeamSequenceInRTDoseModule::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTReferencedBeamSequenceInRTDoseModule::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTReferencedBeamSequenceInRTDoseModule::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedBeamSequenceInRTDoseModule::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_ReferencedBeamSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_ReferencedBeamSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTReferencedBeamSequenceInRTDoseModule::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedBeamSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtrbs2.cc b/dcmrt/libsrc/drtrbs2.cc index e5928e9a..72771d68 100644 --- a/dcmrt/libsrc/drtrbs2.cc +++ b/dcmrt/libsrc/drtrbs2.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * - * Source file for class DRTReferencedBeamSequenceInRTDoseModule + * Source file for class DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -19,64 +19,109 @@ // --- item class --- -DRTReferencedBeamSequenceInRTDoseModule::Item::Item(const OFBool emptyDefaultItem) +DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::Item(const OFBool emptyDefaultItem) : EmptyDefaultItem(emptyDefaultItem), + AlternateBeamDose(DCM_AlternateBeamDose), + AlternateBeamDoseType(DCM_AlternateBeamDoseType), + BeamDeliveryDurationLimit(DCM_BeamDeliveryDurationLimit), + BeamDose(DCM_BeamDose), + BeamDoseType(DCM_BeamDoseType), + BeamMeterset(DCM_BeamMeterset), + DoseCalibrationConditionsSequence(emptyDefaultItem /*emptyDefaultSequence*/), + DoseCalibrationConditionsVerifiedFlag(DCM_DoseCalibrationConditionsVerifiedFlag), + RadiationDeviceConfigurationAndCommissioningKeySequence(emptyDefaultItem /*emptyDefaultSequence*/), ReferencedBeamNumber(DCM_ReferencedBeamNumber), - ReferencedControlPointSequence(emptyDefaultItem /*emptyDefaultSequence*/) + ReferencedDoseReferenceUID(DCM_ReferencedDoseReferenceUID) { } -DRTReferencedBeamSequenceInRTDoseModule::Item::Item(const Item ©) +DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::Item(const Item ©) : EmptyDefaultItem(copy.EmptyDefaultItem), + AlternateBeamDose(copy.AlternateBeamDose), + AlternateBeamDoseType(copy.AlternateBeamDoseType), + BeamDeliveryDurationLimit(copy.BeamDeliveryDurationLimit), + BeamDose(copy.BeamDose), + BeamDoseType(copy.BeamDoseType), + BeamMeterset(copy.BeamMeterset), + DoseCalibrationConditionsSequence(copy.DoseCalibrationConditionsSequence), + DoseCalibrationConditionsVerifiedFlag(copy.DoseCalibrationConditionsVerifiedFlag), + RadiationDeviceConfigurationAndCommissioningKeySequence(copy.RadiationDeviceConfigurationAndCommissioningKeySequence), ReferencedBeamNumber(copy.ReferencedBeamNumber), - ReferencedControlPointSequence(copy.ReferencedControlPointSequence) + ReferencedDoseReferenceUID(copy.ReferencedDoseReferenceUID) { } -DRTReferencedBeamSequenceInRTDoseModule::Item::~Item() +DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::~Item() { } -DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::Item::operator=(const Item ©) +DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::operator=(const Item ©) { if (this != ©) { EmptyDefaultItem = copy.EmptyDefaultItem; + AlternateBeamDose = copy.AlternateBeamDose; + AlternateBeamDoseType = copy.AlternateBeamDoseType; + BeamDeliveryDurationLimit = copy.BeamDeliveryDurationLimit; + BeamDose = copy.BeamDose; + BeamDoseType = copy.BeamDoseType; + BeamMeterset = copy.BeamMeterset; + DoseCalibrationConditionsSequence = copy.DoseCalibrationConditionsSequence; + DoseCalibrationConditionsVerifiedFlag = copy.DoseCalibrationConditionsVerifiedFlag; + RadiationDeviceConfigurationAndCommissioningKeySequence = copy.RadiationDeviceConfigurationAndCommissioningKeySequence; ReferencedBeamNumber = copy.ReferencedBeamNumber; - ReferencedControlPointSequence = copy.ReferencedControlPointSequence; + ReferencedDoseReferenceUID = copy.ReferencedDoseReferenceUID; } return *this; } -void DRTReferencedBeamSequenceInRTDoseModule::Item::clear() +void DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::clear() { if (!EmptyDefaultItem) { /* clear all DICOM attributes */ ReferencedBeamNumber.clear(); - ReferencedControlPointSequence.clear(); + ReferencedDoseReferenceUID.clear(); + BeamDose.clear(); + BeamDoseType.clear(); + AlternateBeamDose.clear(); + AlternateBeamDoseType.clear(); + BeamMeterset.clear(); + BeamDeliveryDurationLimit.clear(); + DoseCalibrationConditionsVerifiedFlag.clear(); + DoseCalibrationConditionsSequence.clear(); + RadiationDeviceConfigurationAndCommissioningKeySequence.clear(); } } -OFBool DRTReferencedBeamSequenceInRTDoseModule::Item::isEmpty() +OFBool DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::isEmpty() { return ReferencedBeamNumber.isEmpty() && - ReferencedControlPointSequence.isEmpty(); + ReferencedDoseReferenceUID.isEmpty() && + BeamDose.isEmpty() && + BeamDoseType.isEmpty() && + AlternateBeamDose.isEmpty() && + AlternateBeamDoseType.isEmpty() && + BeamMeterset.isEmpty() && + BeamDeliveryDurationLimit.isEmpty() && + DoseCalibrationConditionsVerifiedFlag.isEmpty() && + DoseCalibrationConditionsSequence.isEmpty() && + RadiationDeviceConfigurationAndCommissioningKeySequence.isEmpty(); } -OFBool DRTReferencedBeamSequenceInRTDoseModule::Item::isValid() const +OFBool DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::isValid() const { return !EmptyDefaultItem; } -OFCondition DRTReferencedBeamSequenceInRTDoseModule::Item::read(DcmItem &item) +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::read(DcmItem &item) { OFCondition result = EC_IllegalCall; if (!EmptyDefaultItem) @@ -84,27 +129,135 @@ OFCondition DRTReferencedBeamSequenceInRTDoseModule::Item::read(DcmItem &item) /* re-initialize object */ clear(); getAndCheckElementFromDataset(item, ReferencedBeamNumber, "1", "1", "ReferencedBeamSequence"); - ReferencedControlPointSequence.read(item, "1-n", "1C", "ReferencedBeamSequence"); + getAndCheckElementFromDataset(item, ReferencedDoseReferenceUID, "1", "3", "ReferencedBeamSequence"); + getAndCheckElementFromDataset(item, BeamDose, "1", "3", "ReferencedBeamSequence"); + getAndCheckElementFromDataset(item, BeamDoseType, "1", "1C", "ReferencedBeamSequence"); + getAndCheckElementFromDataset(item, AlternateBeamDose, "1", "3", "ReferencedBeamSequence"); + getAndCheckElementFromDataset(item, AlternateBeamDoseType, "1", "1C", "ReferencedBeamSequence"); + getAndCheckElementFromDataset(item, BeamMeterset, "1", "3", "ReferencedBeamSequence"); + getAndCheckElementFromDataset(item, BeamDeliveryDurationLimit, "1", "3", "ReferencedBeamSequence"); + getAndCheckElementFromDataset(item, DoseCalibrationConditionsVerifiedFlag, "1", "3", "ReferencedBeamSequence"); + DoseCalibrationConditionsSequence.read(item, "1-n", "1C", "ReferencedBeamSequence"); + RadiationDeviceConfigurationAndCommissioningKeySequence.read(item, "1-n", "1C", "ReferencedBeamSequence"); result = EC_Normal; } return result; } -OFCondition DRTReferencedBeamSequenceInRTDoseModule::Item::write(DcmItem &item) +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::write(DcmItem &item) { OFCondition result = EC_IllegalCall; if (!EmptyDefaultItem) { result = EC_Normal; addElementToDataset(result, item, new DcmIntegerString(ReferencedBeamNumber), "1", "1", "ReferencedBeamSequence"); - if (result.good()) result = ReferencedControlPointSequence.write(item, "1-n", "1C", "ReferencedBeamSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedDoseReferenceUID), "1", "3", "ReferencedBeamSequence"); + addElementToDataset(result, item, new DcmDecimalString(BeamDose), "1", "3", "ReferencedBeamSequence"); + addElementToDataset(result, item, new DcmCodeString(BeamDoseType), "1", "1C", "ReferencedBeamSequence"); + addElementToDataset(result, item, new DcmDecimalString(AlternateBeamDose), "1", "3", "ReferencedBeamSequence"); + addElementToDataset(result, item, new DcmCodeString(AlternateBeamDoseType), "1", "1C", "ReferencedBeamSequence"); + addElementToDataset(result, item, new DcmDecimalString(BeamMeterset), "1", "3", "ReferencedBeamSequence"); + addElementToDataset(result, item, new DcmFloatingPointDouble(BeamDeliveryDurationLimit), "1", "3", "ReferencedBeamSequence"); + addElementToDataset(result, item, new DcmCodeString(DoseCalibrationConditionsVerifiedFlag), "1", "3", "ReferencedBeamSequence"); + if (result.good()) result = DoseCalibrationConditionsSequence.write(item, "1-n", "1C", "ReferencedBeamSequence"); + if (result.good()) result = RadiationDeviceConfigurationAndCommissioningKeySequence.write(item, "1-n", "1C", "ReferencedBeamSequence"); } return result; } -OFCondition DRTReferencedBeamSequenceInRTDoseModule::Item::getReferencedBeamNumber(OFString &value, const signed long pos) const +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getAlternateBeamDose(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(AlternateBeamDose, value, pos); +} + + +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getAlternateBeamDose(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, AlternateBeamDose).getFloat64(value, pos); +} + + +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getAlternateBeamDoseType(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(AlternateBeamDoseType, value, pos); +} + + +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getBeamDeliveryDurationLimit(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointDouble &, BeamDeliveryDurationLimit).getFloat64(value, pos); +} + + +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getBeamDose(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(BeamDose, value, pos); +} + + +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getBeamDose(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, BeamDose).getFloat64(value, pos); +} + + +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getBeamDoseType(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(BeamDoseType, value, pos); +} + + +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getBeamMeterset(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(BeamMeterset, value, pos); +} + + +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getBeamMeterset(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, BeamMeterset).getFloat64(value, pos); +} + + +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getDoseCalibrationConditionsVerifiedFlag(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(DoseCalibrationConditionsVerifiedFlag, value, pos); +} + + +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getReferencedBeamNumber(OFString &value, const signed long pos) const { if (EmptyDefaultItem) return EC_IllegalCall; @@ -113,7 +266,7 @@ OFCondition DRTReferencedBeamSequenceInRTDoseModule::Item::getReferencedBeamNumb } -OFCondition DRTReferencedBeamSequenceInRTDoseModule::Item::getReferencedBeamNumber(Sint32 &value, const unsigned long pos) const +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getReferencedBeamNumber(Sint32 &value, const unsigned long pos) const { if (EmptyDefaultItem) return EC_IllegalCall; @@ -122,7 +275,103 @@ OFCondition DRTReferencedBeamSequenceInRTDoseModule::Item::getReferencedBeamNumb } -OFCondition DRTReferencedBeamSequenceInRTDoseModule::Item::setReferencedBeamNumber(const OFString &value, const OFBool check) +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getReferencedDoseReferenceUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedDoseReferenceUID, value, pos); +} + + +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setAlternateBeamDose(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = AlternateBeamDose.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setAlternateBeamDoseType(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = AlternateBeamDoseType.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setBeamDeliveryDurationLimit(const Float64 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return BeamDeliveryDurationLimit.putFloat64(value, pos); +} + + +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setBeamDose(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = BeamDose.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setBeamDoseType(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = BeamDoseType.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setBeamMeterset(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = BeamMeterset.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setDoseCalibrationConditionsVerifiedFlag(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = DoseCalibrationConditionsVerifiedFlag.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setReferencedBeamNumber(const OFString &value, const OFBool check) { OFCondition result = EC_IllegalCall; if (!EmptyDefaultItem) @@ -135,9 +384,22 @@ OFCondition DRTReferencedBeamSequenceInRTDoseModule::Item::setReferencedBeamNumb } +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setReferencedDoseReferenceUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedDoseReferenceUID.putOFStringArray(value); + } + return result; +} + + // --- sequence class --- -DRTReferencedBeamSequenceInRTDoseModule::DRTReferencedBeamSequenceInRTDoseModule(const OFBool emptyDefaultSequence) +DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule(const OFBool emptyDefaultSequence) : EmptyDefaultSequence(emptyDefaultSequence), SequenceOfItems(), CurrentItem(), @@ -147,7 +409,7 @@ DRTReferencedBeamSequenceInRTDoseModule::DRTReferencedBeamSequenceInRTDoseModule } -DRTReferencedBeamSequenceInRTDoseModule::DRTReferencedBeamSequenceInRTDoseModule(const DRTReferencedBeamSequenceInRTDoseModule ©) +DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule(const DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule ©) : EmptyDefaultSequence(copy.EmptyDefaultSequence), SequenceOfItems(), CurrentItem(), @@ -173,7 +435,7 @@ DRTReferencedBeamSequenceInRTDoseModule::DRTReferencedBeamSequenceInRTDoseModule } -DRTReferencedBeamSequenceInRTDoseModule &DRTReferencedBeamSequenceInRTDoseModule::operator=(const DRTReferencedBeamSequenceInRTDoseModule ©) +DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::operator=(const DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule ©) { if (this != ©) { @@ -201,13 +463,13 @@ DRTReferencedBeamSequenceInRTDoseModule &DRTReferencedBeamSequenceInRTDoseModule } -DRTReferencedBeamSequenceInRTDoseModule::~DRTReferencedBeamSequenceInRTDoseModule() +DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::~DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule() { clear(); } -void DRTReferencedBeamSequenceInRTDoseModule::clear() +void DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::clear() { if (!EmptyDefaultSequence) { @@ -226,25 +488,25 @@ void DRTReferencedBeamSequenceInRTDoseModule::clear() } -OFBool DRTReferencedBeamSequenceInRTDoseModule::isEmpty() +OFBool DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::isEmpty() { return SequenceOfItems.empty(); } -OFBool DRTReferencedBeamSequenceInRTDoseModule::isValid() const +OFBool DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::isValid() const { return !EmptyDefaultSequence; } -size_t DRTReferencedBeamSequenceInRTDoseModule::getNumberOfItems() const +size_t DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getNumberOfItems() const { return SequenceOfItems.size(); } -OFCondition DRTReferencedBeamSequenceInRTDoseModule::gotoFirstItem() +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::gotoFirstItem() { OFCondition result = EC_IllegalCall; if (!SequenceOfItems.empty()) @@ -256,19 +518,21 @@ OFCondition DRTReferencedBeamSequenceInRTDoseModule::gotoFirstItem() } -OFCondition DRTReferencedBeamSequenceInRTDoseModule::gotoNextItem() +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } -OFCondition DRTReferencedBeamSequenceInRTDoseModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) { OFCondition result = EC_IllegalCall; if (!SequenceOfItems.empty()) @@ -288,7 +552,7 @@ OFCondition DRTReferencedBeamSequenceInRTDoseModule::gotoItem(const size_t num, } -OFCondition DRTReferencedBeamSequenceInRTDoseModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const { OFCondition result = EC_IllegalCall; if (!SequenceOfItems.empty()) @@ -308,13 +572,13 @@ OFCondition DRTReferencedBeamSequenceInRTDoseModule::gotoItem(const size_t num, } -OFCondition DRTReferencedBeamSequenceInRTDoseModule::gotoItem(const size_t num) +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num) { return gotoItem(num, CurrentItem); } -OFCondition DRTReferencedBeamSequenceInRTDoseModule::getCurrentItem(Item *&item) const +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getCurrentItem(Item *&item) const { OFCondition result = EC_IllegalCall; if (CurrentItem != SequenceOfItems.end()) @@ -326,7 +590,7 @@ OFCondition DRTReferencedBeamSequenceInRTDoseModule::getCurrentItem(Item *&item) } -DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::getCurrentItem() +DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getCurrentItem() { if (CurrentItem != SequenceOfItems.end()) return **CurrentItem; @@ -335,7 +599,7 @@ DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDose } -const DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::getCurrentItem() const +const DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getCurrentItem() const { if (CurrentItem != SequenceOfItems.end()) return **CurrentItem; @@ -344,7 +608,7 @@ const DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceIn } -OFCondition DRTReferencedBeamSequenceInRTDoseModule::getItem(const size_t num, Item *&item) +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num, Item *&item) { OFListIterator(Item *) iterator; OFCondition result = gotoItem(num, iterator); @@ -354,7 +618,7 @@ OFCondition DRTReferencedBeamSequenceInRTDoseModule::getItem(const size_t num, I } -DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::getItem(const size_t num) +DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num) { OFListIterator(Item *) iterator; if (gotoItem(num, iterator).good()) @@ -364,7 +628,7 @@ DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDose } -const DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::getItem(const size_t num) const +const DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num) const { OFListConstIterator(Item *) iterator; if (gotoItem(num, iterator).good()) @@ -374,19 +638,19 @@ const DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceIn } -DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::operator[](const size_t num) +DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::operator[](const size_t num) { return getItem(num); } -const DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::operator[](const size_t num) const +const DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::operator[](const size_t num) const { return getItem(num); } -OFCondition DRTReferencedBeamSequenceInRTDoseModule::addItem(Item *&item) +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::addItem(Item *&item) { OFCondition result = EC_IllegalCall; if (!EmptyDefaultSequence) @@ -403,7 +667,7 @@ OFCondition DRTReferencedBeamSequenceInRTDoseModule::addItem(Item *&item) } -OFCondition DRTReferencedBeamSequenceInRTDoseModule::insertItem(const size_t pos, Item *&item) +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::insertItem(const size_t pos, Item *&item) { OFCondition result = EC_IllegalCall; if (!EmptyDefaultSequence) @@ -426,7 +690,7 @@ OFCondition DRTReferencedBeamSequenceInRTDoseModule::insertItem(const size_t pos } -OFCondition DRTReferencedBeamSequenceInRTDoseModule::removeItem(const size_t pos) +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::removeItem(const size_t pos) { OFCondition result = EC_IllegalCall; if (!EmptyDefaultSequence) @@ -444,10 +708,10 @@ OFCondition DRTReferencedBeamSequenceInRTDoseModule::removeItem(const size_t pos } -OFCondition DRTReferencedBeamSequenceInRTDoseModule::read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) { OFCondition result = EC_IllegalCall; if (!EmptyDefaultSequence) @@ -494,10 +758,10 @@ OFCondition DRTReferencedBeamSequenceInRTDoseModule::read(DcmItem &dataset, } -OFCondition DRTReferencedBeamSequenceInRTDoseModule::write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) +OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) { OFCondition result = EC_IllegalCall; if (!EmptyDefaultSequence) diff --git a/dcmrt/libsrc/drtrbs3.cc b/dcmrt/libsrc/drtrbs3.cc new file mode 100644 index 00000000..bf88762b --- /dev/null +++ b/dcmrt/libsrc/drtrbs3.cc @@ -0,0 +1,824 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTReferencedBeamSequenceInRTFractionSchemeModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtrbs3.h" + + +// --- item class --- + +DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + AlternateBeamDose(DCM_AlternateBeamDose), + AlternateBeamDoseType(DCM_AlternateBeamDoseType), + BeamDeliveryDurationLimit(DCM_BeamDeliveryDurationLimit), + BeamDose(DCM_BeamDose), + BeamDoseType(DCM_BeamDoseType), + BeamMeterset(DCM_BeamMeterset), + DoseCalibrationConditionsSequence(emptyDefaultItem /*emptyDefaultSequence*/), + DoseCalibrationConditionsVerifiedFlag(DCM_DoseCalibrationConditionsVerifiedFlag), + RadiationDeviceConfigurationAndCommissioningKeySequence(emptyDefaultItem /*emptyDefaultSequence*/), + ReferencedBeamNumber(DCM_ReferencedBeamNumber), + ReferencedDoseReferenceUID(DCM_ReferencedDoseReferenceUID) +{ +} + + +DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + AlternateBeamDose(copy.AlternateBeamDose), + AlternateBeamDoseType(copy.AlternateBeamDoseType), + BeamDeliveryDurationLimit(copy.BeamDeliveryDurationLimit), + BeamDose(copy.BeamDose), + BeamDoseType(copy.BeamDoseType), + BeamMeterset(copy.BeamMeterset), + DoseCalibrationConditionsSequence(copy.DoseCalibrationConditionsSequence), + DoseCalibrationConditionsVerifiedFlag(copy.DoseCalibrationConditionsVerifiedFlag), + RadiationDeviceConfigurationAndCommissioningKeySequence(copy.RadiationDeviceConfigurationAndCommissioningKeySequence), + ReferencedBeamNumber(copy.ReferencedBeamNumber), + ReferencedDoseReferenceUID(copy.ReferencedDoseReferenceUID) +{ +} + + +DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::~Item() +{ +} + + +DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + AlternateBeamDose = copy.AlternateBeamDose; + AlternateBeamDoseType = copy.AlternateBeamDoseType; + BeamDeliveryDurationLimit = copy.BeamDeliveryDurationLimit; + BeamDose = copy.BeamDose; + BeamDoseType = copy.BeamDoseType; + BeamMeterset = copy.BeamMeterset; + DoseCalibrationConditionsSequence = copy.DoseCalibrationConditionsSequence; + DoseCalibrationConditionsVerifiedFlag = copy.DoseCalibrationConditionsVerifiedFlag; + RadiationDeviceConfigurationAndCommissioningKeySequence = copy.RadiationDeviceConfigurationAndCommissioningKeySequence; + ReferencedBeamNumber = copy.ReferencedBeamNumber; + ReferencedDoseReferenceUID = copy.ReferencedDoseReferenceUID; + } + return *this; +} + + +void DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + ReferencedBeamNumber.clear(); + ReferencedDoseReferenceUID.clear(); + BeamDose.clear(); + BeamDoseType.clear(); + AlternateBeamDose.clear(); + AlternateBeamDoseType.clear(); + BeamMeterset.clear(); + BeamDeliveryDurationLimit.clear(); + DoseCalibrationConditionsVerifiedFlag.clear(); + DoseCalibrationConditionsSequence.clear(); + RadiationDeviceConfigurationAndCommissioningKeySequence.clear(); + } +} + + +OFBool DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::isEmpty() +{ + return ReferencedBeamNumber.isEmpty() && + ReferencedDoseReferenceUID.isEmpty() && + BeamDose.isEmpty() && + BeamDoseType.isEmpty() && + AlternateBeamDose.isEmpty() && + AlternateBeamDoseType.isEmpty() && + BeamMeterset.isEmpty() && + BeamDeliveryDurationLimit.isEmpty() && + DoseCalibrationConditionsVerifiedFlag.isEmpty() && + DoseCalibrationConditionsSequence.isEmpty() && + RadiationDeviceConfigurationAndCommissioningKeySequence.isEmpty(); +} + + +OFBool DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, ReferencedBeamNumber, "1", "1", "ReferencedBeamSequence"); + getAndCheckElementFromDataset(item, ReferencedDoseReferenceUID, "1", "3", "ReferencedBeamSequence"); + getAndCheckElementFromDataset(item, BeamDose, "1", "3", "ReferencedBeamSequence"); + getAndCheckElementFromDataset(item, BeamDoseType, "1", "1C", "ReferencedBeamSequence"); + getAndCheckElementFromDataset(item, AlternateBeamDose, "1", "3", "ReferencedBeamSequence"); + getAndCheckElementFromDataset(item, AlternateBeamDoseType, "1", "1C", "ReferencedBeamSequence"); + getAndCheckElementFromDataset(item, BeamMeterset, "1", "3", "ReferencedBeamSequence"); + getAndCheckElementFromDataset(item, BeamDeliveryDurationLimit, "1", "3", "ReferencedBeamSequence"); + getAndCheckElementFromDataset(item, DoseCalibrationConditionsVerifiedFlag, "1", "3", "ReferencedBeamSequence"); + DoseCalibrationConditionsSequence.read(item, "1-n", "1C", "ReferencedBeamSequence"); + RadiationDeviceConfigurationAndCommissioningKeySequence.read(item, "1-n", "1C", "ReferencedBeamSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmIntegerString(ReferencedBeamNumber), "1", "1", "ReferencedBeamSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedDoseReferenceUID), "1", "3", "ReferencedBeamSequence"); + addElementToDataset(result, item, new DcmDecimalString(BeamDose), "1", "3", "ReferencedBeamSequence"); + addElementToDataset(result, item, new DcmCodeString(BeamDoseType), "1", "1C", "ReferencedBeamSequence"); + addElementToDataset(result, item, new DcmDecimalString(AlternateBeamDose), "1", "3", "ReferencedBeamSequence"); + addElementToDataset(result, item, new DcmCodeString(AlternateBeamDoseType), "1", "1C", "ReferencedBeamSequence"); + addElementToDataset(result, item, new DcmDecimalString(BeamMeterset), "1", "3", "ReferencedBeamSequence"); + addElementToDataset(result, item, new DcmFloatingPointDouble(BeamDeliveryDurationLimit), "1", "3", "ReferencedBeamSequence"); + addElementToDataset(result, item, new DcmCodeString(DoseCalibrationConditionsVerifiedFlag), "1", "3", "ReferencedBeamSequence"); + if (result.good()) result = DoseCalibrationConditionsSequence.write(item, "1-n", "1C", "ReferencedBeamSequence"); + if (result.good()) result = RadiationDeviceConfigurationAndCommissioningKeySequence.write(item, "1-n", "1C", "ReferencedBeamSequence"); + } + return result; +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getAlternateBeamDose(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(AlternateBeamDose, value, pos); +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getAlternateBeamDose(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, AlternateBeamDose).getFloat64(value, pos); +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getAlternateBeamDoseType(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(AlternateBeamDoseType, value, pos); +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getBeamDeliveryDurationLimit(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointDouble &, BeamDeliveryDurationLimit).getFloat64(value, pos); +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getBeamDose(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(BeamDose, value, pos); +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getBeamDose(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, BeamDose).getFloat64(value, pos); +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getBeamDoseType(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(BeamDoseType, value, pos); +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getBeamMeterset(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(BeamMeterset, value, pos); +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getBeamMeterset(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, BeamMeterset).getFloat64(value, pos); +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getDoseCalibrationConditionsVerifiedFlag(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(DoseCalibrationConditionsVerifiedFlag, value, pos); +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getReferencedBeamNumber(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedBeamNumber, value, pos); +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getReferencedBeamNumber(Sint32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmIntegerString &, ReferencedBeamNumber).getSint32(value, pos); +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getReferencedDoseReferenceUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedDoseReferenceUID, value, pos); +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setAlternateBeamDose(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = AlternateBeamDose.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setAlternateBeamDoseType(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = AlternateBeamDoseType.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setBeamDeliveryDurationLimit(const Float64 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return BeamDeliveryDurationLimit.putFloat64(value, pos); +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setBeamDose(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = BeamDose.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setBeamDoseType(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = BeamDoseType.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setBeamMeterset(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = BeamMeterset.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setDoseCalibrationConditionsVerifiedFlag(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = DoseCalibrationConditionsVerifiedFlag.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setReferencedBeamNumber(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedBeamNumber.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setReferencedDoseReferenceUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedDoseReferenceUID.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTReferencedBeamSequenceInRTFractionSchemeModule::DRTReferencedBeamSequenceInRTFractionSchemeModule(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTReferencedBeamSequenceInRTFractionSchemeModule::DRTReferencedBeamSequenceInRTFractionSchemeModule(const DRTReferencedBeamSequenceInRTFractionSchemeModule ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTReferencedBeamSequenceInRTFractionSchemeModule &DRTReferencedBeamSequenceInRTFractionSchemeModule::operator=(const DRTReferencedBeamSequenceInRTFractionSchemeModule ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTReferencedBeamSequenceInRTFractionSchemeModule::~DRTReferencedBeamSequenceInRTFractionSchemeModule() +{ + clear(); +} + + +void DRTReferencedBeamSequenceInRTFractionSchemeModule::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTReferencedBeamSequenceInRTFractionSchemeModule::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTReferencedBeamSequenceInRTFractionSchemeModule::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTReferencedBeamSequenceInRTFractionSchemeModule::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_ReferencedBeamSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_ReferencedBeamSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedBeamSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtrbs4.cc b/dcmrt/libsrc/drtrbs4.cc deleted file mode 100644 index 2b7b6643..00000000 --- a/dcmrt/libsrc/drtrbs4.cc +++ /dev/null @@ -1,827 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2019, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Source file for class DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * Last modified on 2019-10-31 by Riesmeier - * - */ - - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/dcmrt/seq/drtrbs4.h" - - -// --- item class --- - -DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::Item(const OFBool emptyDefaultItem) - : EmptyDefaultItem(emptyDefaultItem), - AlternateBeamDose(DCM_AlternateBeamDose), - AlternateBeamDoseType(DCM_AlternateBeamDoseType), - BeamDeliveryDurationLimit(DCM_BeamDeliveryDurationLimit), - BeamDose(DCM_BeamDose), - BeamDoseSpecificationPoint(DCM_RETIRED_BeamDoseSpecificationPoint), - BeamDoseType(DCM_BeamDoseType), - BeamMeterset(DCM_BeamMeterset), - ReferencedBeamNumber(DCM_ReferencedBeamNumber), - ReferencedDoseReferenceUID(DCM_ReferencedDoseReferenceUID) -{ -} - - -DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::Item(const Item ©) - : EmptyDefaultItem(copy.EmptyDefaultItem), - AlternateBeamDose(copy.AlternateBeamDose), - AlternateBeamDoseType(copy.AlternateBeamDoseType), - BeamDeliveryDurationLimit(copy.BeamDeliveryDurationLimit), - BeamDose(copy.BeamDose), - BeamDoseSpecificationPoint(copy.BeamDoseSpecificationPoint), - BeamDoseType(copy.BeamDoseType), - BeamMeterset(copy.BeamMeterset), - ReferencedBeamNumber(copy.ReferencedBeamNumber), - ReferencedDoseReferenceUID(copy.ReferencedDoseReferenceUID) -{ -} - - -DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::~Item() -{ -} - - -DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::operator=(const Item ©) -{ - if (this != ©) - { - EmptyDefaultItem = copy.EmptyDefaultItem; - AlternateBeamDose = copy.AlternateBeamDose; - AlternateBeamDoseType = copy.AlternateBeamDoseType; - BeamDeliveryDurationLimit = copy.BeamDeliveryDurationLimit; - BeamDose = copy.BeamDose; - BeamDoseSpecificationPoint = copy.BeamDoseSpecificationPoint; - BeamDoseType = copy.BeamDoseType; - BeamMeterset = copy.BeamMeterset; - ReferencedBeamNumber = copy.ReferencedBeamNumber; - ReferencedDoseReferenceUID = copy.ReferencedDoseReferenceUID; - } - return *this; -} - - -void DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::clear() -{ - if (!EmptyDefaultItem) - { - /* clear all DICOM attributes */ - ReferencedBeamNumber.clear(); - BeamDoseSpecificationPoint.clear(); - ReferencedDoseReferenceUID.clear(); - BeamDose.clear(); - BeamDoseType.clear(); - AlternateBeamDose.clear(); - AlternateBeamDoseType.clear(); - BeamMeterset.clear(); - BeamDeliveryDurationLimit.clear(); - } -} - - -OFBool DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::isEmpty() -{ - return ReferencedBeamNumber.isEmpty() && - BeamDoseSpecificationPoint.isEmpty() && - ReferencedDoseReferenceUID.isEmpty() && - BeamDose.isEmpty() && - BeamDoseType.isEmpty() && - AlternateBeamDose.isEmpty() && - AlternateBeamDoseType.isEmpty() && - BeamMeterset.isEmpty() && - BeamDeliveryDurationLimit.isEmpty(); -} - - -OFBool DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::isValid() const -{ - return !EmptyDefaultItem; -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::read(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - /* re-initialize object */ - clear(); - getAndCheckElementFromDataset(item, ReferencedBeamNumber, "1", "1", "ReferencedBeamSequence"); - getAndCheckElementFromDataset(item, BeamDoseSpecificationPoint, "3", "3", "ReferencedBeamSequence"); - getAndCheckElementFromDataset(item, ReferencedDoseReferenceUID, "1", "3", "ReferencedBeamSequence"); - getAndCheckElementFromDataset(item, BeamDose, "1", "3", "ReferencedBeamSequence"); - getAndCheckElementFromDataset(item, BeamDoseType, "1", "1C", "ReferencedBeamSequence"); - getAndCheckElementFromDataset(item, AlternateBeamDose, "1", "3", "ReferencedBeamSequence"); - getAndCheckElementFromDataset(item, AlternateBeamDoseType, "1", "1C", "ReferencedBeamSequence"); - getAndCheckElementFromDataset(item, BeamMeterset, "1", "3", "ReferencedBeamSequence"); - getAndCheckElementFromDataset(item, BeamDeliveryDurationLimit, "1", "3", "ReferencedBeamSequence"); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::write(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = EC_Normal; - addElementToDataset(result, item, new DcmIntegerString(ReferencedBeamNumber), "1", "1", "ReferencedBeamSequence"); - addElementToDataset(result, item, new DcmDecimalString(BeamDoseSpecificationPoint), "3", "3", "ReferencedBeamSequence"); - addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedDoseReferenceUID), "1", "3", "ReferencedBeamSequence"); - addElementToDataset(result, item, new DcmDecimalString(BeamDose), "1", "3", "ReferencedBeamSequence"); - addElementToDataset(result, item, new DcmCodeString(BeamDoseType), "1", "1C", "ReferencedBeamSequence"); - addElementToDataset(result, item, new DcmDecimalString(AlternateBeamDose), "1", "3", "ReferencedBeamSequence"); - addElementToDataset(result, item, new DcmCodeString(AlternateBeamDoseType), "1", "1C", "ReferencedBeamSequence"); - addElementToDataset(result, item, new DcmDecimalString(BeamMeterset), "1", "3", "ReferencedBeamSequence"); - addElementToDataset(result, item, new DcmFloatingPointDouble(BeamDeliveryDurationLimit), "1", "3", "ReferencedBeamSequence"); - } - return result; -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getAlternateBeamDose(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(AlternateBeamDose, value, pos); -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getAlternateBeamDose(Float64 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, AlternateBeamDose).getFloat64(value, pos); -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getAlternateBeamDoseType(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(AlternateBeamDoseType, value, pos); -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getBeamDeliveryDurationLimit(Float64 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmFloatingPointDouble &, BeamDeliveryDurationLimit).getFloat64(value, pos); -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getBeamDose(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(BeamDose, value, pos); -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getBeamDose(Float64 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, BeamDose).getFloat64(value, pos); -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getBeamDoseSpecificationPoint(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(BeamDoseSpecificationPoint, value, pos); -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getBeamDoseSpecificationPoint(Float64 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, BeamDoseSpecificationPoint).getFloat64(value, pos); -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getBeamDoseSpecificationPoint(OFVector &value) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, BeamDoseSpecificationPoint).getFloat64Vector(value); -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getBeamDoseType(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(BeamDoseType, value, pos); -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getBeamMeterset(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(BeamMeterset, value, pos); -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getBeamMeterset(Float64 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, BeamMeterset).getFloat64(value, pos); -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getReferencedBeamNumber(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ReferencedBeamNumber, value, pos); -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getReferencedBeamNumber(Sint32 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmIntegerString &, ReferencedBeamNumber).getSint32(value, pos); -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getReferencedDoseReferenceUID(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ReferencedDoseReferenceUID, value, pos); -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setAlternateBeamDose(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = AlternateBeamDose.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setAlternateBeamDoseType(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = AlternateBeamDoseType.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setBeamDeliveryDurationLimit(const Float64 value, const unsigned long pos) -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return BeamDeliveryDurationLimit.putFloat64(value, pos); -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setBeamDose(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = BeamDose.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setBeamDoseSpecificationPoint(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmDecimalString::checkStringValue(value, "3") : EC_Normal; - if (result.good()) - result = BeamDoseSpecificationPoint.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setBeamDoseType(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = BeamDoseType.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setBeamMeterset(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = BeamMeterset.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setReferencedBeamNumber(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ReferencedBeamNumber.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setReferencedDoseReferenceUID(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ReferencedDoseReferenceUID.putOFStringArray(value); - } - return result; -} - - -// --- sequence class --- - -DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule(const OFBool emptyDefaultSequence) - : EmptyDefaultSequence(emptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - CurrentItem = SequenceOfItems.end(); -} - - -DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule(const DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule ©) - : EmptyDefaultSequence(copy.EmptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); -} - - -DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::operator=(const DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule ©) -{ - if (this != ©) - { - clear(); - EmptyDefaultSequence = copy.EmptyDefaultSequence; - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); - } - return *this; -} - - -DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::~DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule() -{ - clear(); -} - - -void DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::clear() -{ - if (!EmptyDefaultSequence) - { - CurrentItem = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* delete all items and free memory */ - while (CurrentItem != last) - { - delete (*CurrentItem); - CurrentItem = SequenceOfItems.erase(CurrentItem); - } - /* make sure that the list is empty */ - SequenceOfItems.clear(); - CurrentItem = SequenceOfItems.end(); - } -} - - -OFBool DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::isEmpty() -{ - return SequenceOfItems.empty(); -} - - -OFBool DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::isValid() const -{ - return !EmptyDefaultSequence; -} - - -size_t DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getNumberOfItems() const -{ - return SequenceOfItems.size(); -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::gotoFirstItem() -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - CurrentItem = SequenceOfItems.begin(); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::gotoNextItem() -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - ++CurrentItem; - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num) -{ - return gotoItem(num, CurrentItem); -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getCurrentItem(Item *&item) const -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - item = *CurrentItem; - result = EC_Normal; - } - return result; -} - - -DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getCurrentItem() -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -const DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getCurrentItem() const -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num, Item *&item) -{ - OFListIterator(Item *) iterator; - OFCondition result = gotoItem(num, iterator); - if (result.good()) - item = *iterator; - return result; -} - - -DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num) -{ - OFListIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -const DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num) const -{ - OFListConstIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::operator[](const size_t num) -{ - return getItem(num); -} - - -const DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::operator[](const size_t num) const -{ - return getItem(num); -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::addItem(Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.push_back(item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } - return result; -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::insertItem(const size_t pos, Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - result = gotoItem(pos, iterator); - if (result.good()) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.insert(iterator, 1, item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } else - result = addItem(item); - } - return result; -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::removeItem(const size_t pos) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - if (gotoItem(pos, iterator).good()) - { - delete *iterator; - iterator = SequenceOfItems.erase(iterator); - result = EC_Normal; - } else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - /* re-initialize object */ - clear(); - /* retrieve sequence element from dataset */ - DcmSequenceOfItems *sequence; - result = dataset.findAndGetSequence(DCM_ReferencedBeamSequence, sequence); - if (sequence != NULL) - { - if (checkElementValue(*sequence, card, type, result, moduleName)) - { - DcmStack stack; - OFBool first = OFTrue; - /* iterate over all sequence items */ - while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) - { - DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); - if (ditem != NULL) - { - Item *item = new Item(); - if (item != NULL) - { - result = item->read(*ditem); - if (result.good()) - { - /* append new item to the end of the list */ - SequenceOfItems.push_back(item); - first = OFFalse; - } - } else - result = EC_MemoryExhausted; - } else - result = EC_CorruptedData; - } - } - } else { - DcmSequenceOfItems element(DCM_ReferencedBeamSequence); - checkElementValue(element, card, type, result, moduleName); - } - } - return result; -} - - -OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - result = EC_MemoryExhausted; - DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedBeamSequence); - if (sequence != NULL) - { - result = EC_Normal; - /* an empty optional sequence is not written */ - if ((type == "2") || !SequenceOfItems.empty()) - { - OFListIterator(Item *) iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* iterate over all sequence items */ - while (result.good() && (iterator != last)) - { - DcmItem *item = new DcmItem(); - if (item != NULL) - { - /* append new item to the end of the sequence */ - result = sequence->append(item); - if (result.good()) - { - result = (*iterator)->write(*item); - ++iterator; - } else - delete item; - } else - result = EC_MemoryExhausted; - } - if (result.good()) - { - /* insert sequence element into the dataset */ - result = dataset.insert(sequence, OFTrue /*replaceOld*/); - } - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - if (result.good()) - { - /* forget reference to sequence object (avoid deletion below) */ - sequence = NULL; - } - } - else if (type == "1") - { - /* empty type 1 sequence not allowed */ - result = RT_EC_InvalidValue; - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - } - /* delete sequence (if not inserted into the dataset) */ - delete sequence; - } - } - return result; -} - - -// end of source file diff --git a/dcmrt/libsrc/drtrbs8.cc b/dcmrt/libsrc/drtrbs8.cc deleted file mode 100644 index 40b8757d..00000000 --- a/dcmrt/libsrc/drtrbs8.cc +++ /dev/null @@ -1,827 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2019, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Source file for class DRTReferencedBeamSequenceInRTFractionSchemeModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * Last modified on 2019-10-31 by Riesmeier - * - */ - - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/dcmrt/seq/drtrbs8.h" - - -// --- item class --- - -DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::Item(const OFBool emptyDefaultItem) - : EmptyDefaultItem(emptyDefaultItem), - AlternateBeamDose(DCM_AlternateBeamDose), - AlternateBeamDoseType(DCM_AlternateBeamDoseType), - BeamDeliveryDurationLimit(DCM_BeamDeliveryDurationLimit), - BeamDose(DCM_BeamDose), - BeamDoseSpecificationPoint(DCM_RETIRED_BeamDoseSpecificationPoint), - BeamDoseType(DCM_BeamDoseType), - BeamMeterset(DCM_BeamMeterset), - ReferencedBeamNumber(DCM_ReferencedBeamNumber), - ReferencedDoseReferenceUID(DCM_ReferencedDoseReferenceUID) -{ -} - - -DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::Item(const Item ©) - : EmptyDefaultItem(copy.EmptyDefaultItem), - AlternateBeamDose(copy.AlternateBeamDose), - AlternateBeamDoseType(copy.AlternateBeamDoseType), - BeamDeliveryDurationLimit(copy.BeamDeliveryDurationLimit), - BeamDose(copy.BeamDose), - BeamDoseSpecificationPoint(copy.BeamDoseSpecificationPoint), - BeamDoseType(copy.BeamDoseType), - BeamMeterset(copy.BeamMeterset), - ReferencedBeamNumber(copy.ReferencedBeamNumber), - ReferencedDoseReferenceUID(copy.ReferencedDoseReferenceUID) -{ -} - - -DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::~Item() -{ -} - - -DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::operator=(const Item ©) -{ - if (this != ©) - { - EmptyDefaultItem = copy.EmptyDefaultItem; - AlternateBeamDose = copy.AlternateBeamDose; - AlternateBeamDoseType = copy.AlternateBeamDoseType; - BeamDeliveryDurationLimit = copy.BeamDeliveryDurationLimit; - BeamDose = copy.BeamDose; - BeamDoseSpecificationPoint = copy.BeamDoseSpecificationPoint; - BeamDoseType = copy.BeamDoseType; - BeamMeterset = copy.BeamMeterset; - ReferencedBeamNumber = copy.ReferencedBeamNumber; - ReferencedDoseReferenceUID = copy.ReferencedDoseReferenceUID; - } - return *this; -} - - -void DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::clear() -{ - if (!EmptyDefaultItem) - { - /* clear all DICOM attributes */ - ReferencedBeamNumber.clear(); - BeamDoseSpecificationPoint.clear(); - ReferencedDoseReferenceUID.clear(); - BeamDose.clear(); - BeamDoseType.clear(); - AlternateBeamDose.clear(); - AlternateBeamDoseType.clear(); - BeamMeterset.clear(); - BeamDeliveryDurationLimit.clear(); - } -} - - -OFBool DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::isEmpty() -{ - return ReferencedBeamNumber.isEmpty() && - BeamDoseSpecificationPoint.isEmpty() && - ReferencedDoseReferenceUID.isEmpty() && - BeamDose.isEmpty() && - BeamDoseType.isEmpty() && - AlternateBeamDose.isEmpty() && - AlternateBeamDoseType.isEmpty() && - BeamMeterset.isEmpty() && - BeamDeliveryDurationLimit.isEmpty(); -} - - -OFBool DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::isValid() const -{ - return !EmptyDefaultItem; -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::read(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - /* re-initialize object */ - clear(); - getAndCheckElementFromDataset(item, ReferencedBeamNumber, "1", "1", "ReferencedBeamSequence"); - getAndCheckElementFromDataset(item, BeamDoseSpecificationPoint, "3", "3", "ReferencedBeamSequence"); - getAndCheckElementFromDataset(item, ReferencedDoseReferenceUID, "1", "3", "ReferencedBeamSequence"); - getAndCheckElementFromDataset(item, BeamDose, "1", "3", "ReferencedBeamSequence"); - getAndCheckElementFromDataset(item, BeamDoseType, "1", "1C", "ReferencedBeamSequence"); - getAndCheckElementFromDataset(item, AlternateBeamDose, "1", "3", "ReferencedBeamSequence"); - getAndCheckElementFromDataset(item, AlternateBeamDoseType, "1", "1C", "ReferencedBeamSequence"); - getAndCheckElementFromDataset(item, BeamMeterset, "1", "3", "ReferencedBeamSequence"); - getAndCheckElementFromDataset(item, BeamDeliveryDurationLimit, "1", "3", "ReferencedBeamSequence"); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::write(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = EC_Normal; - addElementToDataset(result, item, new DcmIntegerString(ReferencedBeamNumber), "1", "1", "ReferencedBeamSequence"); - addElementToDataset(result, item, new DcmDecimalString(BeamDoseSpecificationPoint), "3", "3", "ReferencedBeamSequence"); - addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedDoseReferenceUID), "1", "3", "ReferencedBeamSequence"); - addElementToDataset(result, item, new DcmDecimalString(BeamDose), "1", "3", "ReferencedBeamSequence"); - addElementToDataset(result, item, new DcmCodeString(BeamDoseType), "1", "1C", "ReferencedBeamSequence"); - addElementToDataset(result, item, new DcmDecimalString(AlternateBeamDose), "1", "3", "ReferencedBeamSequence"); - addElementToDataset(result, item, new DcmCodeString(AlternateBeamDoseType), "1", "1C", "ReferencedBeamSequence"); - addElementToDataset(result, item, new DcmDecimalString(BeamMeterset), "1", "3", "ReferencedBeamSequence"); - addElementToDataset(result, item, new DcmFloatingPointDouble(BeamDeliveryDurationLimit), "1", "3", "ReferencedBeamSequence"); - } - return result; -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getAlternateBeamDose(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(AlternateBeamDose, value, pos); -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getAlternateBeamDose(Float64 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, AlternateBeamDose).getFloat64(value, pos); -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getAlternateBeamDoseType(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(AlternateBeamDoseType, value, pos); -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getBeamDeliveryDurationLimit(Float64 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmFloatingPointDouble &, BeamDeliveryDurationLimit).getFloat64(value, pos); -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getBeamDose(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(BeamDose, value, pos); -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getBeamDose(Float64 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, BeamDose).getFloat64(value, pos); -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getBeamDoseSpecificationPoint(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(BeamDoseSpecificationPoint, value, pos); -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getBeamDoseSpecificationPoint(Float64 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, BeamDoseSpecificationPoint).getFloat64(value, pos); -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getBeamDoseSpecificationPoint(OFVector &value) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, BeamDoseSpecificationPoint).getFloat64Vector(value); -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getBeamDoseType(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(BeamDoseType, value, pos); -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getBeamMeterset(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(BeamMeterset, value, pos); -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getBeamMeterset(Float64 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, BeamMeterset).getFloat64(value, pos); -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getReferencedBeamNumber(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ReferencedBeamNumber, value, pos); -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getReferencedBeamNumber(Sint32 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmIntegerString &, ReferencedBeamNumber).getSint32(value, pos); -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getReferencedDoseReferenceUID(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ReferencedDoseReferenceUID, value, pos); -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setAlternateBeamDose(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = AlternateBeamDose.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setAlternateBeamDoseType(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = AlternateBeamDoseType.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setBeamDeliveryDurationLimit(const Float64 value, const unsigned long pos) -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return BeamDeliveryDurationLimit.putFloat64(value, pos); -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setBeamDose(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = BeamDose.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setBeamDoseSpecificationPoint(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmDecimalString::checkStringValue(value, "3") : EC_Normal; - if (result.good()) - result = BeamDoseSpecificationPoint.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setBeamDoseType(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = BeamDoseType.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setBeamMeterset(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = BeamMeterset.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setReferencedBeamNumber(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ReferencedBeamNumber.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setReferencedDoseReferenceUID(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ReferencedDoseReferenceUID.putOFStringArray(value); - } - return result; -} - - -// --- sequence class --- - -DRTReferencedBeamSequenceInRTFractionSchemeModule::DRTReferencedBeamSequenceInRTFractionSchemeModule(const OFBool emptyDefaultSequence) - : EmptyDefaultSequence(emptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - CurrentItem = SequenceOfItems.end(); -} - - -DRTReferencedBeamSequenceInRTFractionSchemeModule::DRTReferencedBeamSequenceInRTFractionSchemeModule(const DRTReferencedBeamSequenceInRTFractionSchemeModule ©) - : EmptyDefaultSequence(copy.EmptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); -} - - -DRTReferencedBeamSequenceInRTFractionSchemeModule &DRTReferencedBeamSequenceInRTFractionSchemeModule::operator=(const DRTReferencedBeamSequenceInRTFractionSchemeModule ©) -{ - if (this != ©) - { - clear(); - EmptyDefaultSequence = copy.EmptyDefaultSequence; - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); - } - return *this; -} - - -DRTReferencedBeamSequenceInRTFractionSchemeModule::~DRTReferencedBeamSequenceInRTFractionSchemeModule() -{ - clear(); -} - - -void DRTReferencedBeamSequenceInRTFractionSchemeModule::clear() -{ - if (!EmptyDefaultSequence) - { - CurrentItem = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* delete all items and free memory */ - while (CurrentItem != last) - { - delete (*CurrentItem); - CurrentItem = SequenceOfItems.erase(CurrentItem); - } - /* make sure that the list is empty */ - SequenceOfItems.clear(); - CurrentItem = SequenceOfItems.end(); - } -} - - -OFBool DRTReferencedBeamSequenceInRTFractionSchemeModule::isEmpty() -{ - return SequenceOfItems.empty(); -} - - -OFBool DRTReferencedBeamSequenceInRTFractionSchemeModule::isValid() const -{ - return !EmptyDefaultSequence; -} - - -size_t DRTReferencedBeamSequenceInRTFractionSchemeModule::getNumberOfItems() const -{ - return SequenceOfItems.size(); -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::gotoFirstItem() -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - CurrentItem = SequenceOfItems.begin(); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::gotoNextItem() -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - ++CurrentItem; - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::gotoItem(const size_t num) -{ - return gotoItem(num, CurrentItem); -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::getCurrentItem(Item *&item) const -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - item = *CurrentItem; - result = EC_Normal; - } - return result; -} - - -DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::getCurrentItem() -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -const DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::getCurrentItem() const -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::getItem(const size_t num, Item *&item) -{ - OFListIterator(Item *) iterator; - OFCondition result = gotoItem(num, iterator); - if (result.good()) - item = *iterator; - return result; -} - - -DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::getItem(const size_t num) -{ - OFListIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -const DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::getItem(const size_t num) const -{ - OFListConstIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::operator[](const size_t num) -{ - return getItem(num); -} - - -const DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::operator[](const size_t num) const -{ - return getItem(num); -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::addItem(Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.push_back(item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } - return result; -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::insertItem(const size_t pos, Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - result = gotoItem(pos, iterator); - if (result.good()) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.insert(iterator, 1, item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } else - result = addItem(item); - } - return result; -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::removeItem(const size_t pos) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - if (gotoItem(pos, iterator).good()) - { - delete *iterator; - iterator = SequenceOfItems.erase(iterator); - result = EC_Normal; - } else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - /* re-initialize object */ - clear(); - /* retrieve sequence element from dataset */ - DcmSequenceOfItems *sequence; - result = dataset.findAndGetSequence(DCM_ReferencedBeamSequence, sequence); - if (sequence != NULL) - { - if (checkElementValue(*sequence, card, type, result, moduleName)) - { - DcmStack stack; - OFBool first = OFTrue; - /* iterate over all sequence items */ - while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) - { - DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); - if (ditem != NULL) - { - Item *item = new Item(); - if (item != NULL) - { - result = item->read(*ditem); - if (result.good()) - { - /* append new item to the end of the list */ - SequenceOfItems.push_back(item); - first = OFFalse; - } - } else - result = EC_MemoryExhausted; - } else - result = EC_CorruptedData; - } - } - } else { - DcmSequenceOfItems element(DCM_ReferencedBeamSequence); - checkElementValue(element, card, type, result, moduleName); - } - } - return result; -} - - -OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - result = EC_MemoryExhausted; - DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedBeamSequence); - if (sequence != NULL) - { - result = EC_Normal; - /* an empty optional sequence is not written */ - if ((type == "2") || !SequenceOfItems.empty()) - { - OFListIterator(Item *) iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* iterate over all sequence items */ - while (result.good() && (iterator != last)) - { - DcmItem *item = new DcmItem(); - if (item != NULL) - { - /* append new item to the end of the sequence */ - result = sequence->append(item); - if (result.good()) - { - result = (*iterator)->write(*item); - ++iterator; - } else - delete item; - } else - result = EC_MemoryExhausted; - } - if (result.good()) - { - /* insert sequence element into the dataset */ - result = dataset.insert(sequence, OFTrue /*replaceOld*/); - } - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - if (result.good()) - { - /* forget reference to sequence object (avoid deletion below) */ - sequence = NULL; - } - } - else if (type == "1") - { - /* empty type 1 sequence not allowed */ - result = RT_EC_InvalidValue; - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - } - /* delete sequence (if not inserted into the dataset) */ - delete sequence; - } - } - return result; -} - - -// end of source file diff --git a/dcmrt/libsrc/drtrbss.cc b/dcmrt/libsrc/drtrbss.cc new file mode 100644 index 00000000..9542c721 --- /dev/null +++ b/dcmrt/libsrc/drtrbss.cc @@ -0,0 +1,571 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTRecordedBlockSlabSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtrbss.h" + + +// --- item class --- + +DRTRecordedBlockSlabSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + AccessoryCode(DCM_AccessoryCode), + BlockSlabNumber(DCM_BlockSlabNumber) +{ +} + + +DRTRecordedBlockSlabSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + AccessoryCode(copy.AccessoryCode), + BlockSlabNumber(copy.BlockSlabNumber) +{ +} + + +DRTRecordedBlockSlabSequence::Item::~Item() +{ +} + + +DRTRecordedBlockSlabSequence::Item &DRTRecordedBlockSlabSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + AccessoryCode = copy.AccessoryCode; + BlockSlabNumber = copy.BlockSlabNumber; + } + return *this; +} + + +void DRTRecordedBlockSlabSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + BlockSlabNumber.clear(); + AccessoryCode.clear(); + } +} + + +OFBool DRTRecordedBlockSlabSequence::Item::isEmpty() +{ + return BlockSlabNumber.isEmpty() && + AccessoryCode.isEmpty(); +} + + +OFBool DRTRecordedBlockSlabSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTRecordedBlockSlabSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, BlockSlabNumber, "1", "1", "RecordedBlockSlabSequence"); + getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "RecordedBlockSlabSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTRecordedBlockSlabSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmUnsignedShort(BlockSlabNumber), "1", "1", "RecordedBlockSlabSequence"); + addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "RecordedBlockSlabSequence"); + } + return result; +} + + +OFCondition DRTRecordedBlockSlabSequence::Item::getAccessoryCode(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(AccessoryCode, value, pos); +} + + +OFCondition DRTRecordedBlockSlabSequence::Item::getBlockSlabNumber(Uint16 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmUnsignedShort &, BlockSlabNumber).getUint16(value, pos); +} + + +OFCondition DRTRecordedBlockSlabSequence::Item::setAccessoryCode(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = AccessoryCode.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTRecordedBlockSlabSequence::Item::setBlockSlabNumber(const Uint16 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return BlockSlabNumber.putUint16(value, pos); +} + + +// --- sequence class --- + +DRTRecordedBlockSlabSequence::DRTRecordedBlockSlabSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTRecordedBlockSlabSequence::DRTRecordedBlockSlabSequence(const DRTRecordedBlockSlabSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTRecordedBlockSlabSequence &DRTRecordedBlockSlabSequence::operator=(const DRTRecordedBlockSlabSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTRecordedBlockSlabSequence::~DRTRecordedBlockSlabSequence() +{ + clear(); +} + + +void DRTRecordedBlockSlabSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTRecordedBlockSlabSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTRecordedBlockSlabSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTRecordedBlockSlabSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTRecordedBlockSlabSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTRecordedBlockSlabSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTRecordedBlockSlabSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTRecordedBlockSlabSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTRecordedBlockSlabSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTRecordedBlockSlabSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTRecordedBlockSlabSequence::Item &DRTRecordedBlockSlabSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTRecordedBlockSlabSequence::Item &DRTRecordedBlockSlabSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTRecordedBlockSlabSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTRecordedBlockSlabSequence::Item &DRTRecordedBlockSlabSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTRecordedBlockSlabSequence::Item &DRTRecordedBlockSlabSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTRecordedBlockSlabSequence::Item &DRTRecordedBlockSlabSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTRecordedBlockSlabSequence::Item &DRTRecordedBlockSlabSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTRecordedBlockSlabSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTRecordedBlockSlabSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTRecordedBlockSlabSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTRecordedBlockSlabSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_RecordedBlockSlabSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_RecordedBlockSlabSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTRecordedBlockSlabSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_RecordedBlockSlabSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtrcdrs.cc b/dcmrt/libsrc/drtrcdrs.cc index 1ba0ec0e..1f334194 100644 --- a/dcmrt/libsrc/drtrcdrs.cc +++ b/dcmrt/libsrc/drtrcdrs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTReferencedCalculatedDoseReferenceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -328,10 +328,12 @@ OFCondition DRTReferencedCalculatedDoseReferenceSequence::gotoFirstItem() OFCondition DRTReferencedCalculatedDoseReferenceSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrcos.cc b/dcmrt/libsrc/drtrcos.cc index 60dd5d9e..6f11065b 100644 --- a/dcmrt/libsrc/drtrcos.cc +++ b/dcmrt/libsrc/drtrcos.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTRecordedCompensatorSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -310,10 +310,12 @@ OFCondition DRTRecordedCompensatorSequence::gotoFirstItem() OFCondition DRTRecordedCompensatorSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrcps.cc b/dcmrt/libsrc/drtrcps.cc index 27460802..b7d54133 100644 --- a/dcmrt/libsrc/drtrcps.cc +++ b/dcmrt/libsrc/drtrcps.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTReferencedControlPointSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -290,10 +290,12 @@ OFCondition DRTReferencedControlPointSequence::gotoFirstItem() OFCondition DRTReferencedControlPointSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrcs.cc b/dcmrt/libsrc/drtrcs.cc index 80ac010f..5672f789 100644 --- a/dcmrt/libsrc/drtrcs.cc +++ b/dcmrt/libsrc/drtrcs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTROIContourSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -25,7 +25,8 @@ DRTROIContourSequence::Item::Item(const OFBool emptyDefaultItem) ROIDisplayColor(DCM_ROIDisplayColor), RecommendedDisplayCIELabValue(DCM_RecommendedDisplayCIELabValue), RecommendedDisplayGrayscaleValue(DCM_RecommendedDisplayGrayscaleValue), - ReferencedROINumber(DCM_ReferencedROINumber) + ReferencedROINumber(DCM_ReferencedROINumber), + SourcePixelPlanesCharacteristicsSequence(emptyDefaultItem /*emptyDefaultSequence*/) { } @@ -36,7 +37,8 @@ DRTROIContourSequence::Item::Item(const Item ©) ROIDisplayColor(copy.ROIDisplayColor), RecommendedDisplayCIELabValue(copy.RecommendedDisplayCIELabValue), RecommendedDisplayGrayscaleValue(copy.RecommendedDisplayGrayscaleValue), - ReferencedROINumber(copy.ReferencedROINumber) + ReferencedROINumber(copy.ReferencedROINumber), + SourcePixelPlanesCharacteristicsSequence(copy.SourcePixelPlanesCharacteristicsSequence) { } @@ -56,6 +58,7 @@ DRTROIContourSequence::Item &DRTROIContourSequence::Item::operator=(const Item & RecommendedDisplayCIELabValue = copy.RecommendedDisplayCIELabValue; RecommendedDisplayGrayscaleValue = copy.RecommendedDisplayGrayscaleValue; ReferencedROINumber = copy.ReferencedROINumber; + SourcePixelPlanesCharacteristicsSequence = copy.SourcePixelPlanesCharacteristicsSequence; } return *this; } @@ -70,6 +73,7 @@ void DRTROIContourSequence::Item::clear() ROIDisplayColor.clear(); RecommendedDisplayGrayscaleValue.clear(); RecommendedDisplayCIELabValue.clear(); + SourcePixelPlanesCharacteristicsSequence.clear(); ContourSequence.clear(); } } @@ -81,6 +85,7 @@ OFBool DRTROIContourSequence::Item::isEmpty() ROIDisplayColor.isEmpty() && RecommendedDisplayGrayscaleValue.isEmpty() && RecommendedDisplayCIELabValue.isEmpty() && + SourcePixelPlanesCharacteristicsSequence.isEmpty() && ContourSequence.isEmpty(); } @@ -102,6 +107,7 @@ OFCondition DRTROIContourSequence::Item::read(DcmItem &item) getAndCheckElementFromDataset(item, ROIDisplayColor, "3", "3", "ROIContourSequence"); getAndCheckElementFromDataset(item, RecommendedDisplayGrayscaleValue, "1", "3", "ROIContourSequence"); getAndCheckElementFromDataset(item, RecommendedDisplayCIELabValue, "3", "3", "ROIContourSequence"); + SourcePixelPlanesCharacteristicsSequence.read(item, "1-n", "3", "ROIContourSequence"); ContourSequence.read(item, "1-n", "3", "ROIContourSequence"); result = EC_Normal; } @@ -119,6 +125,7 @@ OFCondition DRTROIContourSequence::Item::write(DcmItem &item) addElementToDataset(result, item, new DcmIntegerString(ROIDisplayColor), "3", "3", "ROIContourSequence"); addElementToDataset(result, item, new DcmUnsignedShort(RecommendedDisplayGrayscaleValue), "1", "3", "ROIContourSequence"); addElementToDataset(result, item, new DcmUnsignedShort(RecommendedDisplayCIELabValue), "3", "3", "ROIContourSequence"); + if (result.good()) result = SourcePixelPlanesCharacteristicsSequence.write(item, "1-n", "3", "ROIContourSequence"); if (result.good()) result = ContourSequence.write(item, "1-n", "3", "ROIContourSequence"); } return result; @@ -347,10 +354,12 @@ OFCondition DRTROIContourSequence::gotoFirstItem() OFCondition DRTROIContourSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrdais.cc b/dcmrt/libsrc/drtrdais.cc new file mode 100644 index 00000000..ae1c2739 --- /dev/null +++ b/dcmrt/libsrc/drtrdais.cc @@ -0,0 +1,647 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTROIDerivationAlgorithmIdentificationSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtrdais.h" + + +// --- item class --- + +DRTROIDerivationAlgorithmIdentificationSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + AlgorithmFamilyCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), + AlgorithmName(DCM_AlgorithmName), + AlgorithmNameCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), + AlgorithmParameters(DCM_AlgorithmParameters), + AlgorithmSource(DCM_AlgorithmSource), + AlgorithmVersion(DCM_AlgorithmVersion) +{ +} + + +DRTROIDerivationAlgorithmIdentificationSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + AlgorithmFamilyCodeSequence(copy.AlgorithmFamilyCodeSequence), + AlgorithmName(copy.AlgorithmName), + AlgorithmNameCodeSequence(copy.AlgorithmNameCodeSequence), + AlgorithmParameters(copy.AlgorithmParameters), + AlgorithmSource(copy.AlgorithmSource), + AlgorithmVersion(copy.AlgorithmVersion) +{ +} + + +DRTROIDerivationAlgorithmIdentificationSequence::Item::~Item() +{ +} + + +DRTROIDerivationAlgorithmIdentificationSequence::Item &DRTROIDerivationAlgorithmIdentificationSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + AlgorithmFamilyCodeSequence = copy.AlgorithmFamilyCodeSequence; + AlgorithmName = copy.AlgorithmName; + AlgorithmNameCodeSequence = copy.AlgorithmNameCodeSequence; + AlgorithmParameters = copy.AlgorithmParameters; + AlgorithmSource = copy.AlgorithmSource; + AlgorithmVersion = copy.AlgorithmVersion; + } + return *this; +} + + +void DRTROIDerivationAlgorithmIdentificationSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + AlgorithmFamilyCodeSequence.clear(); + AlgorithmNameCodeSequence.clear(); + AlgorithmName.clear(); + AlgorithmVersion.clear(); + AlgorithmParameters.clear(); + AlgorithmSource.clear(); + } +} + + +OFBool DRTROIDerivationAlgorithmIdentificationSequence::Item::isEmpty() +{ + return AlgorithmFamilyCodeSequence.isEmpty() && + AlgorithmNameCodeSequence.isEmpty() && + AlgorithmName.isEmpty() && + AlgorithmVersion.isEmpty() && + AlgorithmParameters.isEmpty() && + AlgorithmSource.isEmpty(); +} + + +OFBool DRTROIDerivationAlgorithmIdentificationSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTROIDerivationAlgorithmIdentificationSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + AlgorithmFamilyCodeSequence.read(item, "1-n", "1", "ROIDerivationAlgorithmIdentificationSequence"); + AlgorithmNameCodeSequence.read(item, "1-n", "3", "ROIDerivationAlgorithmIdentificationSequence"); + getAndCheckElementFromDataset(item, AlgorithmName, "1", "1", "ROIDerivationAlgorithmIdentificationSequence"); + getAndCheckElementFromDataset(item, AlgorithmVersion, "1", "1", "ROIDerivationAlgorithmIdentificationSequence"); + getAndCheckElementFromDataset(item, AlgorithmParameters, "1", "3", "ROIDerivationAlgorithmIdentificationSequence"); + getAndCheckElementFromDataset(item, AlgorithmSource, "1", "3", "ROIDerivationAlgorithmIdentificationSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTROIDerivationAlgorithmIdentificationSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + if (result.good()) result = AlgorithmFamilyCodeSequence.write(item, "1-n", "1", "ROIDerivationAlgorithmIdentificationSequence"); + if (result.good()) result = AlgorithmNameCodeSequence.write(item, "1-n", "3", "ROIDerivationAlgorithmIdentificationSequence"); + addElementToDataset(result, item, new DcmLongString(AlgorithmName), "1", "1", "ROIDerivationAlgorithmIdentificationSequence"); + addElementToDataset(result, item, new DcmLongString(AlgorithmVersion), "1", "1", "ROIDerivationAlgorithmIdentificationSequence"); + addElementToDataset(result, item, new DcmLongText(AlgorithmParameters), "1", "3", "ROIDerivationAlgorithmIdentificationSequence"); + addElementToDataset(result, item, new DcmLongString(AlgorithmSource), "1", "3", "ROIDerivationAlgorithmIdentificationSequence"); + } + return result; +} + + +OFCondition DRTROIDerivationAlgorithmIdentificationSequence::Item::getAlgorithmName(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(AlgorithmName, value, pos); +} + + +OFCondition DRTROIDerivationAlgorithmIdentificationSequence::Item::getAlgorithmParameters(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(AlgorithmParameters, value, pos); +} + + +OFCondition DRTROIDerivationAlgorithmIdentificationSequence::Item::getAlgorithmSource(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(AlgorithmSource, value, pos); +} + + +OFCondition DRTROIDerivationAlgorithmIdentificationSequence::Item::getAlgorithmVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(AlgorithmVersion, value, pos); +} + + +OFCondition DRTROIDerivationAlgorithmIdentificationSequence::Item::setAlgorithmName(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = AlgorithmName.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTROIDerivationAlgorithmIdentificationSequence::Item::setAlgorithmParameters(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongText::checkStringValue(value) : EC_Normal; + if (result.good()) + result = AlgorithmParameters.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTROIDerivationAlgorithmIdentificationSequence::Item::setAlgorithmSource(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = AlgorithmSource.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTROIDerivationAlgorithmIdentificationSequence::Item::setAlgorithmVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = AlgorithmVersion.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTROIDerivationAlgorithmIdentificationSequence::DRTROIDerivationAlgorithmIdentificationSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTROIDerivationAlgorithmIdentificationSequence::DRTROIDerivationAlgorithmIdentificationSequence(const DRTROIDerivationAlgorithmIdentificationSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTROIDerivationAlgorithmIdentificationSequence &DRTROIDerivationAlgorithmIdentificationSequence::operator=(const DRTROIDerivationAlgorithmIdentificationSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTROIDerivationAlgorithmIdentificationSequence::~DRTROIDerivationAlgorithmIdentificationSequence() +{ + clear(); +} + + +void DRTROIDerivationAlgorithmIdentificationSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTROIDerivationAlgorithmIdentificationSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTROIDerivationAlgorithmIdentificationSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTROIDerivationAlgorithmIdentificationSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTROIDerivationAlgorithmIdentificationSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTROIDerivationAlgorithmIdentificationSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTROIDerivationAlgorithmIdentificationSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTROIDerivationAlgorithmIdentificationSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTROIDerivationAlgorithmIdentificationSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTROIDerivationAlgorithmIdentificationSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTROIDerivationAlgorithmIdentificationSequence::Item &DRTROIDerivationAlgorithmIdentificationSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTROIDerivationAlgorithmIdentificationSequence::Item &DRTROIDerivationAlgorithmIdentificationSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTROIDerivationAlgorithmIdentificationSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTROIDerivationAlgorithmIdentificationSequence::Item &DRTROIDerivationAlgorithmIdentificationSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTROIDerivationAlgorithmIdentificationSequence::Item &DRTROIDerivationAlgorithmIdentificationSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTROIDerivationAlgorithmIdentificationSequence::Item &DRTROIDerivationAlgorithmIdentificationSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTROIDerivationAlgorithmIdentificationSequence::Item &DRTROIDerivationAlgorithmIdentificationSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTROIDerivationAlgorithmIdentificationSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTROIDerivationAlgorithmIdentificationSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTROIDerivationAlgorithmIdentificationSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTROIDerivationAlgorithmIdentificationSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_ROIDerivationAlgorithmIdentificationSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_ROIDerivationAlgorithmIdentificationSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTROIDerivationAlgorithmIdentificationSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ROIDerivationAlgorithmIdentificationSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtrdcks.cc b/dcmrt/libsrc/drtrdcks.cc new file mode 100644 index 00000000..c9b8c1b5 --- /dev/null +++ b/dcmrt/libsrc/drtrdcks.cc @@ -0,0 +1,928 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTRadiationDeviceConfigurationAndCommissioningKeySequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtrdcks.h" + + +// --- item class --- + +DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + ConceptCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), + ConceptNameCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), + Date(DCM_Date), + DateTime(DCM_DateTime), + FloatingPointValue(DCM_FloatingPointValue), + MeasurementUnitsCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), + NumericValue(DCM_NumericValue), + ObservationDateTime(DCM_ObservationDateTime), + ObservationStartDateTime(DCM_ObservationStartDateTime), + PersonName(DCM_PersonName), + RationalDenominatorValue(DCM_RationalDenominatorValue), + RationalNumeratorValue(DCM_RationalNumeratorValue), + ReferencedSOPSequence(emptyDefaultItem /*emptyDefaultSequence*/), + TextValue(DCM_TextValue), + Time(DCM_Time), + UID(DCM_UID), + ValueType(DCM_ValueType) +{ +} + + +DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + ConceptCodeSequence(copy.ConceptCodeSequence), + ConceptNameCodeSequence(copy.ConceptNameCodeSequence), + Date(copy.Date), + DateTime(copy.DateTime), + FloatingPointValue(copy.FloatingPointValue), + MeasurementUnitsCodeSequence(copy.MeasurementUnitsCodeSequence), + NumericValue(copy.NumericValue), + ObservationDateTime(copy.ObservationDateTime), + ObservationStartDateTime(copy.ObservationStartDateTime), + PersonName(copy.PersonName), + RationalDenominatorValue(copy.RationalDenominatorValue), + RationalNumeratorValue(copy.RationalNumeratorValue), + ReferencedSOPSequence(copy.ReferencedSOPSequence), + TextValue(copy.TextValue), + Time(copy.Time), + UID(copy.UID), + ValueType(copy.ValueType) +{ +} + + +DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::~Item() +{ +} + + +DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item &DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + ConceptCodeSequence = copy.ConceptCodeSequence; + ConceptNameCodeSequence = copy.ConceptNameCodeSequence; + Date = copy.Date; + DateTime = copy.DateTime; + FloatingPointValue = copy.FloatingPointValue; + MeasurementUnitsCodeSequence = copy.MeasurementUnitsCodeSequence; + NumericValue = copy.NumericValue; + ObservationDateTime = copy.ObservationDateTime; + ObservationStartDateTime = copy.ObservationStartDateTime; + PersonName = copy.PersonName; + RationalDenominatorValue = copy.RationalDenominatorValue; + RationalNumeratorValue = copy.RationalNumeratorValue; + ReferencedSOPSequence = copy.ReferencedSOPSequence; + TextValue = copy.TextValue; + Time = copy.Time; + UID = copy.UID; + ValueType = copy.ValueType; + } + return *this; +} + + +void DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + ValueType.clear(); + ObservationDateTime.clear(); + ObservationStartDateTime.clear(); + ConceptNameCodeSequence.clear(); + DateTime.clear(); + Date.clear(); + Time.clear(); + PersonName.clear(); + UID.clear(); + TextValue.clear(); + ConceptCodeSequence.clear(); + NumericValue.clear(); + FloatingPointValue.clear(); + RationalNumeratorValue.clear(); + RationalDenominatorValue.clear(); + MeasurementUnitsCodeSequence.clear(); + ReferencedSOPSequence.clear(); + } +} + + +OFBool DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::isEmpty() +{ + return ValueType.isEmpty() && + ObservationDateTime.isEmpty() && + ObservationStartDateTime.isEmpty() && + ConceptNameCodeSequence.isEmpty() && + DateTime.isEmpty() && + Date.isEmpty() && + Time.isEmpty() && + PersonName.isEmpty() && + UID.isEmpty() && + TextValue.isEmpty() && + ConceptCodeSequence.isEmpty() && + NumericValue.isEmpty() && + FloatingPointValue.isEmpty() && + RationalNumeratorValue.isEmpty() && + RationalDenominatorValue.isEmpty() && + MeasurementUnitsCodeSequence.isEmpty() && + ReferencedSOPSequence.isEmpty(); +} + + +OFBool DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, ValueType, "1", "1", "RadiationDeviceConfigurationAndCommissioningKeySequence"); + getAndCheckElementFromDataset(item, ObservationDateTime, "1", "3", "RadiationDeviceConfigurationAndCommissioningKeySequence"); + getAndCheckElementFromDataset(item, ObservationStartDateTime, "1", "3", "RadiationDeviceConfigurationAndCommissioningKeySequence"); + ConceptNameCodeSequence.read(item, "1-n", "1", "RadiationDeviceConfigurationAndCommissioningKeySequence"); + getAndCheckElementFromDataset(item, DateTime, "1", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence"); + getAndCheckElementFromDataset(item, Date, "1", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence"); + getAndCheckElementFromDataset(item, Time, "1", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence"); + getAndCheckElementFromDataset(item, PersonName, "1", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence"); + getAndCheckElementFromDataset(item, UID, "1", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence"); + getAndCheckElementFromDataset(item, TextValue, "1", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence"); + ConceptCodeSequence.read(item, "1-n", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence"); + getAndCheckElementFromDataset(item, NumericValue, "1-n", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence"); + getAndCheckElementFromDataset(item, FloatingPointValue, "1-n", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence"); + getAndCheckElementFromDataset(item, RationalNumeratorValue, "1-n", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence"); + getAndCheckElementFromDataset(item, RationalDenominatorValue, "1-n", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence"); + MeasurementUnitsCodeSequence.read(item, "1-n", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence"); + ReferencedSOPSequence.read(item, "1-n", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmCodeString(ValueType), "1", "1", "RadiationDeviceConfigurationAndCommissioningKeySequence"); + addElementToDataset(result, item, new DcmDateTime(ObservationDateTime), "1", "3", "RadiationDeviceConfigurationAndCommissioningKeySequence"); + addElementToDataset(result, item, new DcmDateTime(ObservationStartDateTime), "1", "3", "RadiationDeviceConfigurationAndCommissioningKeySequence"); + if (result.good()) result = ConceptNameCodeSequence.write(item, "1-n", "1", "RadiationDeviceConfigurationAndCommissioningKeySequence"); + addElementToDataset(result, item, new DcmDateTime(DateTime), "1", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence"); + addElementToDataset(result, item, new DcmDate(Date), "1", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence"); + addElementToDataset(result, item, new DcmTime(Time), "1", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence"); + addElementToDataset(result, item, new DcmPersonName(PersonName), "1", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(UID), "1", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence"); + addElementToDataset(result, item, new DcmUnlimitedText(TextValue), "1", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence"); + if (result.good()) result = ConceptCodeSequence.write(item, "1-n", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence"); + addElementToDataset(result, item, new DcmDecimalString(NumericValue), "1-n", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence"); + addElementToDataset(result, item, new DcmFloatingPointDouble(FloatingPointValue), "1-n", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence"); + addElementToDataset(result, item, new DcmSignedLong(RationalNumeratorValue), "1-n", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence"); + addElementToDataset(result, item, new DcmUnsignedLong(RationalDenominatorValue), "1-n", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence"); + if (result.good()) result = MeasurementUnitsCodeSequence.write(item, "1-n", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence"); + if (result.good()) result = ReferencedSOPSequence.write(item, "1-n", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence"); + } + return result; +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::getDate(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(Date, value, pos); +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::getDateTime(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(DateTime, value, pos); +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::getFloatingPointValue(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointDouble &, FloatingPointValue).getFloat64(value, pos); +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::getNumericValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(NumericValue, value, pos); +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::getNumericValue(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, NumericValue).getFloat64(value, pos); +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::getNumericValue(OFVector &value) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, NumericValue).getFloat64Vector(value); +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::getObservationDateTime(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ObservationDateTime, value, pos); +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::getObservationStartDateTime(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ObservationStartDateTime, value, pos); +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::getPersonName(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(PersonName, value, pos); +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::getRationalDenominatorValue(Uint32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmUnsignedLong &, RationalDenominatorValue).getUint32(value, pos); +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::getRationalNumeratorValue(Sint32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmSignedLong &, RationalNumeratorValue).getSint32(value, pos); +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::getTextValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(TextValue, value, pos); +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::getTime(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(Time, value, pos); +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::getUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(UID, value, pos); +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::getValueType(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ValueType, value, pos); +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::setDate(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDate::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = Date.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::setDateTime(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = DateTime.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::setFloatingPointValue(const Float64 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return FloatingPointValue.putFloat64(value, pos); +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::setNumericValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDecimalString::checkStringValue(value, "1-n") : EC_Normal; + if (result.good()) + result = NumericValue.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::setObservationDateTime(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ObservationDateTime.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::setObservationStartDateTime(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ObservationStartDateTime.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::setPersonName(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmPersonName::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = PersonName.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::setRationalDenominatorValue(const Uint32 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return RationalDenominatorValue.putUint32(value, pos); +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::setRationalNumeratorValue(const Sint32 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return RationalNumeratorValue.putSint32(value, pos); +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::setTextValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUnlimitedText::checkStringValue(value) : EC_Normal; + if (result.good()) + result = TextValue.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::setTime(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = Time.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::setUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = UID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::setValueType(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ValueType.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTRadiationDeviceConfigurationAndCommissioningKeySequence::DRTRadiationDeviceConfigurationAndCommissioningKeySequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTRadiationDeviceConfigurationAndCommissioningKeySequence::DRTRadiationDeviceConfigurationAndCommissioningKeySequence(const DRTRadiationDeviceConfigurationAndCommissioningKeySequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTRadiationDeviceConfigurationAndCommissioningKeySequence &DRTRadiationDeviceConfigurationAndCommissioningKeySequence::operator=(const DRTRadiationDeviceConfigurationAndCommissioningKeySequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTRadiationDeviceConfigurationAndCommissioningKeySequence::~DRTRadiationDeviceConfigurationAndCommissioningKeySequence() +{ + clear(); +} + + +void DRTRadiationDeviceConfigurationAndCommissioningKeySequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTRadiationDeviceConfigurationAndCommissioningKeySequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTRadiationDeviceConfigurationAndCommissioningKeySequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTRadiationDeviceConfigurationAndCommissioningKeySequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item &DRTRadiationDeviceConfigurationAndCommissioningKeySequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item &DRTRadiationDeviceConfigurationAndCommissioningKeySequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item &DRTRadiationDeviceConfigurationAndCommissioningKeySequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item &DRTRadiationDeviceConfigurationAndCommissioningKeySequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item &DRTRadiationDeviceConfigurationAndCommissioningKeySequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item &DRTRadiationDeviceConfigurationAndCommissioningKeySequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_RadiationDeviceConfigurationAndCommissioningKeySequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_RadiationDeviceConfigurationAndCommissioningKeySequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_RadiationDeviceConfigurationAndCommissioningKeySequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtrdps.cc b/dcmrt/libsrc/drtrdps.cc new file mode 100644 index 00000000..164b58a2 --- /dev/null +++ b/dcmrt/libsrc/drtrdps.cc @@ -0,0 +1,625 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTReferencedDefinedProtocolSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtrdps.h" + + +// --- item class --- + +DRTReferencedDefinedProtocolSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + ReferencedSOPClassUID(DCM_ReferencedSOPClassUID), + ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID), + SourceAcquisitionProtocolElementNumber(DCM_SourceAcquisitionProtocolElementNumber), + SourceReconstructionProtocolElementNumber(DCM_SourceReconstructionProtocolElementNumber) +{ +} + + +DRTReferencedDefinedProtocolSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + ReferencedSOPClassUID(copy.ReferencedSOPClassUID), + ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID), + SourceAcquisitionProtocolElementNumber(copy.SourceAcquisitionProtocolElementNumber), + SourceReconstructionProtocolElementNumber(copy.SourceReconstructionProtocolElementNumber) +{ +} + + +DRTReferencedDefinedProtocolSequence::Item::~Item() +{ +} + + +DRTReferencedDefinedProtocolSequence::Item &DRTReferencedDefinedProtocolSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + ReferencedSOPClassUID = copy.ReferencedSOPClassUID; + ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID; + SourceAcquisitionProtocolElementNumber = copy.SourceAcquisitionProtocolElementNumber; + SourceReconstructionProtocolElementNumber = copy.SourceReconstructionProtocolElementNumber; + } + return *this; +} + + +void DRTReferencedDefinedProtocolSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + ReferencedSOPClassUID.clear(); + ReferencedSOPInstanceUID.clear(); + SourceAcquisitionProtocolElementNumber.clear(); + SourceReconstructionProtocolElementNumber.clear(); + } +} + + +OFBool DRTReferencedDefinedProtocolSequence::Item::isEmpty() +{ + return ReferencedSOPClassUID.isEmpty() && + ReferencedSOPInstanceUID.isEmpty() && + SourceAcquisitionProtocolElementNumber.isEmpty() && + SourceReconstructionProtocolElementNumber.isEmpty(); +} + + +OFBool DRTReferencedDefinedProtocolSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTReferencedDefinedProtocolSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedDefinedProtocolSequence"); + getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedDefinedProtocolSequence"); + getAndCheckElementFromDataset(item, SourceAcquisitionProtocolElementNumber, "1-n", "3", "ReferencedDefinedProtocolSequence"); + getAndCheckElementFromDataset(item, SourceReconstructionProtocolElementNumber, "1-n", "3", "ReferencedDefinedProtocolSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReferencedDefinedProtocolSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedDefinedProtocolSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedDefinedProtocolSequence"); + addElementToDataset(result, item, new DcmUnsignedShort(SourceAcquisitionProtocolElementNumber), "1-n", "3", "ReferencedDefinedProtocolSequence"); + addElementToDataset(result, item, new DcmUnsignedShort(SourceReconstructionProtocolElementNumber), "1-n", "3", "ReferencedDefinedProtocolSequence"); + } + return result; +} + + +OFCondition DRTReferencedDefinedProtocolSequence::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedSOPClassUID, value, pos); +} + + +OFCondition DRTReferencedDefinedProtocolSequence::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos); +} + + +OFCondition DRTReferencedDefinedProtocolSequence::Item::getSourceAcquisitionProtocolElementNumber(Uint16 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmUnsignedShort &, SourceAcquisitionProtocolElementNumber).getUint16(value, pos); +} + + +OFCondition DRTReferencedDefinedProtocolSequence::Item::getSourceReconstructionProtocolElementNumber(Uint16 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmUnsignedShort &, SourceReconstructionProtocolElementNumber).getUint16(value, pos); +} + + +OFCondition DRTReferencedDefinedProtocolSequence::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedSOPClassUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedDefinedProtocolSequence::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedSOPInstanceUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedDefinedProtocolSequence::Item::setSourceAcquisitionProtocolElementNumber(const Uint16 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return SourceAcquisitionProtocolElementNumber.putUint16(value, pos); +} + + +OFCondition DRTReferencedDefinedProtocolSequence::Item::setSourceReconstructionProtocolElementNumber(const Uint16 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return SourceReconstructionProtocolElementNumber.putUint16(value, pos); +} + + +// --- sequence class --- + +DRTReferencedDefinedProtocolSequence::DRTReferencedDefinedProtocolSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTReferencedDefinedProtocolSequence::DRTReferencedDefinedProtocolSequence(const DRTReferencedDefinedProtocolSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTReferencedDefinedProtocolSequence &DRTReferencedDefinedProtocolSequence::operator=(const DRTReferencedDefinedProtocolSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTReferencedDefinedProtocolSequence::~DRTReferencedDefinedProtocolSequence() +{ + clear(); +} + + +void DRTReferencedDefinedProtocolSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTReferencedDefinedProtocolSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTReferencedDefinedProtocolSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTReferencedDefinedProtocolSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTReferencedDefinedProtocolSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReferencedDefinedProtocolSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTReferencedDefinedProtocolSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedDefinedProtocolSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedDefinedProtocolSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTReferencedDefinedProtocolSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTReferencedDefinedProtocolSequence::Item &DRTReferencedDefinedProtocolSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTReferencedDefinedProtocolSequence::Item &DRTReferencedDefinedProtocolSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTReferencedDefinedProtocolSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTReferencedDefinedProtocolSequence::Item &DRTReferencedDefinedProtocolSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTReferencedDefinedProtocolSequence::Item &DRTReferencedDefinedProtocolSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTReferencedDefinedProtocolSequence::Item &DRTReferencedDefinedProtocolSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTReferencedDefinedProtocolSequence::Item &DRTReferencedDefinedProtocolSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTReferencedDefinedProtocolSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTReferencedDefinedProtocolSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTReferencedDefinedProtocolSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedDefinedProtocolSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_ReferencedDefinedProtocolSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_ReferencedDefinedProtocolSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTReferencedDefinedProtocolSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedDefinedProtocolSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtrdros.cc b/dcmrt/libsrc/drtrdros.cc deleted file mode 100644 index 34a99d9a..00000000 --- a/dcmrt/libsrc/drtrdros.cc +++ /dev/null @@ -1,620 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Source file for class DRTRTDoseROISequence - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/dcmrt/seq/drtrdros.h" - - -// --- item class --- - -DRTRTDoseROISequence::Item::Item(const OFBool emptyDefaultItem) - : EmptyDefaultItem(emptyDefaultItem), - DoseUnits(DCM_DoseUnits), - DoseValue(DCM_DoseValue), - ReferencedROINumber(DCM_ReferencedROINumber) -{ -} - - -DRTRTDoseROISequence::Item::Item(const Item ©) - : EmptyDefaultItem(copy.EmptyDefaultItem), - DoseUnits(copy.DoseUnits), - DoseValue(copy.DoseValue), - ReferencedROINumber(copy.ReferencedROINumber) -{ -} - - -DRTRTDoseROISequence::Item::~Item() -{ -} - - -DRTRTDoseROISequence::Item &DRTRTDoseROISequence::Item::operator=(const Item ©) -{ - if (this != ©) - { - EmptyDefaultItem = copy.EmptyDefaultItem; - DoseUnits = copy.DoseUnits; - DoseValue = copy.DoseValue; - ReferencedROINumber = copy.ReferencedROINumber; - } - return *this; -} - - -void DRTRTDoseROISequence::Item::clear() -{ - if (!EmptyDefaultItem) - { - /* clear all DICOM attributes */ - ReferencedROINumber.clear(); - DoseUnits.clear(); - DoseValue.clear(); - } -} - - -OFBool DRTRTDoseROISequence::Item::isEmpty() -{ - return ReferencedROINumber.isEmpty() && - DoseUnits.isEmpty() && - DoseValue.isEmpty(); -} - - -OFBool DRTRTDoseROISequence::Item::isValid() const -{ - return !EmptyDefaultItem; -} - - -OFCondition DRTRTDoseROISequence::Item::read(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - /* re-initialize object */ - clear(); - getAndCheckElementFromDataset(item, ReferencedROINumber, "1", "1", "RTDoseROISequence"); - getAndCheckElementFromDataset(item, DoseUnits, "1", "1", "RTDoseROISequence"); - getAndCheckElementFromDataset(item, DoseValue, "1", "1", "RTDoseROISequence"); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTRTDoseROISequence::Item::write(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = EC_Normal; - addElementToDataset(result, item, new DcmIntegerString(ReferencedROINumber), "1", "1", "RTDoseROISequence"); - addElementToDataset(result, item, new DcmCodeString(DoseUnits), "1", "1", "RTDoseROISequence"); - addElementToDataset(result, item, new DcmDecimalString(DoseValue), "1", "1", "RTDoseROISequence"); - } - return result; -} - - -OFCondition DRTRTDoseROISequence::Item::getDoseUnits(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(DoseUnits, value, pos); -} - - -OFCondition DRTRTDoseROISequence::Item::getDoseValue(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(DoseValue, value, pos); -} - - -OFCondition DRTRTDoseROISequence::Item::getDoseValue(Float64 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, DoseValue).getFloat64(value, pos); -} - - -OFCondition DRTRTDoseROISequence::Item::getReferencedROINumber(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ReferencedROINumber, value, pos); -} - - -OFCondition DRTRTDoseROISequence::Item::getReferencedROINumber(Sint32 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmIntegerString &, ReferencedROINumber).getSint32(value, pos); -} - - -OFCondition DRTRTDoseROISequence::Item::setDoseUnits(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = DoseUnits.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTRTDoseROISequence::Item::setDoseValue(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = DoseValue.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTRTDoseROISequence::Item::setReferencedROINumber(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ReferencedROINumber.putOFStringArray(value); - } - return result; -} - - -// --- sequence class --- - -DRTRTDoseROISequence::DRTRTDoseROISequence(const OFBool emptyDefaultSequence) - : EmptyDefaultSequence(emptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - CurrentItem = SequenceOfItems.end(); -} - - -DRTRTDoseROISequence::DRTRTDoseROISequence(const DRTRTDoseROISequence ©) - : EmptyDefaultSequence(copy.EmptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); -} - - -DRTRTDoseROISequence &DRTRTDoseROISequence::operator=(const DRTRTDoseROISequence ©) -{ - if (this != ©) - { - clear(); - EmptyDefaultSequence = copy.EmptyDefaultSequence; - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); - } - return *this; -} - - -DRTRTDoseROISequence::~DRTRTDoseROISequence() -{ - clear(); -} - - -void DRTRTDoseROISequence::clear() -{ - if (!EmptyDefaultSequence) - { - CurrentItem = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* delete all items and free memory */ - while (CurrentItem != last) - { - delete (*CurrentItem); - CurrentItem = SequenceOfItems.erase(CurrentItem); - } - /* make sure that the list is empty */ - SequenceOfItems.clear(); - CurrentItem = SequenceOfItems.end(); - } -} - - -OFBool DRTRTDoseROISequence::isEmpty() -{ - return SequenceOfItems.empty(); -} - - -OFBool DRTRTDoseROISequence::isValid() const -{ - return !EmptyDefaultSequence; -} - - -size_t DRTRTDoseROISequence::getNumberOfItems() const -{ - return SequenceOfItems.size(); -} - - -OFCondition DRTRTDoseROISequence::gotoFirstItem() -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - CurrentItem = SequenceOfItems.begin(); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTRTDoseROISequence::gotoNextItem() -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - ++CurrentItem; - result = EC_Normal; - } - return result; -} - - -OFCondition DRTRTDoseROISequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTRTDoseROISequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTRTDoseROISequence::gotoItem(const size_t num) -{ - return gotoItem(num, CurrentItem); -} - - -OFCondition DRTRTDoseROISequence::getCurrentItem(Item *&item) const -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - item = *CurrentItem; - result = EC_Normal; - } - return result; -} - - -DRTRTDoseROISequence::Item &DRTRTDoseROISequence::getCurrentItem() -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -const DRTRTDoseROISequence::Item &DRTRTDoseROISequence::getCurrentItem() const -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -OFCondition DRTRTDoseROISequence::getItem(const size_t num, Item *&item) -{ - OFListIterator(Item *) iterator; - OFCondition result = gotoItem(num, iterator); - if (result.good()) - item = *iterator; - return result; -} - - -DRTRTDoseROISequence::Item &DRTRTDoseROISequence::getItem(const size_t num) -{ - OFListIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -const DRTRTDoseROISequence::Item &DRTRTDoseROISequence::getItem(const size_t num) const -{ - OFListConstIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -DRTRTDoseROISequence::Item &DRTRTDoseROISequence::operator[](const size_t num) -{ - return getItem(num); -} - - -const DRTRTDoseROISequence::Item &DRTRTDoseROISequence::operator[](const size_t num) const -{ - return getItem(num); -} - - -OFCondition DRTRTDoseROISequence::addItem(Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.push_back(item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } - return result; -} - - -OFCondition DRTRTDoseROISequence::insertItem(const size_t pos, Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - result = gotoItem(pos, iterator); - if (result.good()) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.insert(iterator, 1, item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } else - result = addItem(item); - } - return result; -} - - -OFCondition DRTRTDoseROISequence::removeItem(const size_t pos) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - if (gotoItem(pos, iterator).good()) - { - delete *iterator; - iterator = SequenceOfItems.erase(iterator); - result = EC_Normal; - } else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTRTDoseROISequence::read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - /* re-initialize object */ - clear(); - /* retrieve sequence element from dataset */ - DcmSequenceOfItems *sequence; - result = dataset.findAndGetSequence(DCM_RTDoseROISequence, sequence); - if (sequence != NULL) - { - if (checkElementValue(*sequence, card, type, result, moduleName)) - { - DcmStack stack; - OFBool first = OFTrue; - /* iterate over all sequence items */ - while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) - { - DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); - if (ditem != NULL) - { - Item *item = new Item(); - if (item != NULL) - { - result = item->read(*ditem); - if (result.good()) - { - /* append new item to the end of the list */ - SequenceOfItems.push_back(item); - first = OFFalse; - } - } else - result = EC_MemoryExhausted; - } else - result = EC_CorruptedData; - } - } - } else { - DcmSequenceOfItems element(DCM_RTDoseROISequence); - checkElementValue(element, card, type, result, moduleName); - } - } - return result; -} - - -OFCondition DRTRTDoseROISequence::write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - result = EC_MemoryExhausted; - DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_RTDoseROISequence); - if (sequence != NULL) - { - result = EC_Normal; - /* an empty optional sequence is not written */ - if ((type == "2") || !SequenceOfItems.empty()) - { - OFListIterator(Item *) iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* iterate over all sequence items */ - while (result.good() && (iterator != last)) - { - DcmItem *item = new DcmItem(); - if (item != NULL) - { - /* append new item to the end of the sequence */ - result = sequence->append(item); - if (result.good()) - { - result = (*iterator)->write(*item); - ++iterator; - } else - delete item; - } else - result = EC_MemoryExhausted; - } - if (result.good()) - { - /* insert sequence element into the dataset */ - result = dataset.insert(sequence, OFTrue /*replaceOld*/); - } - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - if (result.good()) - { - /* forget reference to sequence object (avoid deletion below) */ - sequence = NULL; - } - } - else if (type == "1") - { - /* empty type 1 sequence not allowed */ - result = RT_EC_InvalidValue; - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - } - /* delete sequence (if not inserted into the dataset) */ - delete sequence; - } - } - return result; -} - - -// end of source file diff --git a/dcmrt/libsrc/drtrdrs1.cc b/dcmrt/libsrc/drtrdrs1.cc index 8d5e3181..5c0034f7 100644 --- a/dcmrt/libsrc/drtrdrs1.cc +++ b/dcmrt/libsrc/drtrdrs1.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTReferencedDoseReferenceSequenceInRTBeamsModule * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -288,10 +288,12 @@ OFCondition DRTReferencedDoseReferenceSequenceInRTBeamsModule::gotoFirstItem() OFCondition DRTReferencedDoseReferenceSequenceInRTBeamsModule::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrdrs2.cc b/dcmrt/libsrc/drtrdrs2.cc new file mode 100644 index 00000000..ce10ed81 --- /dev/null +++ b/dcmrt/libsrc/drtrdrs2.cc @@ -0,0 +1,593 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTReferencedDoseReferenceSequenceInRTIonBeamsModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtrdrs2.h" + + +// --- item class --- + +DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + CumulativeDoseReferenceCoefficient(DCM_CumulativeDoseReferenceCoefficient), + ReferencedDoseReferenceNumber(DCM_ReferencedDoseReferenceNumber) +{ +} + + +DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + CumulativeDoseReferenceCoefficient(copy.CumulativeDoseReferenceCoefficient), + ReferencedDoseReferenceNumber(copy.ReferencedDoseReferenceNumber) +{ +} + + +DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::~Item() +{ +} + + +DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + CumulativeDoseReferenceCoefficient = copy.CumulativeDoseReferenceCoefficient; + ReferencedDoseReferenceNumber = copy.ReferencedDoseReferenceNumber; + } + return *this; +} + + +void DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + ReferencedDoseReferenceNumber.clear(); + CumulativeDoseReferenceCoefficient.clear(); + } +} + + +OFBool DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::isEmpty() +{ + return ReferencedDoseReferenceNumber.isEmpty() && + CumulativeDoseReferenceCoefficient.isEmpty(); +} + + +OFBool DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, ReferencedDoseReferenceNumber, "1", "1", "ReferencedDoseReferenceSequence"); + getAndCheckElementFromDataset(item, CumulativeDoseReferenceCoefficient, "1", "2", "ReferencedDoseReferenceSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmIntegerString(ReferencedDoseReferenceNumber), "1", "1", "ReferencedDoseReferenceSequence"); + addElementToDataset(result, item, new DcmDecimalString(CumulativeDoseReferenceCoefficient), "1", "2", "ReferencedDoseReferenceSequence"); + } + return result; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::getCumulativeDoseReferenceCoefficient(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CumulativeDoseReferenceCoefficient, value, pos); +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::getCumulativeDoseReferenceCoefficient(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, CumulativeDoseReferenceCoefficient).getFloat64(value, pos); +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::getReferencedDoseReferenceNumber(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedDoseReferenceNumber, value, pos); +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::getReferencedDoseReferenceNumber(Sint32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmIntegerString &, ReferencedDoseReferenceNumber).getSint32(value, pos); +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::setCumulativeDoseReferenceCoefficient(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CumulativeDoseReferenceCoefficient.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::setReferencedDoseReferenceNumber(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedDoseReferenceNumber.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::DRTReferencedDoseReferenceSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::DRTReferencedDoseReferenceSequenceInRTIonBeamsModule(const DRTReferencedDoseReferenceSequenceInRTIonBeamsModule ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTReferencedDoseReferenceSequenceInRTIonBeamsModule &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::operator=(const DRTReferencedDoseReferenceSequenceInRTIonBeamsModule ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::~DRTReferencedDoseReferenceSequenceInRTIonBeamsModule() +{ + clear(); +} + + +void DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_ReferencedDoseReferenceSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_ReferencedDoseReferenceSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedDoseReferenceSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtrdrs3.cc b/dcmrt/libsrc/drtrdrs3.cc new file mode 100644 index 00000000..bf3b7185 --- /dev/null +++ b/dcmrt/libsrc/drtrdrs3.cc @@ -0,0 +1,973 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtrdrs3.h" + + +// --- item class --- + +DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + ConstraintWeight(DCM_ConstraintWeight), + DeliveryMaximumDose(DCM_DeliveryMaximumDose), + DeliveryWarningDose(DCM_DeliveryWarningDose), + OrganAtRiskFullVolumeDose(DCM_OrganAtRiskFullVolumeDose), + OrganAtRiskLimitDose(DCM_OrganAtRiskLimitDose), + OrganAtRiskMaximumDose(DCM_OrganAtRiskMaximumDose), + OrganAtRiskOverdoseVolumeFraction(DCM_OrganAtRiskOverdoseVolumeFraction), + ReferencedDoseReferenceNumber(DCM_ReferencedDoseReferenceNumber), + TargetMaximumDose(DCM_TargetMaximumDose), + TargetMinimumDose(DCM_TargetMinimumDose), + TargetPrescriptionDose(DCM_TargetPrescriptionDose), + TargetUnderdoseVolumeFraction(DCM_TargetUnderdoseVolumeFraction) +{ +} + + +DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + ConstraintWeight(copy.ConstraintWeight), + DeliveryMaximumDose(copy.DeliveryMaximumDose), + DeliveryWarningDose(copy.DeliveryWarningDose), + OrganAtRiskFullVolumeDose(copy.OrganAtRiskFullVolumeDose), + OrganAtRiskLimitDose(copy.OrganAtRiskLimitDose), + OrganAtRiskMaximumDose(copy.OrganAtRiskMaximumDose), + OrganAtRiskOverdoseVolumeFraction(copy.OrganAtRiskOverdoseVolumeFraction), + ReferencedDoseReferenceNumber(copy.ReferencedDoseReferenceNumber), + TargetMaximumDose(copy.TargetMaximumDose), + TargetMinimumDose(copy.TargetMinimumDose), + TargetPrescriptionDose(copy.TargetPrescriptionDose), + TargetUnderdoseVolumeFraction(copy.TargetUnderdoseVolumeFraction) +{ +} + + +DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::~Item() +{ +} + + +DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + ConstraintWeight = copy.ConstraintWeight; + DeliveryMaximumDose = copy.DeliveryMaximumDose; + DeliveryWarningDose = copy.DeliveryWarningDose; + OrganAtRiskFullVolumeDose = copy.OrganAtRiskFullVolumeDose; + OrganAtRiskLimitDose = copy.OrganAtRiskLimitDose; + OrganAtRiskMaximumDose = copy.OrganAtRiskMaximumDose; + OrganAtRiskOverdoseVolumeFraction = copy.OrganAtRiskOverdoseVolumeFraction; + ReferencedDoseReferenceNumber = copy.ReferencedDoseReferenceNumber; + TargetMaximumDose = copy.TargetMaximumDose; + TargetMinimumDose = copy.TargetMinimumDose; + TargetPrescriptionDose = copy.TargetPrescriptionDose; + TargetUnderdoseVolumeFraction = copy.TargetUnderdoseVolumeFraction; + } + return *this; +} + + +void DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + ReferencedDoseReferenceNumber.clear(); + ConstraintWeight.clear(); + DeliveryWarningDose.clear(); + DeliveryMaximumDose.clear(); + TargetMinimumDose.clear(); + TargetPrescriptionDose.clear(); + TargetMaximumDose.clear(); + TargetUnderdoseVolumeFraction.clear(); + OrganAtRiskFullVolumeDose.clear(); + OrganAtRiskLimitDose.clear(); + OrganAtRiskMaximumDose.clear(); + OrganAtRiskOverdoseVolumeFraction.clear(); + } +} + + +OFBool DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::isEmpty() +{ + return ReferencedDoseReferenceNumber.isEmpty() && + ConstraintWeight.isEmpty() && + DeliveryWarningDose.isEmpty() && + DeliveryMaximumDose.isEmpty() && + TargetMinimumDose.isEmpty() && + TargetPrescriptionDose.isEmpty() && + TargetMaximumDose.isEmpty() && + TargetUnderdoseVolumeFraction.isEmpty() && + OrganAtRiskFullVolumeDose.isEmpty() && + OrganAtRiskLimitDose.isEmpty() && + OrganAtRiskMaximumDose.isEmpty() && + OrganAtRiskOverdoseVolumeFraction.isEmpty(); +} + + +OFBool DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, ReferencedDoseReferenceNumber, "1", "1", "ReferencedDoseReferenceSequence"); + getAndCheckElementFromDataset(item, ConstraintWeight, "1", "3", "ReferencedDoseReferenceSequence"); + getAndCheckElementFromDataset(item, DeliveryWarningDose, "1", "3", "ReferencedDoseReferenceSequence"); + getAndCheckElementFromDataset(item, DeliveryMaximumDose, "1", "3", "ReferencedDoseReferenceSequence"); + getAndCheckElementFromDataset(item, TargetMinimumDose, "1", "3", "ReferencedDoseReferenceSequence"); + getAndCheckElementFromDataset(item, TargetPrescriptionDose, "1", "3", "ReferencedDoseReferenceSequence"); + getAndCheckElementFromDataset(item, TargetMaximumDose, "1", "3", "ReferencedDoseReferenceSequence"); + getAndCheckElementFromDataset(item, TargetUnderdoseVolumeFraction, "1", "3", "ReferencedDoseReferenceSequence"); + getAndCheckElementFromDataset(item, OrganAtRiskFullVolumeDose, "1", "3", "ReferencedDoseReferenceSequence"); + getAndCheckElementFromDataset(item, OrganAtRiskLimitDose, "1", "3", "ReferencedDoseReferenceSequence"); + getAndCheckElementFromDataset(item, OrganAtRiskMaximumDose, "1", "3", "ReferencedDoseReferenceSequence"); + getAndCheckElementFromDataset(item, OrganAtRiskOverdoseVolumeFraction, "1", "3", "ReferencedDoseReferenceSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmIntegerString(ReferencedDoseReferenceNumber), "1", "1", "ReferencedDoseReferenceSequence"); + addElementToDataset(result, item, new DcmDecimalString(ConstraintWeight), "1", "3", "ReferencedDoseReferenceSequence"); + addElementToDataset(result, item, new DcmDecimalString(DeliveryWarningDose), "1", "3", "ReferencedDoseReferenceSequence"); + addElementToDataset(result, item, new DcmDecimalString(DeliveryMaximumDose), "1", "3", "ReferencedDoseReferenceSequence"); + addElementToDataset(result, item, new DcmDecimalString(TargetMinimumDose), "1", "3", "ReferencedDoseReferenceSequence"); + addElementToDataset(result, item, new DcmDecimalString(TargetPrescriptionDose), "1", "3", "ReferencedDoseReferenceSequence"); + addElementToDataset(result, item, new DcmDecimalString(TargetMaximumDose), "1", "3", "ReferencedDoseReferenceSequence"); + addElementToDataset(result, item, new DcmDecimalString(TargetUnderdoseVolumeFraction), "1", "3", "ReferencedDoseReferenceSequence"); + addElementToDataset(result, item, new DcmDecimalString(OrganAtRiskFullVolumeDose), "1", "3", "ReferencedDoseReferenceSequence"); + addElementToDataset(result, item, new DcmDecimalString(OrganAtRiskLimitDose), "1", "3", "ReferencedDoseReferenceSequence"); + addElementToDataset(result, item, new DcmDecimalString(OrganAtRiskMaximumDose), "1", "3", "ReferencedDoseReferenceSequence"); + addElementToDataset(result, item, new DcmDecimalString(OrganAtRiskOverdoseVolumeFraction), "1", "3", "ReferencedDoseReferenceSequence"); + } + return result; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getConstraintWeight(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ConstraintWeight, value, pos); +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getConstraintWeight(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, ConstraintWeight).getFloat64(value, pos); +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getDeliveryMaximumDose(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(DeliveryMaximumDose, value, pos); +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getDeliveryMaximumDose(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, DeliveryMaximumDose).getFloat64(value, pos); +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getDeliveryWarningDose(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(DeliveryWarningDose, value, pos); +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getDeliveryWarningDose(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, DeliveryWarningDose).getFloat64(value, pos); +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getOrganAtRiskFullVolumeDose(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(OrganAtRiskFullVolumeDose, value, pos); +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getOrganAtRiskFullVolumeDose(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, OrganAtRiskFullVolumeDose).getFloat64(value, pos); +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getOrganAtRiskLimitDose(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(OrganAtRiskLimitDose, value, pos); +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getOrganAtRiskLimitDose(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, OrganAtRiskLimitDose).getFloat64(value, pos); +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getOrganAtRiskMaximumDose(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(OrganAtRiskMaximumDose, value, pos); +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getOrganAtRiskMaximumDose(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, OrganAtRiskMaximumDose).getFloat64(value, pos); +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getOrganAtRiskOverdoseVolumeFraction(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(OrganAtRiskOverdoseVolumeFraction, value, pos); +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getOrganAtRiskOverdoseVolumeFraction(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, OrganAtRiskOverdoseVolumeFraction).getFloat64(value, pos); +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getReferencedDoseReferenceNumber(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedDoseReferenceNumber, value, pos); +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getReferencedDoseReferenceNumber(Sint32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmIntegerString &, ReferencedDoseReferenceNumber).getSint32(value, pos); +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getTargetMaximumDose(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(TargetMaximumDose, value, pos); +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getTargetMaximumDose(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, TargetMaximumDose).getFloat64(value, pos); +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getTargetMinimumDose(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(TargetMinimumDose, value, pos); +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getTargetMinimumDose(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, TargetMinimumDose).getFloat64(value, pos); +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getTargetPrescriptionDose(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(TargetPrescriptionDose, value, pos); +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getTargetPrescriptionDose(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, TargetPrescriptionDose).getFloat64(value, pos); +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getTargetUnderdoseVolumeFraction(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(TargetUnderdoseVolumeFraction, value, pos); +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getTargetUnderdoseVolumeFraction(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, TargetUnderdoseVolumeFraction).getFloat64(value, pos); +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setConstraintWeight(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ConstraintWeight.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setDeliveryMaximumDose(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = DeliveryMaximumDose.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setDeliveryWarningDose(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = DeliveryWarningDose.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setOrganAtRiskFullVolumeDose(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = OrganAtRiskFullVolumeDose.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setOrganAtRiskLimitDose(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = OrganAtRiskLimitDose.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setOrganAtRiskMaximumDose(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = OrganAtRiskMaximumDose.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setOrganAtRiskOverdoseVolumeFraction(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = OrganAtRiskOverdoseVolumeFraction.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setReferencedDoseReferenceNumber(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedDoseReferenceNumber.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setTargetMaximumDose(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = TargetMaximumDose.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setTargetMinimumDose(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = TargetMinimumDose.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setTargetPrescriptionDose(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = TargetPrescriptionDose.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setTargetUnderdoseVolumeFraction(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = TargetUnderdoseVolumeFraction.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule(const DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::operator=(const DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::~DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule() +{ + clear(); +} + + +void DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_ReferencedDoseReferenceSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_ReferencedDoseReferenceSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedDoseReferenceSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtrdrs6.cc b/dcmrt/libsrc/drtrdrs6.cc deleted file mode 100644 index 0904f47b..00000000 --- a/dcmrt/libsrc/drtrdrs6.cc +++ /dev/null @@ -1,591 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Source file for class DRTReferencedDoseReferenceSequenceInRTIonBeamsModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/dcmrt/seq/drtrdrs6.h" - - -// --- item class --- - -DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::Item(const OFBool emptyDefaultItem) - : EmptyDefaultItem(emptyDefaultItem), - CumulativeDoseReferenceCoefficient(DCM_CumulativeDoseReferenceCoefficient), - ReferencedDoseReferenceNumber(DCM_ReferencedDoseReferenceNumber) -{ -} - - -DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::Item(const Item ©) - : EmptyDefaultItem(copy.EmptyDefaultItem), - CumulativeDoseReferenceCoefficient(copy.CumulativeDoseReferenceCoefficient), - ReferencedDoseReferenceNumber(copy.ReferencedDoseReferenceNumber) -{ -} - - -DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::~Item() -{ -} - - -DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::operator=(const Item ©) -{ - if (this != ©) - { - EmptyDefaultItem = copy.EmptyDefaultItem; - CumulativeDoseReferenceCoefficient = copy.CumulativeDoseReferenceCoefficient; - ReferencedDoseReferenceNumber = copy.ReferencedDoseReferenceNumber; - } - return *this; -} - - -void DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::clear() -{ - if (!EmptyDefaultItem) - { - /* clear all DICOM attributes */ - ReferencedDoseReferenceNumber.clear(); - CumulativeDoseReferenceCoefficient.clear(); - } -} - - -OFBool DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::isEmpty() -{ - return ReferencedDoseReferenceNumber.isEmpty() && - CumulativeDoseReferenceCoefficient.isEmpty(); -} - - -OFBool DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::isValid() const -{ - return !EmptyDefaultItem; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::read(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - /* re-initialize object */ - clear(); - getAndCheckElementFromDataset(item, ReferencedDoseReferenceNumber, "1", "1", "ReferencedDoseReferenceSequence"); - getAndCheckElementFromDataset(item, CumulativeDoseReferenceCoefficient, "1", "2", "ReferencedDoseReferenceSequence"); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::write(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = EC_Normal; - addElementToDataset(result, item, new DcmIntegerString(ReferencedDoseReferenceNumber), "1", "1", "ReferencedDoseReferenceSequence"); - addElementToDataset(result, item, new DcmDecimalString(CumulativeDoseReferenceCoefficient), "1", "2", "ReferencedDoseReferenceSequence"); - } - return result; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::getCumulativeDoseReferenceCoefficient(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(CumulativeDoseReferenceCoefficient, value, pos); -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::getCumulativeDoseReferenceCoefficient(Float64 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, CumulativeDoseReferenceCoefficient).getFloat64(value, pos); -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::getReferencedDoseReferenceNumber(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ReferencedDoseReferenceNumber, value, pos); -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::getReferencedDoseReferenceNumber(Sint32 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmIntegerString &, ReferencedDoseReferenceNumber).getSint32(value, pos); -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::setCumulativeDoseReferenceCoefficient(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = CumulativeDoseReferenceCoefficient.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::setReferencedDoseReferenceNumber(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ReferencedDoseReferenceNumber.putOFStringArray(value); - } - return result; -} - - -// --- sequence class --- - -DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::DRTReferencedDoseReferenceSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence) - : EmptyDefaultSequence(emptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - CurrentItem = SequenceOfItems.end(); -} - - -DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::DRTReferencedDoseReferenceSequenceInRTIonBeamsModule(const DRTReferencedDoseReferenceSequenceInRTIonBeamsModule ©) - : EmptyDefaultSequence(copy.EmptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); -} - - -DRTReferencedDoseReferenceSequenceInRTIonBeamsModule &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::operator=(const DRTReferencedDoseReferenceSequenceInRTIonBeamsModule ©) -{ - if (this != ©) - { - clear(); - EmptyDefaultSequence = copy.EmptyDefaultSequence; - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); - } - return *this; -} - - -DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::~DRTReferencedDoseReferenceSequenceInRTIonBeamsModule() -{ - clear(); -} - - -void DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::clear() -{ - if (!EmptyDefaultSequence) - { - CurrentItem = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* delete all items and free memory */ - while (CurrentItem != last) - { - delete (*CurrentItem); - CurrentItem = SequenceOfItems.erase(CurrentItem); - } - /* make sure that the list is empty */ - SequenceOfItems.clear(); - CurrentItem = SequenceOfItems.end(); - } -} - - -OFBool DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::isEmpty() -{ - return SequenceOfItems.empty(); -} - - -OFBool DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::isValid() const -{ - return !EmptyDefaultSequence; -} - - -size_t DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getNumberOfItems() const -{ - return SequenceOfItems.size(); -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::gotoFirstItem() -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - CurrentItem = SequenceOfItems.begin(); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::gotoNextItem() -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - ++CurrentItem; - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::gotoItem(const size_t num) -{ - return gotoItem(num, CurrentItem); -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getCurrentItem(Item *&item) const -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - item = *CurrentItem; - result = EC_Normal; - } - return result; -} - - -DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getCurrentItem() -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -const DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getCurrentItem() const -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item) -{ - OFListIterator(Item *) iterator; - OFCondition result = gotoItem(num, iterator); - if (result.good()) - item = *iterator; - return result; -} - - -DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getItem(const size_t num) -{ - OFListIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -const DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getItem(const size_t num) const -{ - OFListConstIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::operator[](const size_t num) -{ - return getItem(num); -} - - -const DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::operator[](const size_t num) const -{ - return getItem(num); -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::addItem(Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.push_back(item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } - return result; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - result = gotoItem(pos, iterator); - if (result.good()) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.insert(iterator, 1, item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } else - result = addItem(item); - } - return result; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::removeItem(const size_t pos) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - if (gotoItem(pos, iterator).good()) - { - delete *iterator; - iterator = SequenceOfItems.erase(iterator); - result = EC_Normal; - } else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - /* re-initialize object */ - clear(); - /* retrieve sequence element from dataset */ - DcmSequenceOfItems *sequence; - result = dataset.findAndGetSequence(DCM_ReferencedDoseReferenceSequence, sequence); - if (sequence != NULL) - { - if (checkElementValue(*sequence, card, type, result, moduleName)) - { - DcmStack stack; - OFBool first = OFTrue; - /* iterate over all sequence items */ - while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) - { - DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); - if (ditem != NULL) - { - Item *item = new Item(); - if (item != NULL) - { - result = item->read(*ditem); - if (result.good()) - { - /* append new item to the end of the list */ - SequenceOfItems.push_back(item); - first = OFFalse; - } - } else - result = EC_MemoryExhausted; - } else - result = EC_CorruptedData; - } - } - } else { - DcmSequenceOfItems element(DCM_ReferencedDoseReferenceSequence); - checkElementValue(element, card, type, result, moduleName); - } - } - return result; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - result = EC_MemoryExhausted; - DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedDoseReferenceSequence); - if (sequence != NULL) - { - result = EC_Normal; - /* an empty optional sequence is not written */ - if ((type == "2") || !SequenceOfItems.empty()) - { - OFListIterator(Item *) iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* iterate over all sequence items */ - while (result.good() && (iterator != last)) - { - DcmItem *item = new DcmItem(); - if (item != NULL) - { - /* append new item to the end of the sequence */ - result = sequence->append(item); - if (result.good()) - { - result = (*iterator)->write(*item); - ++iterator; - } else - delete item; - } else - result = EC_MemoryExhausted; - } - if (result.good()) - { - /* insert sequence element into the dataset */ - result = dataset.insert(sequence, OFTrue /*replaceOld*/); - } - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - if (result.good()) - { - /* forget reference to sequence object (avoid deletion below) */ - sequence = NULL; - } - } - else if (type == "1") - { - /* empty type 1 sequence not allowed */ - result = RT_EC_InvalidValue; - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - } - /* delete sequence (if not inserted into the dataset) */ - delete sequence; - } - } - return result; -} - - -// end of source file diff --git a/dcmrt/libsrc/drtrdrs8.cc b/dcmrt/libsrc/drtrdrs8.cc deleted file mode 100644 index 7b7cba12..00000000 --- a/dcmrt/libsrc/drtrdrs8.cc +++ /dev/null @@ -1,971 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Source file for class DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/dcmrt/seq/drtrdrs8.h" - - -// --- item class --- - -DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::Item(const OFBool emptyDefaultItem) - : EmptyDefaultItem(emptyDefaultItem), - ConstraintWeight(DCM_ConstraintWeight), - DeliveryMaximumDose(DCM_DeliveryMaximumDose), - DeliveryWarningDose(DCM_DeliveryWarningDose), - OrganAtRiskFullVolumeDose(DCM_OrganAtRiskFullVolumeDose), - OrganAtRiskLimitDose(DCM_OrganAtRiskLimitDose), - OrganAtRiskMaximumDose(DCM_OrganAtRiskMaximumDose), - OrganAtRiskOverdoseVolumeFraction(DCM_OrganAtRiskOverdoseVolumeFraction), - ReferencedDoseReferenceNumber(DCM_ReferencedDoseReferenceNumber), - TargetMaximumDose(DCM_TargetMaximumDose), - TargetMinimumDose(DCM_TargetMinimumDose), - TargetPrescriptionDose(DCM_TargetPrescriptionDose), - TargetUnderdoseVolumeFraction(DCM_TargetUnderdoseVolumeFraction) -{ -} - - -DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::Item(const Item ©) - : EmptyDefaultItem(copy.EmptyDefaultItem), - ConstraintWeight(copy.ConstraintWeight), - DeliveryMaximumDose(copy.DeliveryMaximumDose), - DeliveryWarningDose(copy.DeliveryWarningDose), - OrganAtRiskFullVolumeDose(copy.OrganAtRiskFullVolumeDose), - OrganAtRiskLimitDose(copy.OrganAtRiskLimitDose), - OrganAtRiskMaximumDose(copy.OrganAtRiskMaximumDose), - OrganAtRiskOverdoseVolumeFraction(copy.OrganAtRiskOverdoseVolumeFraction), - ReferencedDoseReferenceNumber(copy.ReferencedDoseReferenceNumber), - TargetMaximumDose(copy.TargetMaximumDose), - TargetMinimumDose(copy.TargetMinimumDose), - TargetPrescriptionDose(copy.TargetPrescriptionDose), - TargetUnderdoseVolumeFraction(copy.TargetUnderdoseVolumeFraction) -{ -} - - -DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::~Item() -{ -} - - -DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::operator=(const Item ©) -{ - if (this != ©) - { - EmptyDefaultItem = copy.EmptyDefaultItem; - ConstraintWeight = copy.ConstraintWeight; - DeliveryMaximumDose = copy.DeliveryMaximumDose; - DeliveryWarningDose = copy.DeliveryWarningDose; - OrganAtRiskFullVolumeDose = copy.OrganAtRiskFullVolumeDose; - OrganAtRiskLimitDose = copy.OrganAtRiskLimitDose; - OrganAtRiskMaximumDose = copy.OrganAtRiskMaximumDose; - OrganAtRiskOverdoseVolumeFraction = copy.OrganAtRiskOverdoseVolumeFraction; - ReferencedDoseReferenceNumber = copy.ReferencedDoseReferenceNumber; - TargetMaximumDose = copy.TargetMaximumDose; - TargetMinimumDose = copy.TargetMinimumDose; - TargetPrescriptionDose = copy.TargetPrescriptionDose; - TargetUnderdoseVolumeFraction = copy.TargetUnderdoseVolumeFraction; - } - return *this; -} - - -void DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::clear() -{ - if (!EmptyDefaultItem) - { - /* clear all DICOM attributes */ - ReferencedDoseReferenceNumber.clear(); - ConstraintWeight.clear(); - DeliveryWarningDose.clear(); - DeliveryMaximumDose.clear(); - TargetMinimumDose.clear(); - TargetPrescriptionDose.clear(); - TargetMaximumDose.clear(); - TargetUnderdoseVolumeFraction.clear(); - OrganAtRiskFullVolumeDose.clear(); - OrganAtRiskLimitDose.clear(); - OrganAtRiskMaximumDose.clear(); - OrganAtRiskOverdoseVolumeFraction.clear(); - } -} - - -OFBool DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::isEmpty() -{ - return ReferencedDoseReferenceNumber.isEmpty() && - ConstraintWeight.isEmpty() && - DeliveryWarningDose.isEmpty() && - DeliveryMaximumDose.isEmpty() && - TargetMinimumDose.isEmpty() && - TargetPrescriptionDose.isEmpty() && - TargetMaximumDose.isEmpty() && - TargetUnderdoseVolumeFraction.isEmpty() && - OrganAtRiskFullVolumeDose.isEmpty() && - OrganAtRiskLimitDose.isEmpty() && - OrganAtRiskMaximumDose.isEmpty() && - OrganAtRiskOverdoseVolumeFraction.isEmpty(); -} - - -OFBool DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::isValid() const -{ - return !EmptyDefaultItem; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::read(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - /* re-initialize object */ - clear(); - getAndCheckElementFromDataset(item, ReferencedDoseReferenceNumber, "1", "1", "ReferencedDoseReferenceSequence"); - getAndCheckElementFromDataset(item, ConstraintWeight, "1", "3", "ReferencedDoseReferenceSequence"); - getAndCheckElementFromDataset(item, DeliveryWarningDose, "1", "3", "ReferencedDoseReferenceSequence"); - getAndCheckElementFromDataset(item, DeliveryMaximumDose, "1", "3", "ReferencedDoseReferenceSequence"); - getAndCheckElementFromDataset(item, TargetMinimumDose, "1", "3", "ReferencedDoseReferenceSequence"); - getAndCheckElementFromDataset(item, TargetPrescriptionDose, "1", "3", "ReferencedDoseReferenceSequence"); - getAndCheckElementFromDataset(item, TargetMaximumDose, "1", "3", "ReferencedDoseReferenceSequence"); - getAndCheckElementFromDataset(item, TargetUnderdoseVolumeFraction, "1", "3", "ReferencedDoseReferenceSequence"); - getAndCheckElementFromDataset(item, OrganAtRiskFullVolumeDose, "1", "3", "ReferencedDoseReferenceSequence"); - getAndCheckElementFromDataset(item, OrganAtRiskLimitDose, "1", "3", "ReferencedDoseReferenceSequence"); - getAndCheckElementFromDataset(item, OrganAtRiskMaximumDose, "1", "3", "ReferencedDoseReferenceSequence"); - getAndCheckElementFromDataset(item, OrganAtRiskOverdoseVolumeFraction, "1", "3", "ReferencedDoseReferenceSequence"); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::write(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = EC_Normal; - addElementToDataset(result, item, new DcmIntegerString(ReferencedDoseReferenceNumber), "1", "1", "ReferencedDoseReferenceSequence"); - addElementToDataset(result, item, new DcmDecimalString(ConstraintWeight), "1", "3", "ReferencedDoseReferenceSequence"); - addElementToDataset(result, item, new DcmDecimalString(DeliveryWarningDose), "1", "3", "ReferencedDoseReferenceSequence"); - addElementToDataset(result, item, new DcmDecimalString(DeliveryMaximumDose), "1", "3", "ReferencedDoseReferenceSequence"); - addElementToDataset(result, item, new DcmDecimalString(TargetMinimumDose), "1", "3", "ReferencedDoseReferenceSequence"); - addElementToDataset(result, item, new DcmDecimalString(TargetPrescriptionDose), "1", "3", "ReferencedDoseReferenceSequence"); - addElementToDataset(result, item, new DcmDecimalString(TargetMaximumDose), "1", "3", "ReferencedDoseReferenceSequence"); - addElementToDataset(result, item, new DcmDecimalString(TargetUnderdoseVolumeFraction), "1", "3", "ReferencedDoseReferenceSequence"); - addElementToDataset(result, item, new DcmDecimalString(OrganAtRiskFullVolumeDose), "1", "3", "ReferencedDoseReferenceSequence"); - addElementToDataset(result, item, new DcmDecimalString(OrganAtRiskLimitDose), "1", "3", "ReferencedDoseReferenceSequence"); - addElementToDataset(result, item, new DcmDecimalString(OrganAtRiskMaximumDose), "1", "3", "ReferencedDoseReferenceSequence"); - addElementToDataset(result, item, new DcmDecimalString(OrganAtRiskOverdoseVolumeFraction), "1", "3", "ReferencedDoseReferenceSequence"); - } - return result; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getConstraintWeight(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ConstraintWeight, value, pos); -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getConstraintWeight(Float64 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, ConstraintWeight).getFloat64(value, pos); -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getDeliveryMaximumDose(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(DeliveryMaximumDose, value, pos); -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getDeliveryMaximumDose(Float64 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, DeliveryMaximumDose).getFloat64(value, pos); -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getDeliveryWarningDose(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(DeliveryWarningDose, value, pos); -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getDeliveryWarningDose(Float64 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, DeliveryWarningDose).getFloat64(value, pos); -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getOrganAtRiskFullVolumeDose(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(OrganAtRiskFullVolumeDose, value, pos); -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getOrganAtRiskFullVolumeDose(Float64 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, OrganAtRiskFullVolumeDose).getFloat64(value, pos); -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getOrganAtRiskLimitDose(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(OrganAtRiskLimitDose, value, pos); -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getOrganAtRiskLimitDose(Float64 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, OrganAtRiskLimitDose).getFloat64(value, pos); -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getOrganAtRiskMaximumDose(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(OrganAtRiskMaximumDose, value, pos); -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getOrganAtRiskMaximumDose(Float64 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, OrganAtRiskMaximumDose).getFloat64(value, pos); -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getOrganAtRiskOverdoseVolumeFraction(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(OrganAtRiskOverdoseVolumeFraction, value, pos); -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getOrganAtRiskOverdoseVolumeFraction(Float64 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, OrganAtRiskOverdoseVolumeFraction).getFloat64(value, pos); -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getReferencedDoseReferenceNumber(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ReferencedDoseReferenceNumber, value, pos); -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getReferencedDoseReferenceNumber(Sint32 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmIntegerString &, ReferencedDoseReferenceNumber).getSint32(value, pos); -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getTargetMaximumDose(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(TargetMaximumDose, value, pos); -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getTargetMaximumDose(Float64 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, TargetMaximumDose).getFloat64(value, pos); -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getTargetMinimumDose(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(TargetMinimumDose, value, pos); -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getTargetMinimumDose(Float64 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, TargetMinimumDose).getFloat64(value, pos); -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getTargetPrescriptionDose(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(TargetPrescriptionDose, value, pos); -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getTargetPrescriptionDose(Float64 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, TargetPrescriptionDose).getFloat64(value, pos); -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getTargetUnderdoseVolumeFraction(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(TargetUnderdoseVolumeFraction, value, pos); -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getTargetUnderdoseVolumeFraction(Float64 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmDecimalString &, TargetUnderdoseVolumeFraction).getFloat64(value, pos); -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setConstraintWeight(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ConstraintWeight.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setDeliveryMaximumDose(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = DeliveryMaximumDose.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setDeliveryWarningDose(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = DeliveryWarningDose.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setOrganAtRiskFullVolumeDose(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = OrganAtRiskFullVolumeDose.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setOrganAtRiskLimitDose(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = OrganAtRiskLimitDose.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setOrganAtRiskMaximumDose(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = OrganAtRiskMaximumDose.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setOrganAtRiskOverdoseVolumeFraction(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = OrganAtRiskOverdoseVolumeFraction.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setReferencedDoseReferenceNumber(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ReferencedDoseReferenceNumber.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setTargetMaximumDose(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = TargetMaximumDose.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setTargetMinimumDose(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = TargetMinimumDose.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setTargetPrescriptionDose(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = TargetPrescriptionDose.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setTargetUnderdoseVolumeFraction(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = TargetUnderdoseVolumeFraction.putOFStringArray(value); - } - return result; -} - - -// --- sequence class --- - -DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule(const OFBool emptyDefaultSequence) - : EmptyDefaultSequence(emptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - CurrentItem = SequenceOfItems.end(); -} - - -DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule(const DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule ©) - : EmptyDefaultSequence(copy.EmptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); -} - - -DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::operator=(const DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule ©) -{ - if (this != ©) - { - clear(); - EmptyDefaultSequence = copy.EmptyDefaultSequence; - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); - } - return *this; -} - - -DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::~DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule() -{ - clear(); -} - - -void DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::clear() -{ - if (!EmptyDefaultSequence) - { - CurrentItem = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* delete all items and free memory */ - while (CurrentItem != last) - { - delete (*CurrentItem); - CurrentItem = SequenceOfItems.erase(CurrentItem); - } - /* make sure that the list is empty */ - SequenceOfItems.clear(); - CurrentItem = SequenceOfItems.end(); - } -} - - -OFBool DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::isEmpty() -{ - return SequenceOfItems.empty(); -} - - -OFBool DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::isValid() const -{ - return !EmptyDefaultSequence; -} - - -size_t DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getNumberOfItems() const -{ - return SequenceOfItems.size(); -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::gotoFirstItem() -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - CurrentItem = SequenceOfItems.begin(); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::gotoNextItem() -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - ++CurrentItem; - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::gotoItem(const size_t num) -{ - return gotoItem(num, CurrentItem); -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getCurrentItem(Item *&item) const -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - item = *CurrentItem; - result = EC_Normal; - } - return result; -} - - -DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getCurrentItem() -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -const DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getCurrentItem() const -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getItem(const size_t num, Item *&item) -{ - OFListIterator(Item *) iterator; - OFCondition result = gotoItem(num, iterator); - if (result.good()) - item = *iterator; - return result; -} - - -DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getItem(const size_t num) -{ - OFListIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -const DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getItem(const size_t num) const -{ - OFListConstIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::operator[](const size_t num) -{ - return getItem(num); -} - - -const DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::operator[](const size_t num) const -{ - return getItem(num); -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::addItem(Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.push_back(item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } - return result; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::insertItem(const size_t pos, Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - result = gotoItem(pos, iterator); - if (result.good()) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.insert(iterator, 1, item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } else - result = addItem(item); - } - return result; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::removeItem(const size_t pos) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - if (gotoItem(pos, iterator).good()) - { - delete *iterator; - iterator = SequenceOfItems.erase(iterator); - result = EC_Normal; - } else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - /* re-initialize object */ - clear(); - /* retrieve sequence element from dataset */ - DcmSequenceOfItems *sequence; - result = dataset.findAndGetSequence(DCM_ReferencedDoseReferenceSequence, sequence); - if (sequence != NULL) - { - if (checkElementValue(*sequence, card, type, result, moduleName)) - { - DcmStack stack; - OFBool first = OFTrue; - /* iterate over all sequence items */ - while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) - { - DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); - if (ditem != NULL) - { - Item *item = new Item(); - if (item != NULL) - { - result = item->read(*ditem); - if (result.good()) - { - /* append new item to the end of the list */ - SequenceOfItems.push_back(item); - first = OFFalse; - } - } else - result = EC_MemoryExhausted; - } else - result = EC_CorruptedData; - } - } - } else { - DcmSequenceOfItems element(DCM_ReferencedDoseReferenceSequence); - checkElementValue(element, card, type, result, moduleName); - } - } - return result; -} - - -OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - result = EC_MemoryExhausted; - DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedDoseReferenceSequence); - if (sequence != NULL) - { - result = EC_Normal; - /* an empty optional sequence is not written */ - if ((type == "2") || !SequenceOfItems.empty()) - { - OFListIterator(Item *) iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* iterate over all sequence items */ - while (result.good() && (iterator != last)) - { - DcmItem *item = new DcmItem(); - if (item != NULL) - { - /* append new item to the end of the sequence */ - result = sequence->append(item); - if (result.good()) - { - result = (*iterator)->write(*item); - ++iterator; - } else - delete item; - } else - result = EC_MemoryExhausted; - } - if (result.good()) - { - /* insert sequence element into the dataset */ - result = dataset.insert(sequence, OFTrue /*replaceOld*/); - } - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - if (result.good()) - { - /* forget reference to sequence object (avoid deletion below) */ - sequence = NULL; - } - } - else if (type == "1") - { - /* empty type 1 sequence not allowed */ - result = RT_EC_InvalidValue; - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - } - /* delete sequence (if not inserted into the dataset) */ - delete sequence; - } - } - return result; -} - - -// end of source file diff --git a/dcmrt/libsrc/drtrds.cc b/dcmrt/libsrc/drtrds.cc index 2fcb68bd..85c040c1 100644 --- a/dcmrt/libsrc/drtrds.cc +++ b/dcmrt/libsrc/drtrds.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTReferencedDoseSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -272,10 +272,12 @@ OFCondition DRTReferencedDoseSequence::gotoFirstItem() OFCondition DRTReferencedDoseSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrdsis.cc b/dcmrt/libsrc/drtrdsis.cc new file mode 100644 index 00000000..c4269f90 --- /dev/null +++ b/dcmrt/libsrc/drtrdsis.cc @@ -0,0 +1,575 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTReferencedDirectSegmentInstanceSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtrdsis.h" + + +// --- item class --- + +DRTReferencedDirectSegmentInstanceSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + ReferencedSOPClassUID(DCM_ReferencedSOPClassUID), + ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID) +{ +} + + +DRTReferencedDirectSegmentInstanceSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + ReferencedSOPClassUID(copy.ReferencedSOPClassUID), + ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID) +{ +} + + +DRTReferencedDirectSegmentInstanceSequence::Item::~Item() +{ +} + + +DRTReferencedDirectSegmentInstanceSequence::Item &DRTReferencedDirectSegmentInstanceSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + ReferencedSOPClassUID = copy.ReferencedSOPClassUID; + ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID; + } + return *this; +} + + +void DRTReferencedDirectSegmentInstanceSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + ReferencedSOPClassUID.clear(); + ReferencedSOPInstanceUID.clear(); + } +} + + +OFBool DRTReferencedDirectSegmentInstanceSequence::Item::isEmpty() +{ + return ReferencedSOPClassUID.isEmpty() && + ReferencedSOPInstanceUID.isEmpty(); +} + + +OFBool DRTReferencedDirectSegmentInstanceSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTReferencedDirectSegmentInstanceSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedDirectSegmentInstanceSequence"); + getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedDirectSegmentInstanceSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReferencedDirectSegmentInstanceSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedDirectSegmentInstanceSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedDirectSegmentInstanceSequence"); + } + return result; +} + + +OFCondition DRTReferencedDirectSegmentInstanceSequence::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedSOPClassUID, value, pos); +} + + +OFCondition DRTReferencedDirectSegmentInstanceSequence::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos); +} + + +OFCondition DRTReferencedDirectSegmentInstanceSequence::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedSOPClassUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedDirectSegmentInstanceSequence::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedSOPInstanceUID.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTReferencedDirectSegmentInstanceSequence::DRTReferencedDirectSegmentInstanceSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTReferencedDirectSegmentInstanceSequence::DRTReferencedDirectSegmentInstanceSequence(const DRTReferencedDirectSegmentInstanceSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTReferencedDirectSegmentInstanceSequence &DRTReferencedDirectSegmentInstanceSequence::operator=(const DRTReferencedDirectSegmentInstanceSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTReferencedDirectSegmentInstanceSequence::~DRTReferencedDirectSegmentInstanceSequence() +{ + clear(); +} + + +void DRTReferencedDirectSegmentInstanceSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTReferencedDirectSegmentInstanceSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTReferencedDirectSegmentInstanceSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTReferencedDirectSegmentInstanceSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTReferencedDirectSegmentInstanceSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReferencedDirectSegmentInstanceSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTReferencedDirectSegmentInstanceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedDirectSegmentInstanceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedDirectSegmentInstanceSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTReferencedDirectSegmentInstanceSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTReferencedDirectSegmentInstanceSequence::Item &DRTReferencedDirectSegmentInstanceSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTReferencedDirectSegmentInstanceSequence::Item &DRTReferencedDirectSegmentInstanceSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTReferencedDirectSegmentInstanceSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTReferencedDirectSegmentInstanceSequence::Item &DRTReferencedDirectSegmentInstanceSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTReferencedDirectSegmentInstanceSequence::Item &DRTReferencedDirectSegmentInstanceSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTReferencedDirectSegmentInstanceSequence::Item &DRTReferencedDirectSegmentInstanceSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTReferencedDirectSegmentInstanceSequence::Item &DRTReferencedDirectSegmentInstanceSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTReferencedDirectSegmentInstanceSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTReferencedDirectSegmentInstanceSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTReferencedDirectSegmentInstanceSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedDirectSegmentInstanceSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_ReferencedDirectSegmentInstanceSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_ReferencedDirectSegmentInstanceSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTReferencedDirectSegmentInstanceSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedDirectSegmentInstanceSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtrecs.cc b/dcmrt/libsrc/drtrecs.cc index 2707b2b1..e5db9bb1 100644 --- a/dcmrt/libsrc/drtrecs.cc +++ b/dcmrt/libsrc/drtrecs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTROIElementalCompositionSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -264,10 +264,12 @@ OFCondition DRTROIElementalCompositionSequence::gotoFirstItem() OFCondition DRTROIElementalCompositionSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrfgs.cc b/dcmrt/libsrc/drtrfgs.cc index cb5cd4cc..7e1aa16a 100644 --- a/dcmrt/libsrc/drtrfgs.cc +++ b/dcmrt/libsrc/drtrfgs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTReferencedFractionGroupSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -266,10 +266,12 @@ OFCondition DRTReferencedFractionGroupSequence::gotoFirstItem() OFCondition DRTReferencedFractionGroupSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrfors.cc b/dcmrt/libsrc/drtrfors.cc index 310864cc..dbdf7ba1 100644 --- a/dcmrt/libsrc/drtrfors.cc +++ b/dcmrt/libsrc/drtrfors.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTReferencedFrameOfReferenceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -250,10 +250,12 @@ OFCondition DRTReferencedFrameOfReferenceSequence::gotoFirstItem() OFCondition DRTReferencedFrameOfReferenceSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrics.cc b/dcmrt/libsrc/drtrics.cc index 8ab3882e..38e527de 100644 --- a/dcmrt/libsrc/drtrics.cc +++ b/dcmrt/libsrc/drtrics.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTRTROIIdentificationCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -663,10 +663,12 @@ OFCondition DRTRTROIIdentificationCodeSequence::gotoFirstItem() OFCondition DRTRTROIIdentificationCodeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrims.cc b/dcmrt/libsrc/drtrims.cc index 52352afc..35b3aa44 100644 --- a/dcmrt/libsrc/drtrims.cc +++ b/dcmrt/libsrc/drtrims.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTReferencedImageSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -342,10 +342,12 @@ OFCondition DRTReferencedImageSequence::gotoFirstItem() OFCondition DRTReferencedImageSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtris.cc b/dcmrt/libsrc/drtris.cc index e3866568..f90a9230 100644 --- a/dcmrt/libsrc/drtris.cc +++ b/dcmrt/libsrc/drtris.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTReferencedInstanceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -279,10 +279,12 @@ OFCondition DRTReferencedInstanceSequence::gotoFirstItem() OFCondition DRTReferencedInstanceSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrlsds.cc b/dcmrt/libsrc/drtrlsds.cc index 23eb33ec..a0e4c073 100644 --- a/dcmrt/libsrc/drtrlsds.cc +++ b/dcmrt/libsrc/drtrlsds.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTRecordedLateralSpreadingDeviceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -310,10 +310,12 @@ OFCondition DRTRecordedLateralSpreadingDeviceSequence::gotoFirstItem() OFCondition DRTRecordedLateralSpreadingDeviceSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrmdrs.cc b/dcmrt/libsrc/drtrmdrs.cc index 85164684..b30fd901 100644 --- a/dcmrt/libsrc/drtrmdrs.cc +++ b/dcmrt/libsrc/drtrmdrs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTReferencedMeasuredDoseReferenceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -328,10 +328,12 @@ OFCondition DRTReferencedMeasuredDoseReferenceSequence::gotoFirstItem() OFCondition DRTReferencedMeasuredDoseReferenceSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrms.cc b/dcmrt/libsrc/drtrms.cc index ec876c86..098df6a9 100644 --- a/dcmrt/libsrc/drtrms.cc +++ b/dcmrt/libsrc/drtrms.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTRangeModulatorSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -397,10 +397,12 @@ OFCondition DRTRangeModulatorSequence::gotoFirstItem() OFCondition DRTRangeModulatorSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrmss1.cc b/dcmrt/libsrc/drtrmss1.cc new file mode 100644 index 00000000..88c9cd24 --- /dev/null +++ b/dcmrt/libsrc/drtrmss1.cc @@ -0,0 +1,680 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTRangeModulatorSettingsSequenceInRTIonBeamsModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtrmss1.h" + + +// --- item class --- + +DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + IsocenterToRangeModulatorDistance(DCM_IsocenterToRangeModulatorDistance), + RangeModulatorGatingStartValue(DCM_RangeModulatorGatingStartValue), + RangeModulatorGatingStartWaterEquivalentThickness(DCM_RangeModulatorGatingStartWaterEquivalentThickness), + RangeModulatorGatingStopValue(DCM_RangeModulatorGatingStopValue), + RangeModulatorGatingStopWaterEquivalentThickness(DCM_RangeModulatorGatingStopWaterEquivalentThickness), + ReferencedRangeModulatorNumber(DCM_ReferencedRangeModulatorNumber) +{ +} + + +DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + IsocenterToRangeModulatorDistance(copy.IsocenterToRangeModulatorDistance), + RangeModulatorGatingStartValue(copy.RangeModulatorGatingStartValue), + RangeModulatorGatingStartWaterEquivalentThickness(copy.RangeModulatorGatingStartWaterEquivalentThickness), + RangeModulatorGatingStopValue(copy.RangeModulatorGatingStopValue), + RangeModulatorGatingStopWaterEquivalentThickness(copy.RangeModulatorGatingStopWaterEquivalentThickness), + ReferencedRangeModulatorNumber(copy.ReferencedRangeModulatorNumber) +{ +} + + +DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::~Item() +{ +} + + +DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + IsocenterToRangeModulatorDistance = copy.IsocenterToRangeModulatorDistance; + RangeModulatorGatingStartValue = copy.RangeModulatorGatingStartValue; + RangeModulatorGatingStartWaterEquivalentThickness = copy.RangeModulatorGatingStartWaterEquivalentThickness; + RangeModulatorGatingStopValue = copy.RangeModulatorGatingStopValue; + RangeModulatorGatingStopWaterEquivalentThickness = copy.RangeModulatorGatingStopWaterEquivalentThickness; + ReferencedRangeModulatorNumber = copy.ReferencedRangeModulatorNumber; + } + return *this; +} + + +void DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + ReferencedRangeModulatorNumber.clear(); + RangeModulatorGatingStartValue.clear(); + RangeModulatorGatingStopValue.clear(); + RangeModulatorGatingStartWaterEquivalentThickness.clear(); + RangeModulatorGatingStopWaterEquivalentThickness.clear(); + IsocenterToRangeModulatorDistance.clear(); + } +} + + +OFBool DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::isEmpty() +{ + return ReferencedRangeModulatorNumber.isEmpty() && + RangeModulatorGatingStartValue.isEmpty() && + RangeModulatorGatingStopValue.isEmpty() && + RangeModulatorGatingStartWaterEquivalentThickness.isEmpty() && + RangeModulatorGatingStopWaterEquivalentThickness.isEmpty() && + IsocenterToRangeModulatorDistance.isEmpty(); +} + + +OFBool DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, ReferencedRangeModulatorNumber, "1", "1", "RangeModulatorSettingsSequence"); + getAndCheckElementFromDataset(item, RangeModulatorGatingStartValue, "1", "1C", "RangeModulatorSettingsSequence"); + getAndCheckElementFromDataset(item, RangeModulatorGatingStopValue, "1", "1C", "RangeModulatorSettingsSequence"); + getAndCheckElementFromDataset(item, RangeModulatorGatingStartWaterEquivalentThickness, "1", "3", "RangeModulatorSettingsSequence"); + getAndCheckElementFromDataset(item, RangeModulatorGatingStopWaterEquivalentThickness, "1", "3", "RangeModulatorSettingsSequence"); + getAndCheckElementFromDataset(item, IsocenterToRangeModulatorDistance, "1", "3", "RangeModulatorSettingsSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmIntegerString(ReferencedRangeModulatorNumber), "1", "1", "RangeModulatorSettingsSequence"); + addElementToDataset(result, item, new DcmFloatingPointSingle(RangeModulatorGatingStartValue), "1", "1C", "RangeModulatorSettingsSequence"); + addElementToDataset(result, item, new DcmFloatingPointSingle(RangeModulatorGatingStopValue), "1", "1C", "RangeModulatorSettingsSequence"); + addElementToDataset(result, item, new DcmFloatingPointSingle(RangeModulatorGatingStartWaterEquivalentThickness), "1", "3", "RangeModulatorSettingsSequence"); + addElementToDataset(result, item, new DcmFloatingPointSingle(RangeModulatorGatingStopWaterEquivalentThickness), "1", "3", "RangeModulatorSettingsSequence"); + addElementToDataset(result, item, new DcmFloatingPointSingle(IsocenterToRangeModulatorDistance), "1", "3", "RangeModulatorSettingsSequence"); + } + return result; +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::getIsocenterToRangeModulatorDistance(Float32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointSingle &, IsocenterToRangeModulatorDistance).getFloat32(value, pos); +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::getRangeModulatorGatingStartValue(Float32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointSingle &, RangeModulatorGatingStartValue).getFloat32(value, pos); +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::getRangeModulatorGatingStartWaterEquivalentThickness(Float32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointSingle &, RangeModulatorGatingStartWaterEquivalentThickness).getFloat32(value, pos); +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::getRangeModulatorGatingStopValue(Float32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointSingle &, RangeModulatorGatingStopValue).getFloat32(value, pos); +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::getRangeModulatorGatingStopWaterEquivalentThickness(Float32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointSingle &, RangeModulatorGatingStopWaterEquivalentThickness).getFloat32(value, pos); +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::getReferencedRangeModulatorNumber(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedRangeModulatorNumber, value, pos); +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::getReferencedRangeModulatorNumber(Sint32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmIntegerString &, ReferencedRangeModulatorNumber).getSint32(value, pos); +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::setIsocenterToRangeModulatorDistance(const Float32 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return IsocenterToRangeModulatorDistance.putFloat32(value, pos); +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::setRangeModulatorGatingStartValue(const Float32 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return RangeModulatorGatingStartValue.putFloat32(value, pos); +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::setRangeModulatorGatingStartWaterEquivalentThickness(const Float32 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return RangeModulatorGatingStartWaterEquivalentThickness.putFloat32(value, pos); +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::setRangeModulatorGatingStopValue(const Float32 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return RangeModulatorGatingStopValue.putFloat32(value, pos); +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::setRangeModulatorGatingStopWaterEquivalentThickness(const Float32 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return RangeModulatorGatingStopWaterEquivalentThickness.putFloat32(value, pos); +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::setReferencedRangeModulatorNumber(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedRangeModulatorNumber.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::DRTRangeModulatorSettingsSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::DRTRangeModulatorSettingsSequenceInRTIonBeamsModule(const DRTRangeModulatorSettingsSequenceInRTIonBeamsModule ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTRangeModulatorSettingsSequenceInRTIonBeamsModule &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::operator=(const DRTRangeModulatorSettingsSequenceInRTIonBeamsModule ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::~DRTRangeModulatorSettingsSequenceInRTIonBeamsModule() +{ + clear(); +} + + +void DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_RangeModulatorSettingsSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_RangeModulatorSettingsSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_RangeModulatorSettingsSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtrmss2.cc b/dcmrt/libsrc/drtrmss2.cc new file mode 100644 index 00000000..0ecbd5b7 --- /dev/null +++ b/dcmrt/libsrc/drtrmss2.cc @@ -0,0 +1,605 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtrmss2.h" + + +// --- item class --- + +DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + RangeModulatorGatingStartValue(DCM_RangeModulatorGatingStartValue), + RangeModulatorGatingStopValue(DCM_RangeModulatorGatingStopValue), + ReferencedRangeModulatorNumber(DCM_ReferencedRangeModulatorNumber) +{ +} + + +DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + RangeModulatorGatingStartValue(copy.RangeModulatorGatingStartValue), + RangeModulatorGatingStopValue(copy.RangeModulatorGatingStopValue), + ReferencedRangeModulatorNumber(copy.ReferencedRangeModulatorNumber) +{ +} + + +DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::~Item() +{ +} + + +DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + RangeModulatorGatingStartValue = copy.RangeModulatorGatingStartValue; + RangeModulatorGatingStopValue = copy.RangeModulatorGatingStopValue; + ReferencedRangeModulatorNumber = copy.ReferencedRangeModulatorNumber; + } + return *this; +} + + +void DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + ReferencedRangeModulatorNumber.clear(); + RangeModulatorGatingStartValue.clear(); + RangeModulatorGatingStopValue.clear(); + } +} + + +OFBool DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::isEmpty() +{ + return ReferencedRangeModulatorNumber.isEmpty() && + RangeModulatorGatingStartValue.isEmpty() && + RangeModulatorGatingStopValue.isEmpty(); +} + + +OFBool DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, ReferencedRangeModulatorNumber, "1", "1", "RangeModulatorSettingsSequence"); + getAndCheckElementFromDataset(item, RangeModulatorGatingStartValue, "1", "1C", "RangeModulatorSettingsSequence"); + getAndCheckElementFromDataset(item, RangeModulatorGatingStopValue, "1", "1C", "RangeModulatorSettingsSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmIntegerString(ReferencedRangeModulatorNumber), "1", "1", "RangeModulatorSettingsSequence"); + addElementToDataset(result, item, new DcmFloatingPointSingle(RangeModulatorGatingStartValue), "1", "1C", "RangeModulatorSettingsSequence"); + addElementToDataset(result, item, new DcmFloatingPointSingle(RangeModulatorGatingStopValue), "1", "1C", "RangeModulatorSettingsSequence"); + } + return result; +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getRangeModulatorGatingStartValue(Float32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointSingle &, RangeModulatorGatingStartValue).getFloat32(value, pos); +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getRangeModulatorGatingStopValue(Float32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointSingle &, RangeModulatorGatingStopValue).getFloat32(value, pos); +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getReferencedRangeModulatorNumber(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedRangeModulatorNumber, value, pos); +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getReferencedRangeModulatorNumber(Sint32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmIntegerString &, ReferencedRangeModulatorNumber).getSint32(value, pos); +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::setRangeModulatorGatingStartValue(const Float32 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return RangeModulatorGatingStartValue.putFloat32(value, pos); +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::setRangeModulatorGatingStopValue(const Float32 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return RangeModulatorGatingStopValue.putFloat32(value, pos); +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::setReferencedRangeModulatorNumber(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedRangeModulatorNumber.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule(const DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::operator=(const DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::~DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule() +{ + clear(); +} + + +void DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_RangeModulatorSettingsSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_RangeModulatorSettingsSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_RangeModulatorSettingsSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtrmss6.cc b/dcmrt/libsrc/drtrmss6.cc deleted file mode 100644 index 75636e32..00000000 --- a/dcmrt/libsrc/drtrmss6.cc +++ /dev/null @@ -1,678 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Source file for class DRTRangeModulatorSettingsSequenceInRTIonBeamsModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/dcmrt/seq/drtrmss6.h" - - -// --- item class --- - -DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::Item(const OFBool emptyDefaultItem) - : EmptyDefaultItem(emptyDefaultItem), - IsocenterToRangeModulatorDistance(DCM_IsocenterToRangeModulatorDistance), - RangeModulatorGatingStartValue(DCM_RangeModulatorGatingStartValue), - RangeModulatorGatingStartWaterEquivalentThickness(DCM_RangeModulatorGatingStartWaterEquivalentThickness), - RangeModulatorGatingStopValue(DCM_RangeModulatorGatingStopValue), - RangeModulatorGatingStopWaterEquivalentThickness(DCM_RangeModulatorGatingStopWaterEquivalentThickness), - ReferencedRangeModulatorNumber(DCM_ReferencedRangeModulatorNumber) -{ -} - - -DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::Item(const Item ©) - : EmptyDefaultItem(copy.EmptyDefaultItem), - IsocenterToRangeModulatorDistance(copy.IsocenterToRangeModulatorDistance), - RangeModulatorGatingStartValue(copy.RangeModulatorGatingStartValue), - RangeModulatorGatingStartWaterEquivalentThickness(copy.RangeModulatorGatingStartWaterEquivalentThickness), - RangeModulatorGatingStopValue(copy.RangeModulatorGatingStopValue), - RangeModulatorGatingStopWaterEquivalentThickness(copy.RangeModulatorGatingStopWaterEquivalentThickness), - ReferencedRangeModulatorNumber(copy.ReferencedRangeModulatorNumber) -{ -} - - -DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::~Item() -{ -} - - -DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::operator=(const Item ©) -{ - if (this != ©) - { - EmptyDefaultItem = copy.EmptyDefaultItem; - IsocenterToRangeModulatorDistance = copy.IsocenterToRangeModulatorDistance; - RangeModulatorGatingStartValue = copy.RangeModulatorGatingStartValue; - RangeModulatorGatingStartWaterEquivalentThickness = copy.RangeModulatorGatingStartWaterEquivalentThickness; - RangeModulatorGatingStopValue = copy.RangeModulatorGatingStopValue; - RangeModulatorGatingStopWaterEquivalentThickness = copy.RangeModulatorGatingStopWaterEquivalentThickness; - ReferencedRangeModulatorNumber = copy.ReferencedRangeModulatorNumber; - } - return *this; -} - - -void DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::clear() -{ - if (!EmptyDefaultItem) - { - /* clear all DICOM attributes */ - ReferencedRangeModulatorNumber.clear(); - RangeModulatorGatingStartValue.clear(); - RangeModulatorGatingStopValue.clear(); - RangeModulatorGatingStartWaterEquivalentThickness.clear(); - RangeModulatorGatingStopWaterEquivalentThickness.clear(); - IsocenterToRangeModulatorDistance.clear(); - } -} - - -OFBool DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::isEmpty() -{ - return ReferencedRangeModulatorNumber.isEmpty() && - RangeModulatorGatingStartValue.isEmpty() && - RangeModulatorGatingStopValue.isEmpty() && - RangeModulatorGatingStartWaterEquivalentThickness.isEmpty() && - RangeModulatorGatingStopWaterEquivalentThickness.isEmpty() && - IsocenterToRangeModulatorDistance.isEmpty(); -} - - -OFBool DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::isValid() const -{ - return !EmptyDefaultItem; -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::read(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - /* re-initialize object */ - clear(); - getAndCheckElementFromDataset(item, ReferencedRangeModulatorNumber, "1", "1", "RangeModulatorSettingsSequence"); - getAndCheckElementFromDataset(item, RangeModulatorGatingStartValue, "1", "1C", "RangeModulatorSettingsSequence"); - getAndCheckElementFromDataset(item, RangeModulatorGatingStopValue, "1", "1C", "RangeModulatorSettingsSequence"); - getAndCheckElementFromDataset(item, RangeModulatorGatingStartWaterEquivalentThickness, "1", "3", "RangeModulatorSettingsSequence"); - getAndCheckElementFromDataset(item, RangeModulatorGatingStopWaterEquivalentThickness, "1", "3", "RangeModulatorSettingsSequence"); - getAndCheckElementFromDataset(item, IsocenterToRangeModulatorDistance, "1", "3", "RangeModulatorSettingsSequence"); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::write(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = EC_Normal; - addElementToDataset(result, item, new DcmIntegerString(ReferencedRangeModulatorNumber), "1", "1", "RangeModulatorSettingsSequence"); - addElementToDataset(result, item, new DcmFloatingPointSingle(RangeModulatorGatingStartValue), "1", "1C", "RangeModulatorSettingsSequence"); - addElementToDataset(result, item, new DcmFloatingPointSingle(RangeModulatorGatingStopValue), "1", "1C", "RangeModulatorSettingsSequence"); - addElementToDataset(result, item, new DcmFloatingPointSingle(RangeModulatorGatingStartWaterEquivalentThickness), "1", "3", "RangeModulatorSettingsSequence"); - addElementToDataset(result, item, new DcmFloatingPointSingle(RangeModulatorGatingStopWaterEquivalentThickness), "1", "3", "RangeModulatorSettingsSequence"); - addElementToDataset(result, item, new DcmFloatingPointSingle(IsocenterToRangeModulatorDistance), "1", "3", "RangeModulatorSettingsSequence"); - } - return result; -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::getIsocenterToRangeModulatorDistance(Float32 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmFloatingPointSingle &, IsocenterToRangeModulatorDistance).getFloat32(value, pos); -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::getRangeModulatorGatingStartValue(Float32 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmFloatingPointSingle &, RangeModulatorGatingStartValue).getFloat32(value, pos); -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::getRangeModulatorGatingStartWaterEquivalentThickness(Float32 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmFloatingPointSingle &, RangeModulatorGatingStartWaterEquivalentThickness).getFloat32(value, pos); -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::getRangeModulatorGatingStopValue(Float32 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmFloatingPointSingle &, RangeModulatorGatingStopValue).getFloat32(value, pos); -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::getRangeModulatorGatingStopWaterEquivalentThickness(Float32 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmFloatingPointSingle &, RangeModulatorGatingStopWaterEquivalentThickness).getFloat32(value, pos); -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::getReferencedRangeModulatorNumber(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ReferencedRangeModulatorNumber, value, pos); -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::getReferencedRangeModulatorNumber(Sint32 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmIntegerString &, ReferencedRangeModulatorNumber).getSint32(value, pos); -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::setIsocenterToRangeModulatorDistance(const Float32 value, const unsigned long pos) -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return IsocenterToRangeModulatorDistance.putFloat32(value, pos); -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::setRangeModulatorGatingStartValue(const Float32 value, const unsigned long pos) -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return RangeModulatorGatingStartValue.putFloat32(value, pos); -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::setRangeModulatorGatingStartWaterEquivalentThickness(const Float32 value, const unsigned long pos) -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return RangeModulatorGatingStartWaterEquivalentThickness.putFloat32(value, pos); -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::setRangeModulatorGatingStopValue(const Float32 value, const unsigned long pos) -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return RangeModulatorGatingStopValue.putFloat32(value, pos); -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::setRangeModulatorGatingStopWaterEquivalentThickness(const Float32 value, const unsigned long pos) -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return RangeModulatorGatingStopWaterEquivalentThickness.putFloat32(value, pos); -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::setReferencedRangeModulatorNumber(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ReferencedRangeModulatorNumber.putOFStringArray(value); - } - return result; -} - - -// --- sequence class --- - -DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::DRTRangeModulatorSettingsSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence) - : EmptyDefaultSequence(emptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - CurrentItem = SequenceOfItems.end(); -} - - -DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::DRTRangeModulatorSettingsSequenceInRTIonBeamsModule(const DRTRangeModulatorSettingsSequenceInRTIonBeamsModule ©) - : EmptyDefaultSequence(copy.EmptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); -} - - -DRTRangeModulatorSettingsSequenceInRTIonBeamsModule &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::operator=(const DRTRangeModulatorSettingsSequenceInRTIonBeamsModule ©) -{ - if (this != ©) - { - clear(); - EmptyDefaultSequence = copy.EmptyDefaultSequence; - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); - } - return *this; -} - - -DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::~DRTRangeModulatorSettingsSequenceInRTIonBeamsModule() -{ - clear(); -} - - -void DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::clear() -{ - if (!EmptyDefaultSequence) - { - CurrentItem = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* delete all items and free memory */ - while (CurrentItem != last) - { - delete (*CurrentItem); - CurrentItem = SequenceOfItems.erase(CurrentItem); - } - /* make sure that the list is empty */ - SequenceOfItems.clear(); - CurrentItem = SequenceOfItems.end(); - } -} - - -OFBool DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::isEmpty() -{ - return SequenceOfItems.empty(); -} - - -OFBool DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::isValid() const -{ - return !EmptyDefaultSequence; -} - - -size_t DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getNumberOfItems() const -{ - return SequenceOfItems.size(); -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::gotoFirstItem() -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - CurrentItem = SequenceOfItems.begin(); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::gotoNextItem() -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - ++CurrentItem; - result = EC_Normal; - } - return result; -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num) -{ - return gotoItem(num, CurrentItem); -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getCurrentItem(Item *&item) const -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - item = *CurrentItem; - result = EC_Normal; - } - return result; -} - - -DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getCurrentItem() -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -const DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getCurrentItem() const -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item) -{ - OFListIterator(Item *) iterator; - OFCondition result = gotoItem(num, iterator); - if (result.good()) - item = *iterator; - return result; -} - - -DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getItem(const size_t num) -{ - OFListIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -const DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getItem(const size_t num) const -{ - OFListConstIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::operator[](const size_t num) -{ - return getItem(num); -} - - -const DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::operator[](const size_t num) const -{ - return getItem(num); -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::addItem(Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.push_back(item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } - return result; -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - result = gotoItem(pos, iterator); - if (result.good()) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.insert(iterator, 1, item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } else - result = addItem(item); - } - return result; -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::removeItem(const size_t pos) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - if (gotoItem(pos, iterator).good()) - { - delete *iterator; - iterator = SequenceOfItems.erase(iterator); - result = EC_Normal; - } else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - /* re-initialize object */ - clear(); - /* retrieve sequence element from dataset */ - DcmSequenceOfItems *sequence; - result = dataset.findAndGetSequence(DCM_RangeModulatorSettingsSequence, sequence); - if (sequence != NULL) - { - if (checkElementValue(*sequence, card, type, result, moduleName)) - { - DcmStack stack; - OFBool first = OFTrue; - /* iterate over all sequence items */ - while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) - { - DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); - if (ditem != NULL) - { - Item *item = new Item(); - if (item != NULL) - { - result = item->read(*ditem); - if (result.good()) - { - /* append new item to the end of the list */ - SequenceOfItems.push_back(item); - first = OFFalse; - } - } else - result = EC_MemoryExhausted; - } else - result = EC_CorruptedData; - } - } - } else { - DcmSequenceOfItems element(DCM_RangeModulatorSettingsSequence); - checkElementValue(element, card, type, result, moduleName); - } - } - return result; -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - result = EC_MemoryExhausted; - DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_RangeModulatorSettingsSequence); - if (sequence != NULL) - { - result = EC_Normal; - /* an empty optional sequence is not written */ - if ((type == "2") || !SequenceOfItems.empty()) - { - OFListIterator(Item *) iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* iterate over all sequence items */ - while (result.good() && (iterator != last)) - { - DcmItem *item = new DcmItem(); - if (item != NULL) - { - /* append new item to the end of the sequence */ - result = sequence->append(item); - if (result.good()) - { - result = (*iterator)->write(*item); - ++iterator; - } else - delete item; - } else - result = EC_MemoryExhausted; - } - if (result.good()) - { - /* insert sequence element into the dataset */ - result = dataset.insert(sequence, OFTrue /*replaceOld*/); - } - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - if (result.good()) - { - /* forget reference to sequence object (avoid deletion below) */ - sequence = NULL; - } - } - else if (type == "1") - { - /* empty type 1 sequence not allowed */ - result = RT_EC_InvalidValue; - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - } - /* delete sequence (if not inserted into the dataset) */ - delete sequence; - } - } - return result; -} - - -// end of source file diff --git a/dcmrt/libsrc/drtrmss7.cc b/dcmrt/libsrc/drtrmss7.cc deleted file mode 100644 index f6422d6d..00000000 --- a/dcmrt/libsrc/drtrmss7.cc +++ /dev/null @@ -1,603 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Source file for class DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/dcmrt/seq/drtrmss7.h" - - -// --- item class --- - -DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::Item(const OFBool emptyDefaultItem) - : EmptyDefaultItem(emptyDefaultItem), - RangeModulatorGatingStartValue(DCM_RangeModulatorGatingStartValue), - RangeModulatorGatingStopValue(DCM_RangeModulatorGatingStopValue), - ReferencedRangeModulatorNumber(DCM_ReferencedRangeModulatorNumber) -{ -} - - -DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::Item(const Item ©) - : EmptyDefaultItem(copy.EmptyDefaultItem), - RangeModulatorGatingStartValue(copy.RangeModulatorGatingStartValue), - RangeModulatorGatingStopValue(copy.RangeModulatorGatingStopValue), - ReferencedRangeModulatorNumber(copy.ReferencedRangeModulatorNumber) -{ -} - - -DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::~Item() -{ -} - - -DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::operator=(const Item ©) -{ - if (this != ©) - { - EmptyDefaultItem = copy.EmptyDefaultItem; - RangeModulatorGatingStartValue = copy.RangeModulatorGatingStartValue; - RangeModulatorGatingStopValue = copy.RangeModulatorGatingStopValue; - ReferencedRangeModulatorNumber = copy.ReferencedRangeModulatorNumber; - } - return *this; -} - - -void DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::clear() -{ - if (!EmptyDefaultItem) - { - /* clear all DICOM attributes */ - ReferencedRangeModulatorNumber.clear(); - RangeModulatorGatingStartValue.clear(); - RangeModulatorGatingStopValue.clear(); - } -} - - -OFBool DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::isEmpty() -{ - return ReferencedRangeModulatorNumber.isEmpty() && - RangeModulatorGatingStartValue.isEmpty() && - RangeModulatorGatingStopValue.isEmpty(); -} - - -OFBool DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::isValid() const -{ - return !EmptyDefaultItem; -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::read(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - /* re-initialize object */ - clear(); - getAndCheckElementFromDataset(item, ReferencedRangeModulatorNumber, "1", "1", "RangeModulatorSettingsSequence"); - getAndCheckElementFromDataset(item, RangeModulatorGatingStartValue, "1", "1C", "RangeModulatorSettingsSequence"); - getAndCheckElementFromDataset(item, RangeModulatorGatingStopValue, "1", "1C", "RangeModulatorSettingsSequence"); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::write(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = EC_Normal; - addElementToDataset(result, item, new DcmIntegerString(ReferencedRangeModulatorNumber), "1", "1", "RangeModulatorSettingsSequence"); - addElementToDataset(result, item, new DcmFloatingPointSingle(RangeModulatorGatingStartValue), "1", "1C", "RangeModulatorSettingsSequence"); - addElementToDataset(result, item, new DcmFloatingPointSingle(RangeModulatorGatingStopValue), "1", "1C", "RangeModulatorSettingsSequence"); - } - return result; -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getRangeModulatorGatingStartValue(Float32 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmFloatingPointSingle &, RangeModulatorGatingStartValue).getFloat32(value, pos); -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getRangeModulatorGatingStopValue(Float32 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmFloatingPointSingle &, RangeModulatorGatingStopValue).getFloat32(value, pos); -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getReferencedRangeModulatorNumber(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ReferencedRangeModulatorNumber, value, pos); -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getReferencedRangeModulatorNumber(Sint32 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmIntegerString &, ReferencedRangeModulatorNumber).getSint32(value, pos); -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::setRangeModulatorGatingStartValue(const Float32 value, const unsigned long pos) -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return RangeModulatorGatingStartValue.putFloat32(value, pos); -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::setRangeModulatorGatingStopValue(const Float32 value, const unsigned long pos) -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return RangeModulatorGatingStopValue.putFloat32(value, pos); -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::setReferencedRangeModulatorNumber(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ReferencedRangeModulatorNumber.putOFStringArray(value); - } - return result; -} - - -// --- sequence class --- - -DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence) - : EmptyDefaultSequence(emptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - CurrentItem = SequenceOfItems.end(); -} - - -DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule(const DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule ©) - : EmptyDefaultSequence(copy.EmptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); -} - - -DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::operator=(const DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule ©) -{ - if (this != ©) - { - clear(); - EmptyDefaultSequence = copy.EmptyDefaultSequence; - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); - } - return *this; -} - - -DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::~DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule() -{ - clear(); -} - - -void DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::clear() -{ - if (!EmptyDefaultSequence) - { - CurrentItem = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* delete all items and free memory */ - while (CurrentItem != last) - { - delete (*CurrentItem); - CurrentItem = SequenceOfItems.erase(CurrentItem); - } - /* make sure that the list is empty */ - SequenceOfItems.clear(); - CurrentItem = SequenceOfItems.end(); - } -} - - -OFBool DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::isEmpty() -{ - return SequenceOfItems.empty(); -} - - -OFBool DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::isValid() const -{ - return !EmptyDefaultSequence; -} - - -size_t DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getNumberOfItems() const -{ - return SequenceOfItems.size(); -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::gotoFirstItem() -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - CurrentItem = SequenceOfItems.begin(); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::gotoNextItem() -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - ++CurrentItem; - result = EC_Normal; - } - return result; -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num) -{ - return gotoItem(num, CurrentItem); -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem(Item *&item) const -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - item = *CurrentItem; - result = EC_Normal; - } - return result; -} - - -DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem() -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -const DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem() const -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num, Item *&item) -{ - OFListIterator(Item *) iterator; - OFCondition result = gotoItem(num, iterator); - if (result.good()) - item = *iterator; - return result; -} - - -DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) -{ - OFListIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -const DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) const -{ - OFListConstIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) -{ - return getItem(num); -} - - -const DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) const -{ - return getItem(num); -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::addItem(Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.push_back(item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } - return result; -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::insertItem(const size_t pos, Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - result = gotoItem(pos, iterator); - if (result.good()) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.insert(iterator, 1, item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } else - result = addItem(item); - } - return result; -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::removeItem(const size_t pos) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - if (gotoItem(pos, iterator).good()) - { - delete *iterator; - iterator = SequenceOfItems.erase(iterator); - result = EC_Normal; - } else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - /* re-initialize object */ - clear(); - /* retrieve sequence element from dataset */ - DcmSequenceOfItems *sequence; - result = dataset.findAndGetSequence(DCM_RangeModulatorSettingsSequence, sequence); - if (sequence != NULL) - { - if (checkElementValue(*sequence, card, type, result, moduleName)) - { - DcmStack stack; - OFBool first = OFTrue; - /* iterate over all sequence items */ - while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) - { - DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); - if (ditem != NULL) - { - Item *item = new Item(); - if (item != NULL) - { - result = item->read(*ditem); - if (result.good()) - { - /* append new item to the end of the list */ - SequenceOfItems.push_back(item); - first = OFFalse; - } - } else - result = EC_MemoryExhausted; - } else - result = EC_CorruptedData; - } - } - } else { - DcmSequenceOfItems element(DCM_RangeModulatorSettingsSequence); - checkElementValue(element, card, type, result, moduleName); - } - } - return result; -} - - -OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - result = EC_MemoryExhausted; - DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_RangeModulatorSettingsSequence); - if (sequence != NULL) - { - result = EC_Normal; - /* an empty optional sequence is not written */ - if ((type == "2") || !SequenceOfItems.empty()) - { - OFListIterator(Item *) iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* iterate over all sequence items */ - while (result.good() && (iterator != last)) - { - DcmItem *item = new DcmItem(); - if (item != NULL) - { - /* append new item to the end of the sequence */ - result = sequence->append(item); - if (result.good()) - { - result = (*iterator)->write(*item); - ++iterator; - } else - delete item; - } else - result = EC_MemoryExhausted; - } - if (result.good()) - { - /* insert sequence element into the dataset */ - result = dataset.insert(sequence, OFTrue /*replaceOld*/); - } - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - if (result.good()) - { - /* forget reference to sequence object (avoid deletion below) */ - sequence = NULL; - } - } - else if (type == "1") - { - /* empty type 1 sequence not allowed */ - result = RT_EC_InvalidValue; - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - } - /* delete sequence (if not inserted into the dataset) */ - delete sequence; - } - } - return result; -} - - -// end of source file diff --git a/dcmrt/libsrc/drtrpcs.cc b/dcmrt/libsrc/drtrpcs.cc index 68d49a13..0b3014e2 100644 --- a/dcmrt/libsrc/drtrpcs.cc +++ b/dcmrt/libsrc/drtrpcs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTRequestedProcedureCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -656,10 +656,12 @@ OFCondition DRTRequestedProcedureCodeSequence::gotoFirstItem() OFCondition DRTRequestedProcedureCodeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrpis.cc b/dcmrt/libsrc/drtrpis.cc index 34a5fc44..7fdc10b7 100644 --- a/dcmrt/libsrc/drtrpis.cc +++ b/dcmrt/libsrc/drtrpis.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTReferringPhysicianIdentificationSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -24,6 +24,8 @@ DRTReferringPhysicianIdentificationSequence::Item::Item(const OFBool emptyDefaul InstitutionAddress(DCM_InstitutionAddress), InstitutionCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), InstitutionName(DCM_InstitutionName), + InstitutionalDepartmentName(DCM_InstitutionalDepartmentName), + InstitutionalDepartmentTypeCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), PersonAddress(DCM_PersonAddress), PersonIdentificationCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), PersonTelecomInformation(DCM_PersonTelecomInformation), @@ -37,6 +39,8 @@ DRTReferringPhysicianIdentificationSequence::Item::Item(const Item ©) InstitutionAddress(copy.InstitutionAddress), InstitutionCodeSequence(copy.InstitutionCodeSequence), InstitutionName(copy.InstitutionName), + InstitutionalDepartmentName(copy.InstitutionalDepartmentName), + InstitutionalDepartmentTypeCodeSequence(copy.InstitutionalDepartmentTypeCodeSequence), PersonAddress(copy.PersonAddress), PersonIdentificationCodeSequence(copy.PersonIdentificationCodeSequence), PersonTelecomInformation(copy.PersonTelecomInformation), @@ -58,6 +62,8 @@ DRTReferringPhysicianIdentificationSequence::Item &DRTReferringPhysicianIdentifi InstitutionAddress = copy.InstitutionAddress; InstitutionCodeSequence = copy.InstitutionCodeSequence; InstitutionName = copy.InstitutionName; + InstitutionalDepartmentName = copy.InstitutionalDepartmentName; + InstitutionalDepartmentTypeCodeSequence = copy.InstitutionalDepartmentTypeCodeSequence; PersonAddress = copy.PersonAddress; PersonIdentificationCodeSequence = copy.PersonIdentificationCodeSequence; PersonTelecomInformation = copy.PersonTelecomInformation; @@ -79,6 +85,8 @@ void DRTReferringPhysicianIdentificationSequence::Item::clear() InstitutionName.clear(); InstitutionAddress.clear(); InstitutionCodeSequence.clear(); + InstitutionalDepartmentName.clear(); + InstitutionalDepartmentTypeCodeSequence.clear(); } } @@ -91,7 +99,9 @@ OFBool DRTReferringPhysicianIdentificationSequence::Item::isEmpty() PersonTelecomInformation.isEmpty() && InstitutionName.isEmpty() && InstitutionAddress.isEmpty() && - InstitutionCodeSequence.isEmpty(); + InstitutionCodeSequence.isEmpty() && + InstitutionalDepartmentName.isEmpty() && + InstitutionalDepartmentTypeCodeSequence.isEmpty(); } @@ -115,6 +125,8 @@ OFCondition DRTReferringPhysicianIdentificationSequence::Item::read(DcmItem &ite getAndCheckElementFromDataset(item, InstitutionName, "1", "1C", "ReferringPhysicianIdentificationSequence"); getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "ReferringPhysicianIdentificationSequence"); InstitutionCodeSequence.read(item, "1-n", "1C", "ReferringPhysicianIdentificationSequence"); + getAndCheckElementFromDataset(item, InstitutionalDepartmentName, "1", "3", "ReferringPhysicianIdentificationSequence"); + InstitutionalDepartmentTypeCodeSequence.read(item, "1-n", "3", "ReferringPhysicianIdentificationSequence"); result = EC_Normal; } return result; @@ -134,6 +146,8 @@ OFCondition DRTReferringPhysicianIdentificationSequence::Item::write(DcmItem &it addElementToDataset(result, item, new DcmLongString(InstitutionName), "1", "1C", "ReferringPhysicianIdentificationSequence"); addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "ReferringPhysicianIdentificationSequence"); if (result.good()) result = InstitutionCodeSequence.write(item, "1-n", "1C", "ReferringPhysicianIdentificationSequence"); + addElementToDataset(result, item, new DcmLongString(InstitutionalDepartmentName), "1", "3", "ReferringPhysicianIdentificationSequence"); + if (result.good()) result = InstitutionalDepartmentTypeCodeSequence.write(item, "1-n", "3", "ReferringPhysicianIdentificationSequence"); } return result; } @@ -157,6 +171,15 @@ OFCondition DRTReferringPhysicianIdentificationSequence::Item::getInstitutionNam } +OFCondition DRTReferringPhysicianIdentificationSequence::Item::getInstitutionalDepartmentName(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(InstitutionalDepartmentName, value, pos); +} + + OFCondition DRTReferringPhysicianIdentificationSequence::Item::getPersonAddress(OFString &value, const signed long pos) const { if (EmptyDefaultItem) @@ -210,6 +233,19 @@ OFCondition DRTReferringPhysicianIdentificationSequence::Item::setInstitutionNam } +OFCondition DRTReferringPhysicianIdentificationSequence::Item::setInstitutionalDepartmentName(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = InstitutionalDepartmentName.putOFStringArray(value); + } + return result; +} + + OFCondition DRTReferringPhysicianIdentificationSequence::Item::setPersonAddress(const OFString &value, const OFBool check) { OFCondition result = EC_IllegalCall; @@ -373,10 +409,12 @@ OFCondition DRTReferringPhysicianIdentificationSequence::gotoFirstItem() OFCondition DRTReferringPhysicianIdentificationSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrppcs.cc b/dcmrt/libsrc/drtrppcs.cc index e8a021bf..acd30e50 100644 --- a/dcmrt/libsrc/drtrppcs.cc +++ b/dcmrt/libsrc/drtrppcs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTReasonForPerformedProcedureCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -656,10 +656,12 @@ OFCondition DRTReasonForPerformedProcedureCodeSequence::gotoFirstItem() OFCondition DRTReasonForPerformedProcedureCodeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrpphs.cc b/dcmrt/libsrc/drtrpphs.cc index 5f2d84ca..807b9d42 100644 --- a/dcmrt/libsrc/drtrpphs.cc +++ b/dcmrt/libsrc/drtrpphs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTReferencedPatientPhotoSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -343,10 +343,12 @@ OFCondition DRTReferencedPatientPhotoSequence::gotoFirstItem() OFCondition DRTReferencedPatientPhotoSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrpprs.cc b/dcmrt/libsrc/drtrpprs.cc new file mode 100644 index 00000000..2f6a040d --- /dev/null +++ b/dcmrt/libsrc/drtrpprs.cc @@ -0,0 +1,625 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTReferencedPerformedProtocolSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtrpprs.h" + + +// --- item class --- + +DRTReferencedPerformedProtocolSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + ReferencedSOPClassUID(DCM_ReferencedSOPClassUID), + ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID), + SourceAcquisitionProtocolElementNumber(DCM_SourceAcquisitionProtocolElementNumber), + SourceReconstructionProtocolElementNumber(DCM_SourceReconstructionProtocolElementNumber) +{ +} + + +DRTReferencedPerformedProtocolSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + ReferencedSOPClassUID(copy.ReferencedSOPClassUID), + ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID), + SourceAcquisitionProtocolElementNumber(copy.SourceAcquisitionProtocolElementNumber), + SourceReconstructionProtocolElementNumber(copy.SourceReconstructionProtocolElementNumber) +{ +} + + +DRTReferencedPerformedProtocolSequence::Item::~Item() +{ +} + + +DRTReferencedPerformedProtocolSequence::Item &DRTReferencedPerformedProtocolSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + ReferencedSOPClassUID = copy.ReferencedSOPClassUID; + ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID; + SourceAcquisitionProtocolElementNumber = copy.SourceAcquisitionProtocolElementNumber; + SourceReconstructionProtocolElementNumber = copy.SourceReconstructionProtocolElementNumber; + } + return *this; +} + + +void DRTReferencedPerformedProtocolSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + ReferencedSOPClassUID.clear(); + ReferencedSOPInstanceUID.clear(); + SourceAcquisitionProtocolElementNumber.clear(); + SourceReconstructionProtocolElementNumber.clear(); + } +} + + +OFBool DRTReferencedPerformedProtocolSequence::Item::isEmpty() +{ + return ReferencedSOPClassUID.isEmpty() && + ReferencedSOPInstanceUID.isEmpty() && + SourceAcquisitionProtocolElementNumber.isEmpty() && + SourceReconstructionProtocolElementNumber.isEmpty(); +} + + +OFBool DRTReferencedPerformedProtocolSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTReferencedPerformedProtocolSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedPerformedProtocolSequence"); + getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedPerformedProtocolSequence"); + getAndCheckElementFromDataset(item, SourceAcquisitionProtocolElementNumber, "1-n", "3", "ReferencedPerformedProtocolSequence"); + getAndCheckElementFromDataset(item, SourceReconstructionProtocolElementNumber, "1-n", "3", "ReferencedPerformedProtocolSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReferencedPerformedProtocolSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedPerformedProtocolSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedPerformedProtocolSequence"); + addElementToDataset(result, item, new DcmUnsignedShort(SourceAcquisitionProtocolElementNumber), "1-n", "3", "ReferencedPerformedProtocolSequence"); + addElementToDataset(result, item, new DcmUnsignedShort(SourceReconstructionProtocolElementNumber), "1-n", "3", "ReferencedPerformedProtocolSequence"); + } + return result; +} + + +OFCondition DRTReferencedPerformedProtocolSequence::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedSOPClassUID, value, pos); +} + + +OFCondition DRTReferencedPerformedProtocolSequence::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos); +} + + +OFCondition DRTReferencedPerformedProtocolSequence::Item::getSourceAcquisitionProtocolElementNumber(Uint16 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmUnsignedShort &, SourceAcquisitionProtocolElementNumber).getUint16(value, pos); +} + + +OFCondition DRTReferencedPerformedProtocolSequence::Item::getSourceReconstructionProtocolElementNumber(Uint16 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmUnsignedShort &, SourceReconstructionProtocolElementNumber).getUint16(value, pos); +} + + +OFCondition DRTReferencedPerformedProtocolSequence::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedSOPClassUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedPerformedProtocolSequence::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedSOPInstanceUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedPerformedProtocolSequence::Item::setSourceAcquisitionProtocolElementNumber(const Uint16 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return SourceAcquisitionProtocolElementNumber.putUint16(value, pos); +} + + +OFCondition DRTReferencedPerformedProtocolSequence::Item::setSourceReconstructionProtocolElementNumber(const Uint16 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return SourceReconstructionProtocolElementNumber.putUint16(value, pos); +} + + +// --- sequence class --- + +DRTReferencedPerformedProtocolSequence::DRTReferencedPerformedProtocolSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTReferencedPerformedProtocolSequence::DRTReferencedPerformedProtocolSequence(const DRTReferencedPerformedProtocolSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTReferencedPerformedProtocolSequence &DRTReferencedPerformedProtocolSequence::operator=(const DRTReferencedPerformedProtocolSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTReferencedPerformedProtocolSequence::~DRTReferencedPerformedProtocolSequence() +{ + clear(); +} + + +void DRTReferencedPerformedProtocolSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTReferencedPerformedProtocolSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTReferencedPerformedProtocolSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTReferencedPerformedProtocolSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTReferencedPerformedProtocolSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReferencedPerformedProtocolSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTReferencedPerformedProtocolSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedPerformedProtocolSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedPerformedProtocolSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTReferencedPerformedProtocolSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTReferencedPerformedProtocolSequence::Item &DRTReferencedPerformedProtocolSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTReferencedPerformedProtocolSequence::Item &DRTReferencedPerformedProtocolSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTReferencedPerformedProtocolSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTReferencedPerformedProtocolSequence::Item &DRTReferencedPerformedProtocolSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTReferencedPerformedProtocolSequence::Item &DRTReferencedPerformedProtocolSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTReferencedPerformedProtocolSequence::Item &DRTReferencedPerformedProtocolSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTReferencedPerformedProtocolSequence::Item &DRTReferencedPerformedProtocolSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTReferencedPerformedProtocolSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTReferencedPerformedProtocolSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTReferencedPerformedProtocolSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedPerformedProtocolSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_ReferencedPerformedProtocolSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_ReferencedPerformedProtocolSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTReferencedPerformedProtocolSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedPerformedProtocolSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtrpps.cc b/dcmrt/libsrc/drtrpps.cc index d1c4e25a..87c70420 100644 --- a/dcmrt/libsrc/drtrpps.cc +++ b/dcmrt/libsrc/drtrpps.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTROIPhysicalPropertiesSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -288,10 +288,12 @@ OFCondition DRTROIPhysicalPropertiesSequence::gotoFirstItem() OFCondition DRTROIPhysicalPropertiesSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrppss.cc b/dcmrt/libsrc/drtrppss.cc index 3677adae..018c0c44 100644 --- a/dcmrt/libsrc/drtrppss.cc +++ b/dcmrt/libsrc/drtrppss.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTReferencedPerformedProcedureStepSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -272,10 +272,12 @@ OFCondition DRTReferencedPerformedProcedureStepSequence::gotoFirstItem() OFCondition DRTReferencedPerformedProcedureStepSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrps.cc b/dcmrt/libsrc/drtrps.cc index bdd6743d..dc833df9 100644 --- a/dcmrt/libsrc/drtrps.cc +++ b/dcmrt/libsrc/drtrps.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTReferencedPatientSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -272,10 +272,12 @@ OFCondition DRTReferencedPatientSequence::gotoFirstItem() OFCondition DRTReferencedPatientSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrris1.cc b/dcmrt/libsrc/drtrris1.cc index 5865b61e..79ccbb5e 100644 --- a/dcmrt/libsrc/drtrris1.cc +++ b/dcmrt/libsrc/drtrris1.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTReferencedReferenceImageSequenceInRTBeamsModule * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -386,10 +386,12 @@ OFCondition DRTReferencedReferenceImageSequenceInRTBeamsModule::gotoFirstItem() OFCondition DRTReferencedReferenceImageSequenceInRTBeamsModule::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrris2.cc b/dcmrt/libsrc/drtrris2.cc new file mode 100644 index 00000000..622e3610 --- /dev/null +++ b/dcmrt/libsrc/drtrris2.cc @@ -0,0 +1,613 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTReferencedReferenceImageSequenceInRTIonBeamsModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtrris2.h" + + +// --- item class --- + +DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + ReferenceImageNumber(DCM_ReferenceImageNumber), + ReferencedSOPClassUID(DCM_ReferencedSOPClassUID), + ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID) +{ +} + + +DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + ReferenceImageNumber(copy.ReferenceImageNumber), + ReferencedSOPClassUID(copy.ReferencedSOPClassUID), + ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID) +{ +} + + +DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::~Item() +{ +} + + +DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + ReferenceImageNumber = copy.ReferenceImageNumber; + ReferencedSOPClassUID = copy.ReferencedSOPClassUID; + ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID; + } + return *this; +} + + +void DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + ReferencedSOPClassUID.clear(); + ReferencedSOPInstanceUID.clear(); + ReferenceImageNumber.clear(); + } +} + + +OFBool DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::isEmpty() +{ + return ReferencedSOPClassUID.isEmpty() && + ReferencedSOPInstanceUID.isEmpty() && + ReferenceImageNumber.isEmpty(); +} + + +OFBool DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedReferenceImageSequence"); + getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedReferenceImageSequence"); + getAndCheckElementFromDataset(item, ReferenceImageNumber, "1", "1", "ReferencedReferenceImageSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedReferenceImageSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedReferenceImageSequence"); + addElementToDataset(result, item, new DcmIntegerString(ReferenceImageNumber), "1", "1", "ReferencedReferenceImageSequence"); + } + return result; +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::getReferenceImageNumber(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferenceImageNumber, value, pos); +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::getReferenceImageNumber(Sint32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmIntegerString &, ReferenceImageNumber).getSint32(value, pos); +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedSOPClassUID, value, pos); +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos); +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::setReferenceImageNumber(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferenceImageNumber.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedSOPClassUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedSOPInstanceUID.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTReferencedReferenceImageSequenceInRTIonBeamsModule::DRTReferencedReferenceImageSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTReferencedReferenceImageSequenceInRTIonBeamsModule::DRTReferencedReferenceImageSequenceInRTIonBeamsModule(const DRTReferencedReferenceImageSequenceInRTIonBeamsModule ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTReferencedReferenceImageSequenceInRTIonBeamsModule &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::operator=(const DRTReferencedReferenceImageSequenceInRTIonBeamsModule ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTReferencedReferenceImageSequenceInRTIonBeamsModule::~DRTReferencedReferenceImageSequenceInRTIonBeamsModule() +{ + clear(); +} + + +void DRTReferencedReferenceImageSequenceInRTIonBeamsModule::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTReferencedReferenceImageSequenceInRTIonBeamsModule::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTReferencedReferenceImageSequenceInRTIonBeamsModule::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_ReferencedReferenceImageSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_ReferencedReferenceImageSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedReferenceImageSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtrris3.cc b/dcmrt/libsrc/drtrris3.cc new file mode 100644 index 00000000..27c18eaa --- /dev/null +++ b/dcmrt/libsrc/drtrris3.cc @@ -0,0 +1,575 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtrris3.h" + + +// --- item class --- + +DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + ReferencedSOPClassUID(DCM_ReferencedSOPClassUID), + ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID) +{ +} + + +DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + ReferencedSOPClassUID(copy.ReferencedSOPClassUID), + ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID) +{ +} + + +DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::~Item() +{ +} + + +DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + ReferencedSOPClassUID = copy.ReferencedSOPClassUID; + ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID; + } + return *this; +} + + +void DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + ReferencedSOPClassUID.clear(); + ReferencedSOPInstanceUID.clear(); + } +} + + +OFBool DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::isEmpty() +{ + return ReferencedSOPClassUID.isEmpty() && + ReferencedSOPInstanceUID.isEmpty(); +} + + +OFBool DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedReferenceImageSequence"); + getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedReferenceImageSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedReferenceImageSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedReferenceImageSequence"); + } + return result; +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedSOPClassUID, value, pos); +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos); +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedSOPClassUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedSOPInstanceUID.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule(const DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::operator=(const DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::~DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule() +{ + clear(); +} + + +void DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_ReferencedReferenceImageSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_ReferencedReferenceImageSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedReferenceImageSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtrris6.cc b/dcmrt/libsrc/drtrris6.cc deleted file mode 100644 index 707c2241..00000000 --- a/dcmrt/libsrc/drtrris6.cc +++ /dev/null @@ -1,611 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Source file for class DRTReferencedReferenceImageSequenceInRTIonBeamsModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/dcmrt/seq/drtrris6.h" - - -// --- item class --- - -DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::Item(const OFBool emptyDefaultItem) - : EmptyDefaultItem(emptyDefaultItem), - ReferenceImageNumber(DCM_ReferenceImageNumber), - ReferencedSOPClassUID(DCM_ReferencedSOPClassUID), - ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID) -{ -} - - -DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::Item(const Item ©) - : EmptyDefaultItem(copy.EmptyDefaultItem), - ReferenceImageNumber(copy.ReferenceImageNumber), - ReferencedSOPClassUID(copy.ReferencedSOPClassUID), - ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID) -{ -} - - -DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::~Item() -{ -} - - -DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::operator=(const Item ©) -{ - if (this != ©) - { - EmptyDefaultItem = copy.EmptyDefaultItem; - ReferenceImageNumber = copy.ReferenceImageNumber; - ReferencedSOPClassUID = copy.ReferencedSOPClassUID; - ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID; - } - return *this; -} - - -void DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::clear() -{ - if (!EmptyDefaultItem) - { - /* clear all DICOM attributes */ - ReferencedSOPClassUID.clear(); - ReferencedSOPInstanceUID.clear(); - ReferenceImageNumber.clear(); - } -} - - -OFBool DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::isEmpty() -{ - return ReferencedSOPClassUID.isEmpty() && - ReferencedSOPInstanceUID.isEmpty() && - ReferenceImageNumber.isEmpty(); -} - - -OFBool DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::isValid() const -{ - return !EmptyDefaultItem; -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::read(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - /* re-initialize object */ - clear(); - getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedReferenceImageSequence"); - getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedReferenceImageSequence"); - getAndCheckElementFromDataset(item, ReferenceImageNumber, "1", "1", "ReferencedReferenceImageSequence"); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::write(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = EC_Normal; - addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedReferenceImageSequence"); - addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedReferenceImageSequence"); - addElementToDataset(result, item, new DcmIntegerString(ReferenceImageNumber), "1", "1", "ReferencedReferenceImageSequence"); - } - return result; -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::getReferenceImageNumber(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ReferenceImageNumber, value, pos); -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::getReferenceImageNumber(Sint32 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmIntegerString &, ReferenceImageNumber).getSint32(value, pos); -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ReferencedSOPClassUID, value, pos); -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos); -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::setReferenceImageNumber(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ReferenceImageNumber.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ReferencedSOPClassUID.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ReferencedSOPInstanceUID.putOFStringArray(value); - } - return result; -} - - -// --- sequence class --- - -DRTReferencedReferenceImageSequenceInRTIonBeamsModule::DRTReferencedReferenceImageSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence) - : EmptyDefaultSequence(emptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - CurrentItem = SequenceOfItems.end(); -} - - -DRTReferencedReferenceImageSequenceInRTIonBeamsModule::DRTReferencedReferenceImageSequenceInRTIonBeamsModule(const DRTReferencedReferenceImageSequenceInRTIonBeamsModule ©) - : EmptyDefaultSequence(copy.EmptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); -} - - -DRTReferencedReferenceImageSequenceInRTIonBeamsModule &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::operator=(const DRTReferencedReferenceImageSequenceInRTIonBeamsModule ©) -{ - if (this != ©) - { - clear(); - EmptyDefaultSequence = copy.EmptyDefaultSequence; - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); - } - return *this; -} - - -DRTReferencedReferenceImageSequenceInRTIonBeamsModule::~DRTReferencedReferenceImageSequenceInRTIonBeamsModule() -{ - clear(); -} - - -void DRTReferencedReferenceImageSequenceInRTIonBeamsModule::clear() -{ - if (!EmptyDefaultSequence) - { - CurrentItem = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* delete all items and free memory */ - while (CurrentItem != last) - { - delete (*CurrentItem); - CurrentItem = SequenceOfItems.erase(CurrentItem); - } - /* make sure that the list is empty */ - SequenceOfItems.clear(); - CurrentItem = SequenceOfItems.end(); - } -} - - -OFBool DRTReferencedReferenceImageSequenceInRTIonBeamsModule::isEmpty() -{ - return SequenceOfItems.empty(); -} - - -OFBool DRTReferencedReferenceImageSequenceInRTIonBeamsModule::isValid() const -{ - return !EmptyDefaultSequence; -} - - -size_t DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getNumberOfItems() const -{ - return SequenceOfItems.size(); -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::gotoFirstItem() -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - CurrentItem = SequenceOfItems.begin(); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::gotoNextItem() -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - ++CurrentItem; - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::gotoItem(const size_t num) -{ - return gotoItem(num, CurrentItem); -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getCurrentItem(Item *&item) const -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - item = *CurrentItem; - result = EC_Normal; - } - return result; -} - - -DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getCurrentItem() -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -const DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getCurrentItem() const -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item) -{ - OFListIterator(Item *) iterator; - OFCondition result = gotoItem(num, iterator); - if (result.good()) - item = *iterator; - return result; -} - - -DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getItem(const size_t num) -{ - OFListIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -const DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getItem(const size_t num) const -{ - OFListConstIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::operator[](const size_t num) -{ - return getItem(num); -} - - -const DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::operator[](const size_t num) const -{ - return getItem(num); -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::addItem(Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.push_back(item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } - return result; -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - result = gotoItem(pos, iterator); - if (result.good()) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.insert(iterator, 1, item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } else - result = addItem(item); - } - return result; -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::removeItem(const size_t pos) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - if (gotoItem(pos, iterator).good()) - { - delete *iterator; - iterator = SequenceOfItems.erase(iterator); - result = EC_Normal; - } else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - /* re-initialize object */ - clear(); - /* retrieve sequence element from dataset */ - DcmSequenceOfItems *sequence; - result = dataset.findAndGetSequence(DCM_ReferencedReferenceImageSequence, sequence); - if (sequence != NULL) - { - if (checkElementValue(*sequence, card, type, result, moduleName)) - { - DcmStack stack; - OFBool first = OFTrue; - /* iterate over all sequence items */ - while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) - { - DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); - if (ditem != NULL) - { - Item *item = new Item(); - if (item != NULL) - { - result = item->read(*ditem); - if (result.good()) - { - /* append new item to the end of the list */ - SequenceOfItems.push_back(item); - first = OFFalse; - } - } else - result = EC_MemoryExhausted; - } else - result = EC_CorruptedData; - } - } - } else { - DcmSequenceOfItems element(DCM_ReferencedReferenceImageSequence); - checkElementValue(element, card, type, result, moduleName); - } - } - return result; -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - result = EC_MemoryExhausted; - DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedReferenceImageSequence); - if (sequence != NULL) - { - result = EC_Normal; - /* an empty optional sequence is not written */ - if ((type == "2") || !SequenceOfItems.empty()) - { - OFListIterator(Item *) iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* iterate over all sequence items */ - while (result.good() && (iterator != last)) - { - DcmItem *item = new DcmItem(); - if (item != NULL) - { - /* append new item to the end of the sequence */ - result = sequence->append(item); - if (result.good()) - { - result = (*iterator)->write(*item); - ++iterator; - } else - delete item; - } else - result = EC_MemoryExhausted; - } - if (result.good()) - { - /* insert sequence element into the dataset */ - result = dataset.insert(sequence, OFTrue /*replaceOld*/); - } - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - if (result.good()) - { - /* forget reference to sequence object (avoid deletion below) */ - sequence = NULL; - } - } - else if (type == "1") - { - /* empty type 1 sequence not allowed */ - result = RT_EC_InvalidValue; - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - } - /* delete sequence (if not inserted into the dataset) */ - delete sequence; - } - } - return result; -} - - -// end of source file diff --git a/dcmrt/libsrc/drtrris9.cc b/dcmrt/libsrc/drtrris9.cc deleted file mode 100644 index 5c679957..00000000 --- a/dcmrt/libsrc/drtrris9.cc +++ /dev/null @@ -1,573 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Source file for class DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/dcmrt/seq/drtrris9.h" - - -// --- item class --- - -DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::Item(const OFBool emptyDefaultItem) - : EmptyDefaultItem(emptyDefaultItem), - ReferencedSOPClassUID(DCM_ReferencedSOPClassUID), - ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID) -{ -} - - -DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::Item(const Item ©) - : EmptyDefaultItem(copy.EmptyDefaultItem), - ReferencedSOPClassUID(copy.ReferencedSOPClassUID), - ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID) -{ -} - - -DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::~Item() -{ -} - - -DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::operator=(const Item ©) -{ - if (this != ©) - { - EmptyDefaultItem = copy.EmptyDefaultItem; - ReferencedSOPClassUID = copy.ReferencedSOPClassUID; - ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID; - } - return *this; -} - - -void DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::clear() -{ - if (!EmptyDefaultItem) - { - /* clear all DICOM attributes */ - ReferencedSOPClassUID.clear(); - ReferencedSOPInstanceUID.clear(); - } -} - - -OFBool DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::isEmpty() -{ - return ReferencedSOPClassUID.isEmpty() && - ReferencedSOPInstanceUID.isEmpty(); -} - - -OFBool DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::isValid() const -{ - return !EmptyDefaultItem; -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::read(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - /* re-initialize object */ - clear(); - getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedReferenceImageSequence"); - getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedReferenceImageSequence"); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::write(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = EC_Normal; - addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedReferenceImageSequence"); - addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedReferenceImageSequence"); - } - return result; -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ReferencedSOPClassUID, value, pos); -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos); -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ReferencedSOPClassUID.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ReferencedSOPInstanceUID.putOFStringArray(value); - } - return result; -} - - -// --- sequence class --- - -DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule(const OFBool emptyDefaultSequence) - : EmptyDefaultSequence(emptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - CurrentItem = SequenceOfItems.end(); -} - - -DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule(const DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule ©) - : EmptyDefaultSequence(copy.EmptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); -} - - -DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::operator=(const DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule ©) -{ - if (this != ©) - { - clear(); - EmptyDefaultSequence = copy.EmptyDefaultSequence; - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); - } - return *this; -} - - -DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::~DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule() -{ - clear(); -} - - -void DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::clear() -{ - if (!EmptyDefaultSequence) - { - CurrentItem = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* delete all items and free memory */ - while (CurrentItem != last) - { - delete (*CurrentItem); - CurrentItem = SequenceOfItems.erase(CurrentItem); - } - /* make sure that the list is empty */ - SequenceOfItems.clear(); - CurrentItem = SequenceOfItems.end(); - } -} - - -OFBool DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::isEmpty() -{ - return SequenceOfItems.empty(); -} - - -OFBool DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::isValid() const -{ - return !EmptyDefaultSequence; -} - - -size_t DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getNumberOfItems() const -{ - return SequenceOfItems.size(); -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::gotoFirstItem() -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - CurrentItem = SequenceOfItems.begin(); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::gotoNextItem() -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - ++CurrentItem; - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::gotoItem(const size_t num) -{ - return gotoItem(num, CurrentItem); -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getCurrentItem(Item *&item) const -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - item = *CurrentItem; - result = EC_Normal; - } - return result; -} - - -DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getCurrentItem() -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -const DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getCurrentItem() const -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getItem(const size_t num, Item *&item) -{ - OFListIterator(Item *) iterator; - OFCondition result = gotoItem(num, iterator); - if (result.good()) - item = *iterator; - return result; -} - - -DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getItem(const size_t num) -{ - OFListIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -const DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getItem(const size_t num) const -{ - OFListConstIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::operator[](const size_t num) -{ - return getItem(num); -} - - -const DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::operator[](const size_t num) const -{ - return getItem(num); -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::addItem(Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.push_back(item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } - return result; -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::insertItem(const size_t pos, Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - result = gotoItem(pos, iterator); - if (result.good()) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.insert(iterator, 1, item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } else - result = addItem(item); - } - return result; -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::removeItem(const size_t pos) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - if (gotoItem(pos, iterator).good()) - { - delete *iterator; - iterator = SequenceOfItems.erase(iterator); - result = EC_Normal; - } else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - /* re-initialize object */ - clear(); - /* retrieve sequence element from dataset */ - DcmSequenceOfItems *sequence; - result = dataset.findAndGetSequence(DCM_ReferencedReferenceImageSequence, sequence); - if (sequence != NULL) - { - if (checkElementValue(*sequence, card, type, result, moduleName)) - { - DcmStack stack; - OFBool first = OFTrue; - /* iterate over all sequence items */ - while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) - { - DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); - if (ditem != NULL) - { - Item *item = new Item(); - if (item != NULL) - { - result = item->read(*ditem); - if (result.good()) - { - /* append new item to the end of the list */ - SequenceOfItems.push_back(item); - first = OFFalse; - } - } else - result = EC_MemoryExhausted; - } else - result = EC_CorruptedData; - } - } - } else { - DcmSequenceOfItems element(DCM_ReferencedReferenceImageSequence); - checkElementValue(element, card, type, result, moduleName); - } - } - return result; -} - - -OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - result = EC_MemoryExhausted; - DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedReferenceImageSequence); - if (sequence != NULL) - { - result = EC_Normal; - /* an empty optional sequence is not written */ - if ((type == "2") || !SequenceOfItems.empty()) - { - OFListIterator(Item *) iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* iterate over all sequence items */ - while (result.good() && (iterator != last)) - { - DcmItem *item = new DcmItem(); - if (item != NULL) - { - /* append new item to the end of the sequence */ - result = sequence->append(item); - if (result.good()) - { - result = (*iterator)->write(*item); - ++iterator; - } else - delete item; - } else - result = EC_MemoryExhausted; - } - if (result.good()) - { - /* insert sequence element into the dataset */ - result = dataset.insert(sequence, OFTrue /*replaceOld*/); - } - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - if (result.good()) - { - /* forget reference to sequence object (avoid deletion below) */ - sequence = NULL; - } - } - else if (type == "1") - { - /* empty type 1 sequence not allowed */ - result = RT_EC_InvalidValue; - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - } - /* delete sequence (if not inserted into the dataset) */ - delete sequence; - } - } - return result; -} - - -// end of source file diff --git a/dcmrt/libsrc/drtrrms.cc b/dcmrt/libsrc/drtrrms.cc index 558c87ae..6de12370 100644 --- a/dcmrt/libsrc/drtrrms.cc +++ b/dcmrt/libsrc/drtrrms.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTRecordedRangeModulatorSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -368,10 +368,12 @@ OFCondition DRTRecordedRangeModulatorSequence::gotoFirstItem() OFCondition DRTRecordedRangeModulatorSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrros.cc b/dcmrt/libsrc/drtrros.cc index 16d93dae..5e0eb5cd 100644 --- a/dcmrt/libsrc/drtrros.cc +++ b/dcmrt/libsrc/drtrros.cc @@ -1,14 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTRTROIObservationsSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * Last modified on 2022-07-25 by Riesmeier + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -22,36 +21,40 @@ DRTRTROIObservationsSequence::Item::Item(const OFBool emptyDefaultItem) : EmptyDefaultItem(emptyDefaultItem), + AnatomicRegionSequence(emptyDefaultItem /*emptyDefaultSequence*/), MaterialID(DCM_MaterialID), ObservationNumber(DCM_ObservationNumber), + PrimaryAnatomicStructureSequence(emptyDefaultItem /*emptyDefaultSequence*/), ROIInterpreter(DCM_ROIInterpreter), - ROIObservationDescription(DCM_RETIRED_ROIObservationDescription), - ROIObservationLabel(DCM_RETIRED_ROIObservationLabel), ROIPhysicalPropertiesSequence(emptyDefaultItem /*emptyDefaultSequence*/), RTROIIdentificationCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), RTROIInterpretedType(DCM_RTROIInterpretedType), RTRelatedROISequence(emptyDefaultItem /*emptyDefaultSequence*/), ReferencedROINumber(DCM_ReferencedROINumber), RelatedRTROIObservationsSequence(emptyDefaultItem /*emptyDefaultSequence*/), - SegmentedPropertyCategoryCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/) + SegmentedPropertyCategoryCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), + TherapeuticRoleCategoryCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), + TherapeuticRoleTypeCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/) { } DRTRTROIObservationsSequence::Item::Item(const Item ©) : EmptyDefaultItem(copy.EmptyDefaultItem), + AnatomicRegionSequence(copy.AnatomicRegionSequence), MaterialID(copy.MaterialID), ObservationNumber(copy.ObservationNumber), + PrimaryAnatomicStructureSequence(copy.PrimaryAnatomicStructureSequence), ROIInterpreter(copy.ROIInterpreter), - ROIObservationDescription(copy.ROIObservationDescription), - ROIObservationLabel(copy.ROIObservationLabel), ROIPhysicalPropertiesSequence(copy.ROIPhysicalPropertiesSequence), RTROIIdentificationCodeSequence(copy.RTROIIdentificationCodeSequence), RTROIInterpretedType(copy.RTROIInterpretedType), RTRelatedROISequence(copy.RTRelatedROISequence), ReferencedROINumber(copy.ReferencedROINumber), RelatedRTROIObservationsSequence(copy.RelatedRTROIObservationsSequence), - SegmentedPropertyCategoryCodeSequence(copy.SegmentedPropertyCategoryCodeSequence) + SegmentedPropertyCategoryCodeSequence(copy.SegmentedPropertyCategoryCodeSequence), + TherapeuticRoleCategoryCodeSequence(copy.TherapeuticRoleCategoryCodeSequence), + TherapeuticRoleTypeCodeSequence(copy.TherapeuticRoleTypeCodeSequence) { } @@ -66,11 +69,11 @@ DRTRTROIObservationsSequence::Item &DRTRTROIObservationsSequence::Item::operator if (this != ©) { EmptyDefaultItem = copy.EmptyDefaultItem; + AnatomicRegionSequence = copy.AnatomicRegionSequence; MaterialID = copy.MaterialID; ObservationNumber = copy.ObservationNumber; + PrimaryAnatomicStructureSequence = copy.PrimaryAnatomicStructureSequence; ROIInterpreter = copy.ROIInterpreter; - ROIObservationDescription = copy.ROIObservationDescription; - ROIObservationLabel = copy.ROIObservationLabel; ROIPhysicalPropertiesSequence = copy.ROIPhysicalPropertiesSequence; RTROIIdentificationCodeSequence = copy.RTROIIdentificationCodeSequence; RTROIInterpretedType = copy.RTROIInterpretedType; @@ -78,6 +81,8 @@ DRTRTROIObservationsSequence::Item &DRTRTROIObservationsSequence::Item::operator ReferencedROINumber = copy.ReferencedROINumber; RelatedRTROIObservationsSequence = copy.RelatedRTROIObservationsSequence; SegmentedPropertyCategoryCodeSequence = copy.SegmentedPropertyCategoryCodeSequence; + TherapeuticRoleCategoryCodeSequence = copy.TherapeuticRoleCategoryCodeSequence; + TherapeuticRoleTypeCodeSequence = copy.TherapeuticRoleTypeCodeSequence; } return *this; } @@ -90,11 +95,13 @@ void DRTRTROIObservationsSequence::Item::clear() /* clear all DICOM attributes */ ObservationNumber.clear(); ReferencedROINumber.clear(); - ROIObservationLabel.clear(); - ROIObservationDescription.clear(); RTRelatedROISequence.clear(); + AnatomicRegionSequence.clear(); + PrimaryAnatomicStructureSequence.clear(); SegmentedPropertyCategoryCodeSequence.clear(); RTROIIdentificationCodeSequence.clear(); + TherapeuticRoleCategoryCodeSequence.clear(); + TherapeuticRoleTypeCodeSequence.clear(); RelatedRTROIObservationsSequence.clear(); RTROIInterpretedType.clear(); ROIInterpreter.clear(); @@ -108,11 +115,13 @@ OFBool DRTRTROIObservationsSequence::Item::isEmpty() { return ObservationNumber.isEmpty() && ReferencedROINumber.isEmpty() && - ROIObservationLabel.isEmpty() && - ROIObservationDescription.isEmpty() && RTRelatedROISequence.isEmpty() && + AnatomicRegionSequence.isEmpty() && + PrimaryAnatomicStructureSequence.isEmpty() && SegmentedPropertyCategoryCodeSequence.isEmpty() && RTROIIdentificationCodeSequence.isEmpty() && + TherapeuticRoleCategoryCodeSequence.isEmpty() && + TherapeuticRoleTypeCodeSequence.isEmpty() && RelatedRTROIObservationsSequence.isEmpty() && RTROIInterpretedType.isEmpty() && ROIInterpreter.isEmpty() && @@ -136,11 +145,13 @@ OFCondition DRTRTROIObservationsSequence::Item::read(DcmItem &item) clear(); getAndCheckElementFromDataset(item, ObservationNumber, "1", "1", "RTROIObservationsSequence"); getAndCheckElementFromDataset(item, ReferencedROINumber, "1", "1", "RTROIObservationsSequence"); - getAndCheckElementFromDataset(item, ROIObservationLabel, "1", "3", "RTROIObservationsSequence"); - getAndCheckElementFromDataset(item, ROIObservationDescription, "1", "3", "RTROIObservationsSequence"); RTRelatedROISequence.read(item, "1-n", "3", "RTROIObservationsSequence"); + AnatomicRegionSequence.read(item, "1-n", "3", "RTROIObservationsSequence"); + PrimaryAnatomicStructureSequence.read(item, "1-n", "3", "RTROIObservationsSequence"); SegmentedPropertyCategoryCodeSequence.read(item, "1-n", "3", "RTROIObservationsSequence"); RTROIIdentificationCodeSequence.read(item, "1-n", "3", "RTROIObservationsSequence"); + TherapeuticRoleCategoryCodeSequence.read(item, "1-n", "3", "RTROIObservationsSequence"); + TherapeuticRoleTypeCodeSequence.read(item, "1-n", "3", "RTROIObservationsSequence"); RelatedRTROIObservationsSequence.read(item, "1-n", "3", "RTROIObservationsSequence"); getAndCheckElementFromDataset(item, RTROIInterpretedType, "1", "2", "RTROIObservationsSequence"); getAndCheckElementFromDataset(item, ROIInterpreter, "1", "2", "RTROIObservationsSequence"); @@ -160,11 +171,13 @@ OFCondition DRTRTROIObservationsSequence::Item::write(DcmItem &item) result = EC_Normal; addElementToDataset(result, item, new DcmIntegerString(ObservationNumber), "1", "1", "RTROIObservationsSequence"); addElementToDataset(result, item, new DcmIntegerString(ReferencedROINumber), "1", "1", "RTROIObservationsSequence"); - addElementToDataset(result, item, new DcmShortString(ROIObservationLabel), "1", "3", "RTROIObservationsSequence"); - addElementToDataset(result, item, new DcmShortText(ROIObservationDescription), "1", "3", "RTROIObservationsSequence"); if (result.good()) result = RTRelatedROISequence.write(item, "1-n", "3", "RTROIObservationsSequence"); + if (result.good()) result = AnatomicRegionSequence.write(item, "1-n", "3", "RTROIObservationsSequence"); + if (result.good()) result = PrimaryAnatomicStructureSequence.write(item, "1-n", "3", "RTROIObservationsSequence"); if (result.good()) result = SegmentedPropertyCategoryCodeSequence.write(item, "1-n", "3", "RTROIObservationsSequence"); if (result.good()) result = RTROIIdentificationCodeSequence.write(item, "1-n", "3", "RTROIObservationsSequence"); + if (result.good()) result = TherapeuticRoleCategoryCodeSequence.write(item, "1-n", "3", "RTROIObservationsSequence"); + if (result.good()) result = TherapeuticRoleTypeCodeSequence.write(item, "1-n", "3", "RTROIObservationsSequence"); if (result.good()) result = RelatedRTROIObservationsSequence.write(item, "1-n", "3", "RTROIObservationsSequence"); addElementToDataset(result, item, new DcmCodeString(RTROIInterpretedType), "1", "2", "RTROIObservationsSequence"); addElementToDataset(result, item, new DcmPersonName(ROIInterpreter), "1", "2", "RTROIObservationsSequence"); @@ -211,24 +224,6 @@ OFCondition DRTRTROIObservationsSequence::Item::getROIInterpreter(OFString &valu } -OFCondition DRTRTROIObservationsSequence::Item::getROIObservationDescription(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ROIObservationDescription, value, pos); -} - - -OFCondition DRTRTROIObservationsSequence::Item::getROIObservationLabel(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ROIObservationLabel, value, pos); -} - - OFCondition DRTRTROIObservationsSequence::Item::getRTROIInterpretedType(OFString &value, const signed long pos) const { if (EmptyDefaultItem) @@ -295,32 +290,6 @@ OFCondition DRTRTROIObservationsSequence::Item::setROIInterpreter(const OFString } -OFCondition DRTRTROIObservationsSequence::Item::setROIObservationDescription(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal; - if (result.good()) - result = ROIObservationDescription.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTRTROIObservationsSequence::Item::setROIObservationLabel(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ROIObservationLabel.putOFStringArray(value); - } - return result; -} - - OFCondition DRTRTROIObservationsSequence::Item::setRTROIInterpretedType(const OFString &value, const OFBool check) { OFCondition result = EC_IllegalCall; @@ -471,10 +440,12 @@ OFCondition DRTRTROIObservationsSequence::gotoFirstItem() OFCondition DRTRTROIObservationsSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrrpcs.cc b/dcmrt/libsrc/drtrrpcs.cc index 52f45990..773aa509 100644 --- a/dcmrt/libsrc/drtrrpcs.cc +++ b/dcmrt/libsrc/drtrrpcs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTReasonForRequestedProcedureCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -656,10 +656,12 @@ OFCondition DRTReasonForRequestedProcedureCodeSequence::gotoFirstItem() OFCondition DRTReasonForRequestedProcedureCodeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrrros.cc b/dcmrt/libsrc/drtrrros.cc index 292f13a4..de9975ee 100644 --- a/dcmrt/libsrc/drtrrros.cc +++ b/dcmrt/libsrc/drtrrros.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTRelatedRTROIObservationsSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -252,10 +252,12 @@ OFCondition DRTRelatedRTROIObservationsSequence::gotoFirstItem() OFCondition DRTRelatedRTROIObservationsSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrrs.cc b/dcmrt/libsrc/drtrrs.cc index cb7a1a0f..8da93a83 100644 --- a/dcmrt/libsrc/drtrrs.cc +++ b/dcmrt/libsrc/drtrrs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTRTRelatedROISequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -281,10 +281,12 @@ OFCondition DRTRTRelatedROISequence::gotoFirstItem() OFCondition DRTRTRelatedROISequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrrshs.cc b/dcmrt/libsrc/drtrrshs.cc index bc876dcc..f8cfc374 100644 --- a/dcmrt/libsrc/drtrrshs.cc +++ b/dcmrt/libsrc/drtrrshs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTRecordedRangeShifterSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -310,10 +310,12 @@ OFCondition DRTRecordedRangeShifterSequence::gotoFirstItem() OFCondition DRTRecordedRangeShifterSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrrtps.cc b/dcmrt/libsrc/drtrrtps.cc deleted file mode 100644 index 2d54f29d..00000000 --- a/dcmrt/libsrc/drtrrtps.cc +++ /dev/null @@ -1,580 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Source file for class DRTReferencedRTPlanSequence - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/dcmrt/seq/drtrrtps.h" - - -// --- item class --- - -DRTReferencedRTPlanSequence::Item::Item(const OFBool emptyDefaultItem) - : EmptyDefaultItem(emptyDefaultItem), - ReferencedFractionGroupSequence(emptyDefaultItem /*emptyDefaultSequence*/), - ReferencedSOPClassUID(DCM_ReferencedSOPClassUID), - ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID) -{ -} - - -DRTReferencedRTPlanSequence::Item::Item(const Item ©) - : EmptyDefaultItem(copy.EmptyDefaultItem), - ReferencedFractionGroupSequence(copy.ReferencedFractionGroupSequence), - ReferencedSOPClassUID(copy.ReferencedSOPClassUID), - ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID) -{ -} - - -DRTReferencedRTPlanSequence::Item::~Item() -{ -} - - -DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::Item::operator=(const Item ©) -{ - if (this != ©) - { - EmptyDefaultItem = copy.EmptyDefaultItem; - ReferencedFractionGroupSequence = copy.ReferencedFractionGroupSequence; - ReferencedSOPClassUID = copy.ReferencedSOPClassUID; - ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID; - } - return *this; -} - - -void DRTReferencedRTPlanSequence::Item::clear() -{ - if (!EmptyDefaultItem) - { - /* clear all DICOM attributes */ - ReferencedSOPClassUID.clear(); - ReferencedSOPInstanceUID.clear(); - ReferencedFractionGroupSequence.clear(); - } -} - - -OFBool DRTReferencedRTPlanSequence::Item::isEmpty() -{ - return ReferencedSOPClassUID.isEmpty() && - ReferencedSOPInstanceUID.isEmpty() && - ReferencedFractionGroupSequence.isEmpty(); -} - - -OFBool DRTReferencedRTPlanSequence::Item::isValid() const -{ - return !EmptyDefaultItem; -} - - -OFCondition DRTReferencedRTPlanSequence::Item::read(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - /* re-initialize object */ - clear(); - getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedRTPlanSequence"); - getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedRTPlanSequence"); - ReferencedFractionGroupSequence.read(item, "1-n", "1C", "ReferencedRTPlanSequence"); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequence::Item::write(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = EC_Normal; - addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedRTPlanSequence"); - addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedRTPlanSequence"); - if (result.good()) result = ReferencedFractionGroupSequence.write(item, "1-n", "1C", "ReferencedRTPlanSequence"); - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequence::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ReferencedSOPClassUID, value, pos); -} - - -OFCondition DRTReferencedRTPlanSequence::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos); -} - - -OFCondition DRTReferencedRTPlanSequence::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ReferencedSOPClassUID.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequence::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ReferencedSOPInstanceUID.putOFStringArray(value); - } - return result; -} - - -// --- sequence class --- - -DRTReferencedRTPlanSequence::DRTReferencedRTPlanSequence(const OFBool emptyDefaultSequence) - : EmptyDefaultSequence(emptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - CurrentItem = SequenceOfItems.end(); -} - - -DRTReferencedRTPlanSequence::DRTReferencedRTPlanSequence(const DRTReferencedRTPlanSequence ©) - : EmptyDefaultSequence(copy.EmptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); -} - - -DRTReferencedRTPlanSequence &DRTReferencedRTPlanSequence::operator=(const DRTReferencedRTPlanSequence ©) -{ - if (this != ©) - { - clear(); - EmptyDefaultSequence = copy.EmptyDefaultSequence; - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); - } - return *this; -} - - -DRTReferencedRTPlanSequence::~DRTReferencedRTPlanSequence() -{ - clear(); -} - - -void DRTReferencedRTPlanSequence::clear() -{ - if (!EmptyDefaultSequence) - { - CurrentItem = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* delete all items and free memory */ - while (CurrentItem != last) - { - delete (*CurrentItem); - CurrentItem = SequenceOfItems.erase(CurrentItem); - } - /* make sure that the list is empty */ - SequenceOfItems.clear(); - CurrentItem = SequenceOfItems.end(); - } -} - - -OFBool DRTReferencedRTPlanSequence::isEmpty() -{ - return SequenceOfItems.empty(); -} - - -OFBool DRTReferencedRTPlanSequence::isValid() const -{ - return !EmptyDefaultSequence; -} - - -size_t DRTReferencedRTPlanSequence::getNumberOfItems() const -{ - return SequenceOfItems.size(); -} - - -OFCondition DRTReferencedRTPlanSequence::gotoFirstItem() -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - CurrentItem = SequenceOfItems.begin(); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequence::gotoNextItem() -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - ++CurrentItem; - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequence::gotoItem(const size_t num) -{ - return gotoItem(num, CurrentItem); -} - - -OFCondition DRTReferencedRTPlanSequence::getCurrentItem(Item *&item) const -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - item = *CurrentItem; - result = EC_Normal; - } - return result; -} - - -DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::getCurrentItem() -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -const DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::getCurrentItem() const -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -OFCondition DRTReferencedRTPlanSequence::getItem(const size_t num, Item *&item) -{ - OFListIterator(Item *) iterator; - OFCondition result = gotoItem(num, iterator); - if (result.good()) - item = *iterator; - return result; -} - - -DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::getItem(const size_t num) -{ - OFListIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -const DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::getItem(const size_t num) const -{ - OFListConstIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::operator[](const size_t num) -{ - return getItem(num); -} - - -const DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::operator[](const size_t num) const -{ - return getItem(num); -} - - -OFCondition DRTReferencedRTPlanSequence::addItem(Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.push_back(item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequence::insertItem(const size_t pos, Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - result = gotoItem(pos, iterator); - if (result.good()) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.insert(iterator, 1, item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } else - result = addItem(item); - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequence::removeItem(const size_t pos) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - if (gotoItem(pos, iterator).good()) - { - delete *iterator; - iterator = SequenceOfItems.erase(iterator); - result = EC_Normal; - } else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequence::read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - /* re-initialize object */ - clear(); - /* retrieve sequence element from dataset */ - DcmSequenceOfItems *sequence; - result = dataset.findAndGetSequence(DCM_ReferencedRTPlanSequence, sequence); - if (sequence != NULL) - { - if (checkElementValue(*sequence, card, type, result, moduleName)) - { - DcmStack stack; - OFBool first = OFTrue; - /* iterate over all sequence items */ - while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) - { - DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); - if (ditem != NULL) - { - Item *item = new Item(); - if (item != NULL) - { - result = item->read(*ditem); - if (result.good()) - { - /* append new item to the end of the list */ - SequenceOfItems.push_back(item); - first = OFFalse; - } - } else - result = EC_MemoryExhausted; - } else - result = EC_CorruptedData; - } - } - } else { - DcmSequenceOfItems element(DCM_ReferencedRTPlanSequence); - checkElementValue(element, card, type, result, moduleName); - } - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequence::write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - result = EC_MemoryExhausted; - DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedRTPlanSequence); - if (sequence != NULL) - { - result = EC_Normal; - /* an empty optional sequence is not written */ - if ((type == "2") || !SequenceOfItems.empty()) - { - OFListIterator(Item *) iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* iterate over all sequence items */ - while (result.good() && (iterator != last)) - { - DcmItem *item = new DcmItem(); - if (item != NULL) - { - /* append new item to the end of the sequence */ - result = sequence->append(item); - if (result.good()) - { - result = (*iterator)->write(*item); - ++iterator; - } else - delete item; - } else - result = EC_MemoryExhausted; - } - if (result.good()) - { - /* insert sequence element into the dataset */ - result = dataset.insert(sequence, OFTrue /*replaceOld*/); - } - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - if (result.good()) - { - /* forget reference to sequence object (avoid deletion below) */ - sequence = NULL; - } - } - else if (type == "1") - { - /* empty type 1 sequence not allowed */ - result = RT_EC_InvalidValue; - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - } - /* delete sequence (if not inserted into the dataset) */ - delete sequence; - } - } - return result; -} - - -// end of source file diff --git a/dcmrt/libsrc/drtrrtps3.cc b/dcmrt/libsrc/drtrrtps3.cc deleted file mode 100644 index 85513b64..00000000 --- a/dcmrt/libsrc/drtrrtps3.cc +++ /dev/null @@ -1,602 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Source file for class DRTReferencedRTPlanSequenceInRTGeneralPlanModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/dcmrt/seq/drtrrtps3.h" - - -// --- item class --- - -DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::Item(const OFBool emptyDefaultItem) - : EmptyDefaultItem(emptyDefaultItem), - RTPlanRelationship(DCM_RTPlanRelationship), - ReferencedSOPClassUID(DCM_ReferencedSOPClassUID), - ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID) -{ -} - - -DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::Item(const Item ©) - : EmptyDefaultItem(copy.EmptyDefaultItem), - RTPlanRelationship(copy.RTPlanRelationship), - ReferencedSOPClassUID(copy.ReferencedSOPClassUID), - ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID) -{ -} - - -DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::~Item() -{ -} - - -DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::operator=(const Item ©) -{ - if (this != ©) - { - EmptyDefaultItem = copy.EmptyDefaultItem; - RTPlanRelationship = copy.RTPlanRelationship; - ReferencedSOPClassUID = copy.ReferencedSOPClassUID; - ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID; - } - return *this; -} - - -void DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::clear() -{ - if (!EmptyDefaultItem) - { - /* clear all DICOM attributes */ - ReferencedSOPClassUID.clear(); - ReferencedSOPInstanceUID.clear(); - RTPlanRelationship.clear(); - } -} - - -OFBool DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::isEmpty() -{ - return ReferencedSOPClassUID.isEmpty() && - ReferencedSOPInstanceUID.isEmpty() && - RTPlanRelationship.isEmpty(); -} - - -OFBool DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::isValid() const -{ - return !EmptyDefaultItem; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::read(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - /* re-initialize object */ - clear(); - getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedRTPlanSequence"); - getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedRTPlanSequence"); - getAndCheckElementFromDataset(item, RTPlanRelationship, "1", "1", "ReferencedRTPlanSequence"); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::write(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = EC_Normal; - addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedRTPlanSequence"); - addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedRTPlanSequence"); - addElementToDataset(result, item, new DcmCodeString(RTPlanRelationship), "1", "1", "ReferencedRTPlanSequence"); - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::getRTPlanRelationship(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(RTPlanRelationship, value, pos); -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ReferencedSOPClassUID, value, pos); -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos); -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::setRTPlanRelationship(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = RTPlanRelationship.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ReferencedSOPClassUID.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ReferencedSOPInstanceUID.putOFStringArray(value); - } - return result; -} - - -// --- sequence class --- - -DRTReferencedRTPlanSequenceInRTGeneralPlanModule::DRTReferencedRTPlanSequenceInRTGeneralPlanModule(const OFBool emptyDefaultSequence) - : EmptyDefaultSequence(emptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - CurrentItem = SequenceOfItems.end(); -} - - -DRTReferencedRTPlanSequenceInRTGeneralPlanModule::DRTReferencedRTPlanSequenceInRTGeneralPlanModule(const DRTReferencedRTPlanSequenceInRTGeneralPlanModule ©) - : EmptyDefaultSequence(copy.EmptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); -} - - -DRTReferencedRTPlanSequenceInRTGeneralPlanModule &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::operator=(const DRTReferencedRTPlanSequenceInRTGeneralPlanModule ©) -{ - if (this != ©) - { - clear(); - EmptyDefaultSequence = copy.EmptyDefaultSequence; - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); - } - return *this; -} - - -DRTReferencedRTPlanSequenceInRTGeneralPlanModule::~DRTReferencedRTPlanSequenceInRTGeneralPlanModule() -{ - clear(); -} - - -void DRTReferencedRTPlanSequenceInRTGeneralPlanModule::clear() -{ - if (!EmptyDefaultSequence) - { - CurrentItem = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* delete all items and free memory */ - while (CurrentItem != last) - { - delete (*CurrentItem); - CurrentItem = SequenceOfItems.erase(CurrentItem); - } - /* make sure that the list is empty */ - SequenceOfItems.clear(); - CurrentItem = SequenceOfItems.end(); - } -} - - -OFBool DRTReferencedRTPlanSequenceInRTGeneralPlanModule::isEmpty() -{ - return SequenceOfItems.empty(); -} - - -OFBool DRTReferencedRTPlanSequenceInRTGeneralPlanModule::isValid() const -{ - return !EmptyDefaultSequence; -} - - -size_t DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getNumberOfItems() const -{ - return SequenceOfItems.size(); -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::gotoFirstItem() -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - CurrentItem = SequenceOfItems.begin(); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::gotoNextItem() -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - ++CurrentItem; - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::gotoItem(const size_t num) -{ - return gotoItem(num, CurrentItem); -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getCurrentItem(Item *&item) const -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - item = *CurrentItem; - result = EC_Normal; - } - return result; -} - - -DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getCurrentItem() -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -const DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getCurrentItem() const -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getItem(const size_t num, Item *&item) -{ - OFListIterator(Item *) iterator; - OFCondition result = gotoItem(num, iterator); - if (result.good()) - item = *iterator; - return result; -} - - -DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getItem(const size_t num) -{ - OFListIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -const DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getItem(const size_t num) const -{ - OFListConstIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::operator[](const size_t num) -{ - return getItem(num); -} - - -const DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::operator[](const size_t num) const -{ - return getItem(num); -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::addItem(Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.push_back(item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::insertItem(const size_t pos, Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - result = gotoItem(pos, iterator); - if (result.good()) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.insert(iterator, 1, item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } else - result = addItem(item); - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::removeItem(const size_t pos) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - if (gotoItem(pos, iterator).good()) - { - delete *iterator; - iterator = SequenceOfItems.erase(iterator); - result = EC_Normal; - } else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - /* re-initialize object */ - clear(); - /* retrieve sequence element from dataset */ - DcmSequenceOfItems *sequence; - result = dataset.findAndGetSequence(DCM_ReferencedRTPlanSequence, sequence); - if (sequence != NULL) - { - if (checkElementValue(*sequence, card, type, result, moduleName)) - { - DcmStack stack; - OFBool first = OFTrue; - /* iterate over all sequence items */ - while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) - { - DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); - if (ditem != NULL) - { - Item *item = new Item(); - if (item != NULL) - { - result = item->read(*ditem); - if (result.good()) - { - /* append new item to the end of the list */ - SequenceOfItems.push_back(item); - first = OFFalse; - } - } else - result = EC_MemoryExhausted; - } else - result = EC_CorruptedData; - } - } - } else { - DcmSequenceOfItems element(DCM_ReferencedRTPlanSequence); - checkElementValue(element, card, type, result, moduleName); - } - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - result = EC_MemoryExhausted; - DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedRTPlanSequence); - if (sequence != NULL) - { - result = EC_Normal; - /* an empty optional sequence is not written */ - if ((type == "2") || !SequenceOfItems.empty()) - { - OFListIterator(Item *) iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* iterate over all sequence items */ - while (result.good() && (iterator != last)) - { - DcmItem *item = new DcmItem(); - if (item != NULL) - { - /* append new item to the end of the sequence */ - result = sequence->append(item); - if (result.good()) - { - result = (*iterator)->write(*item); - ++iterator; - } else - delete item; - } else - result = EC_MemoryExhausted; - } - if (result.good()) - { - /* insert sequence element into the dataset */ - result = dataset.insert(sequence, OFTrue /*replaceOld*/); - } - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - if (result.good()) - { - /* forget reference to sequence object (avoid deletion below) */ - sequence = NULL; - } - } - else if (type == "1") - { - /* empty type 1 sequence not allowed */ - result = RT_EC_InvalidValue; - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - } - /* delete sequence (if not inserted into the dataset) */ - delete sequence; - } - } - return result; -} - - -// end of source file diff --git a/dcmrt/libsrc/drtrrtps4.cc b/dcmrt/libsrc/drtrrtps4.cc deleted file mode 100644 index afa0c37e..00000000 --- a/dcmrt/libsrc/drtrrtps4.cc +++ /dev/null @@ -1,573 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Source file for class DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/dcmrt/seq/drtrrtps4.h" - - -// --- item class --- - -DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::Item(const OFBool emptyDefaultItem) - : EmptyDefaultItem(emptyDefaultItem), - ReferencedSOPClassUID(DCM_ReferencedSOPClassUID), - ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID) -{ -} - - -DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::Item(const Item ©) - : EmptyDefaultItem(copy.EmptyDefaultItem), - ReferencedSOPClassUID(copy.ReferencedSOPClassUID), - ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID) -{ -} - - -DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::~Item() -{ -} - - -DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::operator=(const Item ©) -{ - if (this != ©) - { - EmptyDefaultItem = copy.EmptyDefaultItem; - ReferencedSOPClassUID = copy.ReferencedSOPClassUID; - ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID; - } - return *this; -} - - -void DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::clear() -{ - if (!EmptyDefaultItem) - { - /* clear all DICOM attributes */ - ReferencedSOPClassUID.clear(); - ReferencedSOPInstanceUID.clear(); - } -} - - -OFBool DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::isEmpty() -{ - return ReferencedSOPClassUID.isEmpty() && - ReferencedSOPInstanceUID.isEmpty(); -} - - -OFBool DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::isValid() const -{ - return !EmptyDefaultItem; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::read(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - /* re-initialize object */ - clear(); - getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedRTPlanSequence"); - getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedRTPlanSequence"); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::write(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = EC_Normal; - addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedRTPlanSequence"); - addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedRTPlanSequence"); - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ReferencedSOPClassUID, value, pos); -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos); -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ReferencedSOPClassUID.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ReferencedSOPInstanceUID.putOFStringArray(value); - } - return result; -} - - -// --- sequence class --- - -DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule(const OFBool emptyDefaultSequence) - : EmptyDefaultSequence(emptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - CurrentItem = SequenceOfItems.end(); -} - - -DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule(const DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule ©) - : EmptyDefaultSequence(copy.EmptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); -} - - -DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::operator=(const DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule ©) -{ - if (this != ©) - { - clear(); - EmptyDefaultSequence = copy.EmptyDefaultSequence; - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); - } - return *this; -} - - -DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::~DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule() -{ - clear(); -} - - -void DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::clear() -{ - if (!EmptyDefaultSequence) - { - CurrentItem = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* delete all items and free memory */ - while (CurrentItem != last) - { - delete (*CurrentItem); - CurrentItem = SequenceOfItems.erase(CurrentItem); - } - /* make sure that the list is empty */ - SequenceOfItems.clear(); - CurrentItem = SequenceOfItems.end(); - } -} - - -OFBool DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::isEmpty() -{ - return SequenceOfItems.empty(); -} - - -OFBool DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::isValid() const -{ - return !EmptyDefaultSequence; -} - - -size_t DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getNumberOfItems() const -{ - return SequenceOfItems.size(); -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::gotoFirstItem() -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - CurrentItem = SequenceOfItems.begin(); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::gotoNextItem() -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - ++CurrentItem; - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num) -{ - return gotoItem(num, CurrentItem); -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getCurrentItem(Item *&item) const -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - item = *CurrentItem; - result = EC_Normal; - } - return result; -} - - -DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getCurrentItem() -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -const DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getCurrentItem() const -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num, Item *&item) -{ - OFListIterator(Item *) iterator; - OFCondition result = gotoItem(num, iterator); - if (result.good()) - item = *iterator; - return result; -} - - -DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num) -{ - OFListIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -const DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num) const -{ - OFListConstIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::operator[](const size_t num) -{ - return getItem(num); -} - - -const DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::operator[](const size_t num) const -{ - return getItem(num); -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::addItem(Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.push_back(item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::insertItem(const size_t pos, Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - result = gotoItem(pos, iterator); - if (result.good()) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.insert(iterator, 1, item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } else - result = addItem(item); - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::removeItem(const size_t pos) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - if (gotoItem(pos, iterator).good()) - { - delete *iterator; - iterator = SequenceOfItems.erase(iterator); - result = EC_Normal; - } else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - /* re-initialize object */ - clear(); - /* retrieve sequence element from dataset */ - DcmSequenceOfItems *sequence; - result = dataset.findAndGetSequence(DCM_ReferencedRTPlanSequence, sequence); - if (sequence != NULL) - { - if (checkElementValue(*sequence, card, type, result, moduleName)) - { - DcmStack stack; - OFBool first = OFTrue; - /* iterate over all sequence items */ - while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) - { - DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); - if (ditem != NULL) - { - Item *item = new Item(); - if (item != NULL) - { - result = item->read(*ditem); - if (result.good()) - { - /* append new item to the end of the list */ - SequenceOfItems.push_back(item); - first = OFFalse; - } - } else - result = EC_MemoryExhausted; - } else - result = EC_CorruptedData; - } - } - } else { - DcmSequenceOfItems element(DCM_ReferencedRTPlanSequence); - checkElementValue(element, card, type, result, moduleName); - } - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - result = EC_MemoryExhausted; - DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedRTPlanSequence); - if (sequence != NULL) - { - result = EC_Normal; - /* an empty optional sequence is not written */ - if ((type == "2") || !SequenceOfItems.empty()) - { - OFListIterator(Item *) iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* iterate over all sequence items */ - while (result.good() && (iterator != last)) - { - DcmItem *item = new DcmItem(); - if (item != NULL) - { - /* append new item to the end of the sequence */ - result = sequence->append(item); - if (result.good()) - { - result = (*iterator)->write(*item); - ++iterator; - } else - delete item; - } else - result = EC_MemoryExhausted; - } - if (result.good()) - { - /* insert sequence element into the dataset */ - result = dataset.insert(sequence, OFTrue /*replaceOld*/); - } - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - if (result.good()) - { - /* forget reference to sequence object (avoid deletion below) */ - sequence = NULL; - } - } - else if (type == "1") - { - /* empty type 1 sequence not allowed */ - result = RT_EC_InvalidValue; - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - } - /* delete sequence (if not inserted into the dataset) */ - delete sequence; - } - } - return result; -} - - -// end of source file diff --git a/dcmrt/libsrc/drtrrtps5.cc b/dcmrt/libsrc/drtrrtps5.cc deleted file mode 100644 index 785aaf0b..00000000 --- a/dcmrt/libsrc/drtrrtps5.cc +++ /dev/null @@ -1,573 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Source file for class DRTReferencedRTPlanSequenceInRTImageModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/dcmrt/seq/drtrrtps5.h" - - -// --- item class --- - -DRTReferencedRTPlanSequenceInRTImageModule::Item::Item(const OFBool emptyDefaultItem) - : EmptyDefaultItem(emptyDefaultItem), - ReferencedSOPClassUID(DCM_ReferencedSOPClassUID), - ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID) -{ -} - - -DRTReferencedRTPlanSequenceInRTImageModule::Item::Item(const Item ©) - : EmptyDefaultItem(copy.EmptyDefaultItem), - ReferencedSOPClassUID(copy.ReferencedSOPClassUID), - ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID) -{ -} - - -DRTReferencedRTPlanSequenceInRTImageModule::Item::~Item() -{ -} - - -DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::Item::operator=(const Item ©) -{ - if (this != ©) - { - EmptyDefaultItem = copy.EmptyDefaultItem; - ReferencedSOPClassUID = copy.ReferencedSOPClassUID; - ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID; - } - return *this; -} - - -void DRTReferencedRTPlanSequenceInRTImageModule::Item::clear() -{ - if (!EmptyDefaultItem) - { - /* clear all DICOM attributes */ - ReferencedSOPClassUID.clear(); - ReferencedSOPInstanceUID.clear(); - } -} - - -OFBool DRTReferencedRTPlanSequenceInRTImageModule::Item::isEmpty() -{ - return ReferencedSOPClassUID.isEmpty() && - ReferencedSOPInstanceUID.isEmpty(); -} - - -OFBool DRTReferencedRTPlanSequenceInRTImageModule::Item::isValid() const -{ - return !EmptyDefaultItem; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTImageModule::Item::read(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - /* re-initialize object */ - clear(); - getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedRTPlanSequence"); - getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedRTPlanSequence"); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTImageModule::Item::write(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = EC_Normal; - addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedRTPlanSequence"); - addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedRTPlanSequence"); - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTImageModule::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ReferencedSOPClassUID, value, pos); -} - - -OFCondition DRTReferencedRTPlanSequenceInRTImageModule::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos); -} - - -OFCondition DRTReferencedRTPlanSequenceInRTImageModule::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ReferencedSOPClassUID.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTImageModule::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ReferencedSOPInstanceUID.putOFStringArray(value); - } - return result; -} - - -// --- sequence class --- - -DRTReferencedRTPlanSequenceInRTImageModule::DRTReferencedRTPlanSequenceInRTImageModule(const OFBool emptyDefaultSequence) - : EmptyDefaultSequence(emptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - CurrentItem = SequenceOfItems.end(); -} - - -DRTReferencedRTPlanSequenceInRTImageModule::DRTReferencedRTPlanSequenceInRTImageModule(const DRTReferencedRTPlanSequenceInRTImageModule ©) - : EmptyDefaultSequence(copy.EmptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); -} - - -DRTReferencedRTPlanSequenceInRTImageModule &DRTReferencedRTPlanSequenceInRTImageModule::operator=(const DRTReferencedRTPlanSequenceInRTImageModule ©) -{ - if (this != ©) - { - clear(); - EmptyDefaultSequence = copy.EmptyDefaultSequence; - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); - } - return *this; -} - - -DRTReferencedRTPlanSequenceInRTImageModule::~DRTReferencedRTPlanSequenceInRTImageModule() -{ - clear(); -} - - -void DRTReferencedRTPlanSequenceInRTImageModule::clear() -{ - if (!EmptyDefaultSequence) - { - CurrentItem = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* delete all items and free memory */ - while (CurrentItem != last) - { - delete (*CurrentItem); - CurrentItem = SequenceOfItems.erase(CurrentItem); - } - /* make sure that the list is empty */ - SequenceOfItems.clear(); - CurrentItem = SequenceOfItems.end(); - } -} - - -OFBool DRTReferencedRTPlanSequenceInRTImageModule::isEmpty() -{ - return SequenceOfItems.empty(); -} - - -OFBool DRTReferencedRTPlanSequenceInRTImageModule::isValid() const -{ - return !EmptyDefaultSequence; -} - - -size_t DRTReferencedRTPlanSequenceInRTImageModule::getNumberOfItems() const -{ - return SequenceOfItems.size(); -} - - -OFCondition DRTReferencedRTPlanSequenceInRTImageModule::gotoFirstItem() -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - CurrentItem = SequenceOfItems.begin(); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTImageModule::gotoNextItem() -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - ++CurrentItem; - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTImageModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTImageModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTImageModule::gotoItem(const size_t num) -{ - return gotoItem(num, CurrentItem); -} - - -OFCondition DRTReferencedRTPlanSequenceInRTImageModule::getCurrentItem(Item *&item) const -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - item = *CurrentItem; - result = EC_Normal; - } - return result; -} - - -DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::getCurrentItem() -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -const DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::getCurrentItem() const -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTImageModule::getItem(const size_t num, Item *&item) -{ - OFListIterator(Item *) iterator; - OFCondition result = gotoItem(num, iterator); - if (result.good()) - item = *iterator; - return result; -} - - -DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::getItem(const size_t num) -{ - OFListIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -const DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::getItem(const size_t num) const -{ - OFListConstIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::operator[](const size_t num) -{ - return getItem(num); -} - - -const DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::operator[](const size_t num) const -{ - return getItem(num); -} - - -OFCondition DRTReferencedRTPlanSequenceInRTImageModule::addItem(Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.push_back(item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTImageModule::insertItem(const size_t pos, Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - result = gotoItem(pos, iterator); - if (result.good()) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.insert(iterator, 1, item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } else - result = addItem(item); - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTImageModule::removeItem(const size_t pos) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - if (gotoItem(pos, iterator).good()) - { - delete *iterator; - iterator = SequenceOfItems.erase(iterator); - result = EC_Normal; - } else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTImageModule::read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - /* re-initialize object */ - clear(); - /* retrieve sequence element from dataset */ - DcmSequenceOfItems *sequence; - result = dataset.findAndGetSequence(DCM_ReferencedRTPlanSequence, sequence); - if (sequence != NULL) - { - if (checkElementValue(*sequence, card, type, result, moduleName)) - { - DcmStack stack; - OFBool first = OFTrue; - /* iterate over all sequence items */ - while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) - { - DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); - if (ditem != NULL) - { - Item *item = new Item(); - if (item != NULL) - { - result = item->read(*ditem); - if (result.good()) - { - /* append new item to the end of the list */ - SequenceOfItems.push_back(item); - first = OFFalse; - } - } else - result = EC_MemoryExhausted; - } else - result = EC_CorruptedData; - } - } - } else { - DcmSequenceOfItems element(DCM_ReferencedRTPlanSequence); - checkElementValue(element, card, type, result, moduleName); - } - } - return result; -} - - -OFCondition DRTReferencedRTPlanSequenceInRTImageModule::write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - result = EC_MemoryExhausted; - DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedRTPlanSequence); - if (sequence != NULL) - { - result = EC_Normal; - /* an empty optional sequence is not written */ - if ((type == "2") || !SequenceOfItems.empty()) - { - OFListIterator(Item *) iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* iterate over all sequence items */ - while (result.good() && (iterator != last)) - { - DcmItem *item = new DcmItem(); - if (item != NULL) - { - /* append new item to the end of the sequence */ - result = sequence->append(item); - if (result.good()) - { - result = (*iterator)->write(*item); - ++iterator; - } else - delete item; - } else - result = EC_MemoryExhausted; - } - if (result.good()) - { - /* insert sequence element into the dataset */ - result = dataset.insert(sequence, OFTrue /*replaceOld*/); - } - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - if (result.good()) - { - /* forget reference to sequence object (avoid deletion below) */ - sequence = NULL; - } - } - else if (type == "1") - { - /* empty type 1 sequence not allowed */ - result = RT_EC_InvalidValue; - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - } - /* delete sequence (if not inserted into the dataset) */ - delete sequence; - } - } - return result; -} - - -// end of source file diff --git a/dcmrt/libsrc/drtrscs.cc b/dcmrt/libsrc/drtrscs.cc index 7f8de565..f8fb37e9 100644 --- a/dcmrt/libsrc/drtrscs.cc +++ b/dcmrt/libsrc/drtrscs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTRequestingServiceCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -656,10 +656,12 @@ OFCondition DRTRequestingServiceCodeSequence::gotoFirstItem() OFCondition DRTRequestingServiceCodeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrsers.cc b/dcmrt/libsrc/drtrsers.cc index a72557cd..5da2c9b9 100644 --- a/dcmrt/libsrc/drtrsers.cc +++ b/dcmrt/libsrc/drtrsers.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTReferencedSeriesSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -250,10 +250,12 @@ OFCondition DRTReferencedSeriesSequence::gotoFirstItem() OFCondition DRTReferencedSeriesSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrses.cc b/dcmrt/libsrc/drtrses.cc index 0945ebd9..ba4c29a6 100644 --- a/dcmrt/libsrc/drtrses.cc +++ b/dcmrt/libsrc/drtrses.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTRTReferencedSeriesSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -250,10 +250,12 @@ OFCondition DRTRTReferencedSeriesSequence::gotoFirstItem() OFCondition DRTRTReferencedSeriesSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrshs.cc b/dcmrt/libsrc/drtrshs.cc index 2cc059d0..c57b2150 100644 --- a/dcmrt/libsrc/drtrshs.cc +++ b/dcmrt/libsrc/drtrshs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTRangeShifterSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -368,10 +368,12 @@ OFCondition DRTRangeShifterSequence::gotoFirstItem() OFCondition DRTRangeShifterSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrshs1.cc b/dcmrt/libsrc/drtrshs1.cc new file mode 100644 index 00000000..4d54cb0e --- /dev/null +++ b/dcmrt/libsrc/drtrshs1.cc @@ -0,0 +1,634 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTRangeShifterSettingsSequenceInRTIonBeamsModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtrshs1.h" + + +// --- item class --- + +DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + IsocenterToRangeShifterDistance(DCM_IsocenterToRangeShifterDistance), + RangeShifterSetting(DCM_RangeShifterSetting), + RangeShifterWaterEquivalentThickness(DCM_RangeShifterWaterEquivalentThickness), + ReferencedRangeShifterNumber(DCM_ReferencedRangeShifterNumber) +{ +} + + +DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + IsocenterToRangeShifterDistance(copy.IsocenterToRangeShifterDistance), + RangeShifterSetting(copy.RangeShifterSetting), + RangeShifterWaterEquivalentThickness(copy.RangeShifterWaterEquivalentThickness), + ReferencedRangeShifterNumber(copy.ReferencedRangeShifterNumber) +{ +} + + +DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::~Item() +{ +} + + +DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + IsocenterToRangeShifterDistance = copy.IsocenterToRangeShifterDistance; + RangeShifterSetting = copy.RangeShifterSetting; + RangeShifterWaterEquivalentThickness = copy.RangeShifterWaterEquivalentThickness; + ReferencedRangeShifterNumber = copy.ReferencedRangeShifterNumber; + } + return *this; +} + + +void DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + ReferencedRangeShifterNumber.clear(); + RangeShifterSetting.clear(); + IsocenterToRangeShifterDistance.clear(); + RangeShifterWaterEquivalentThickness.clear(); + } +} + + +OFBool DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::isEmpty() +{ + return ReferencedRangeShifterNumber.isEmpty() && + RangeShifterSetting.isEmpty() && + IsocenterToRangeShifterDistance.isEmpty() && + RangeShifterWaterEquivalentThickness.isEmpty(); +} + + +OFBool DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, ReferencedRangeShifterNumber, "1", "1", "RangeShifterSettingsSequence"); + getAndCheckElementFromDataset(item, RangeShifterSetting, "1", "1", "RangeShifterSettingsSequence"); + getAndCheckElementFromDataset(item, IsocenterToRangeShifterDistance, "1", "3", "RangeShifterSettingsSequence"); + getAndCheckElementFromDataset(item, RangeShifterWaterEquivalentThickness, "1", "3", "RangeShifterSettingsSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmIntegerString(ReferencedRangeShifterNumber), "1", "1", "RangeShifterSettingsSequence"); + addElementToDataset(result, item, new DcmLongString(RangeShifterSetting), "1", "1", "RangeShifterSettingsSequence"); + addElementToDataset(result, item, new DcmFloatingPointSingle(IsocenterToRangeShifterDistance), "1", "3", "RangeShifterSettingsSequence"); + addElementToDataset(result, item, new DcmFloatingPointSingle(RangeShifterWaterEquivalentThickness), "1", "3", "RangeShifterSettingsSequence"); + } + return result; +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::getIsocenterToRangeShifterDistance(Float32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointSingle &, IsocenterToRangeShifterDistance).getFloat32(value, pos); +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::getRangeShifterSetting(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(RangeShifterSetting, value, pos); +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::getRangeShifterWaterEquivalentThickness(Float32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmFloatingPointSingle &, RangeShifterWaterEquivalentThickness).getFloat32(value, pos); +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::getReferencedRangeShifterNumber(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedRangeShifterNumber, value, pos); +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::getReferencedRangeShifterNumber(Sint32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmIntegerString &, ReferencedRangeShifterNumber).getSint32(value, pos); +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::setIsocenterToRangeShifterDistance(const Float32 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return IsocenterToRangeShifterDistance.putFloat32(value, pos); +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::setRangeShifterSetting(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = RangeShifterSetting.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::setRangeShifterWaterEquivalentThickness(const Float32 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return RangeShifterWaterEquivalentThickness.putFloat32(value, pos); +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::setReferencedRangeShifterNumber(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedRangeShifterNumber.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTRangeShifterSettingsSequenceInRTIonBeamsModule::DRTRangeShifterSettingsSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTRangeShifterSettingsSequenceInRTIonBeamsModule::DRTRangeShifterSettingsSequenceInRTIonBeamsModule(const DRTRangeShifterSettingsSequenceInRTIonBeamsModule ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTRangeShifterSettingsSequenceInRTIonBeamsModule &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::operator=(const DRTRangeShifterSettingsSequenceInRTIonBeamsModule ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTRangeShifterSettingsSequenceInRTIonBeamsModule::~DRTRangeShifterSettingsSequenceInRTIonBeamsModule() +{ + clear(); +} + + +void DRTRangeShifterSettingsSequenceInRTIonBeamsModule::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTRangeShifterSettingsSequenceInRTIonBeamsModule::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTRangeShifterSettingsSequenceInRTIonBeamsModule::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_RangeShifterSettingsSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_RangeShifterSettingsSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_RangeShifterSettingsSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtrshs2.cc b/dcmrt/libsrc/drtrshs2.cc new file mode 100644 index 00000000..a3d94766 --- /dev/null +++ b/dcmrt/libsrc/drtrshs2.cc @@ -0,0 +1,584 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtrshs2.h" + + +// --- item class --- + +DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + RangeShifterSetting(DCM_RangeShifterSetting), + ReferencedRangeShifterNumber(DCM_ReferencedRangeShifterNumber) +{ +} + + +DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + RangeShifterSetting(copy.RangeShifterSetting), + ReferencedRangeShifterNumber(copy.ReferencedRangeShifterNumber) +{ +} + + +DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::~Item() +{ +} + + +DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + RangeShifterSetting = copy.RangeShifterSetting; + ReferencedRangeShifterNumber = copy.ReferencedRangeShifterNumber; + } + return *this; +} + + +void DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + ReferencedRangeShifterNumber.clear(); + RangeShifterSetting.clear(); + } +} + + +OFBool DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::isEmpty() +{ + return ReferencedRangeShifterNumber.isEmpty() && + RangeShifterSetting.isEmpty(); +} + + +OFBool DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, ReferencedRangeShifterNumber, "1", "1", "RangeShifterSettingsSequence"); + getAndCheckElementFromDataset(item, RangeShifterSetting, "1", "1", "RangeShifterSettingsSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmIntegerString(ReferencedRangeShifterNumber), "1", "1", "RangeShifterSettingsSequence"); + addElementToDataset(result, item, new DcmLongString(RangeShifterSetting), "1", "1", "RangeShifterSettingsSequence"); + } + return result; +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getRangeShifterSetting(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(RangeShifterSetting, value, pos); +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getReferencedRangeShifterNumber(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedRangeShifterNumber, value, pos); +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getReferencedRangeShifterNumber(Sint32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmIntegerString &, ReferencedRangeShifterNumber).getSint32(value, pos); +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::setRangeShifterSetting(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = RangeShifterSetting.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::setReferencedRangeShifterNumber(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedRangeShifterNumber.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule(const DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::operator=(const DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::~DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule() +{ + clear(); +} + + +void DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_RangeShifterSettingsSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_RangeShifterSettingsSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_RangeShifterSettingsSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtrshs6.cc b/dcmrt/libsrc/drtrshs6.cc deleted file mode 100644 index 2eba9102..00000000 --- a/dcmrt/libsrc/drtrshs6.cc +++ /dev/null @@ -1,632 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Source file for class DRTRangeShifterSettingsSequenceInRTIonBeamsModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/dcmrt/seq/drtrshs6.h" - - -// --- item class --- - -DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::Item(const OFBool emptyDefaultItem) - : EmptyDefaultItem(emptyDefaultItem), - IsocenterToRangeShifterDistance(DCM_IsocenterToRangeShifterDistance), - RangeShifterSetting(DCM_RangeShifterSetting), - RangeShifterWaterEquivalentThickness(DCM_RangeShifterWaterEquivalentThickness), - ReferencedRangeShifterNumber(DCM_ReferencedRangeShifterNumber) -{ -} - - -DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::Item(const Item ©) - : EmptyDefaultItem(copy.EmptyDefaultItem), - IsocenterToRangeShifterDistance(copy.IsocenterToRangeShifterDistance), - RangeShifterSetting(copy.RangeShifterSetting), - RangeShifterWaterEquivalentThickness(copy.RangeShifterWaterEquivalentThickness), - ReferencedRangeShifterNumber(copy.ReferencedRangeShifterNumber) -{ -} - - -DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::~Item() -{ -} - - -DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::operator=(const Item ©) -{ - if (this != ©) - { - EmptyDefaultItem = copy.EmptyDefaultItem; - IsocenterToRangeShifterDistance = copy.IsocenterToRangeShifterDistance; - RangeShifterSetting = copy.RangeShifterSetting; - RangeShifterWaterEquivalentThickness = copy.RangeShifterWaterEquivalentThickness; - ReferencedRangeShifterNumber = copy.ReferencedRangeShifterNumber; - } - return *this; -} - - -void DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::clear() -{ - if (!EmptyDefaultItem) - { - /* clear all DICOM attributes */ - ReferencedRangeShifterNumber.clear(); - RangeShifterSetting.clear(); - IsocenterToRangeShifterDistance.clear(); - RangeShifterWaterEquivalentThickness.clear(); - } -} - - -OFBool DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::isEmpty() -{ - return ReferencedRangeShifterNumber.isEmpty() && - RangeShifterSetting.isEmpty() && - IsocenterToRangeShifterDistance.isEmpty() && - RangeShifterWaterEquivalentThickness.isEmpty(); -} - - -OFBool DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::isValid() const -{ - return !EmptyDefaultItem; -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::read(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - /* re-initialize object */ - clear(); - getAndCheckElementFromDataset(item, ReferencedRangeShifterNumber, "1", "1", "RangeShifterSettingsSequence"); - getAndCheckElementFromDataset(item, RangeShifterSetting, "1", "1", "RangeShifterSettingsSequence"); - getAndCheckElementFromDataset(item, IsocenterToRangeShifterDistance, "1", "3", "RangeShifterSettingsSequence"); - getAndCheckElementFromDataset(item, RangeShifterWaterEquivalentThickness, "1", "3", "RangeShifterSettingsSequence"); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::write(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = EC_Normal; - addElementToDataset(result, item, new DcmIntegerString(ReferencedRangeShifterNumber), "1", "1", "RangeShifterSettingsSequence"); - addElementToDataset(result, item, new DcmLongString(RangeShifterSetting), "1", "1", "RangeShifterSettingsSequence"); - addElementToDataset(result, item, new DcmFloatingPointSingle(IsocenterToRangeShifterDistance), "1", "3", "RangeShifterSettingsSequence"); - addElementToDataset(result, item, new DcmFloatingPointSingle(RangeShifterWaterEquivalentThickness), "1", "3", "RangeShifterSettingsSequence"); - } - return result; -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::getIsocenterToRangeShifterDistance(Float32 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmFloatingPointSingle &, IsocenterToRangeShifterDistance).getFloat32(value, pos); -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::getRangeShifterSetting(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(RangeShifterSetting, value, pos); -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::getRangeShifterWaterEquivalentThickness(Float32 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmFloatingPointSingle &, RangeShifterWaterEquivalentThickness).getFloat32(value, pos); -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::getReferencedRangeShifterNumber(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ReferencedRangeShifterNumber, value, pos); -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::getReferencedRangeShifterNumber(Sint32 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmIntegerString &, ReferencedRangeShifterNumber).getSint32(value, pos); -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::setIsocenterToRangeShifterDistance(const Float32 value, const unsigned long pos) -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return IsocenterToRangeShifterDistance.putFloat32(value, pos); -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::setRangeShifterSetting(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = RangeShifterSetting.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::setRangeShifterWaterEquivalentThickness(const Float32 value, const unsigned long pos) -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return RangeShifterWaterEquivalentThickness.putFloat32(value, pos); -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::setReferencedRangeShifterNumber(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ReferencedRangeShifterNumber.putOFStringArray(value); - } - return result; -} - - -// --- sequence class --- - -DRTRangeShifterSettingsSequenceInRTIonBeamsModule::DRTRangeShifterSettingsSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence) - : EmptyDefaultSequence(emptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - CurrentItem = SequenceOfItems.end(); -} - - -DRTRangeShifterSettingsSequenceInRTIonBeamsModule::DRTRangeShifterSettingsSequenceInRTIonBeamsModule(const DRTRangeShifterSettingsSequenceInRTIonBeamsModule ©) - : EmptyDefaultSequence(copy.EmptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); -} - - -DRTRangeShifterSettingsSequenceInRTIonBeamsModule &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::operator=(const DRTRangeShifterSettingsSequenceInRTIonBeamsModule ©) -{ - if (this != ©) - { - clear(); - EmptyDefaultSequence = copy.EmptyDefaultSequence; - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); - } - return *this; -} - - -DRTRangeShifterSettingsSequenceInRTIonBeamsModule::~DRTRangeShifterSettingsSequenceInRTIonBeamsModule() -{ - clear(); -} - - -void DRTRangeShifterSettingsSequenceInRTIonBeamsModule::clear() -{ - if (!EmptyDefaultSequence) - { - CurrentItem = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* delete all items and free memory */ - while (CurrentItem != last) - { - delete (*CurrentItem); - CurrentItem = SequenceOfItems.erase(CurrentItem); - } - /* make sure that the list is empty */ - SequenceOfItems.clear(); - CurrentItem = SequenceOfItems.end(); - } -} - - -OFBool DRTRangeShifterSettingsSequenceInRTIonBeamsModule::isEmpty() -{ - return SequenceOfItems.empty(); -} - - -OFBool DRTRangeShifterSettingsSequenceInRTIonBeamsModule::isValid() const -{ - return !EmptyDefaultSequence; -} - - -size_t DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getNumberOfItems() const -{ - return SequenceOfItems.size(); -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::gotoFirstItem() -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - CurrentItem = SequenceOfItems.begin(); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::gotoNextItem() -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - ++CurrentItem; - result = EC_Normal; - } - return result; -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num) -{ - return gotoItem(num, CurrentItem); -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getCurrentItem(Item *&item) const -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - item = *CurrentItem; - result = EC_Normal; - } - return result; -} - - -DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getCurrentItem() -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -const DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getCurrentItem() const -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item) -{ - OFListIterator(Item *) iterator; - OFCondition result = gotoItem(num, iterator); - if (result.good()) - item = *iterator; - return result; -} - - -DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getItem(const size_t num) -{ - OFListIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -const DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getItem(const size_t num) const -{ - OFListConstIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::operator[](const size_t num) -{ - return getItem(num); -} - - -const DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::operator[](const size_t num) const -{ - return getItem(num); -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::addItem(Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.push_back(item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } - return result; -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - result = gotoItem(pos, iterator); - if (result.good()) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.insert(iterator, 1, item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } else - result = addItem(item); - } - return result; -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::removeItem(const size_t pos) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - if (gotoItem(pos, iterator).good()) - { - delete *iterator; - iterator = SequenceOfItems.erase(iterator); - result = EC_Normal; - } else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - /* re-initialize object */ - clear(); - /* retrieve sequence element from dataset */ - DcmSequenceOfItems *sequence; - result = dataset.findAndGetSequence(DCM_RangeShifterSettingsSequence, sequence); - if (sequence != NULL) - { - if (checkElementValue(*sequence, card, type, result, moduleName)) - { - DcmStack stack; - OFBool first = OFTrue; - /* iterate over all sequence items */ - while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) - { - DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); - if (ditem != NULL) - { - Item *item = new Item(); - if (item != NULL) - { - result = item->read(*ditem); - if (result.good()) - { - /* append new item to the end of the list */ - SequenceOfItems.push_back(item); - first = OFFalse; - } - } else - result = EC_MemoryExhausted; - } else - result = EC_CorruptedData; - } - } - } else { - DcmSequenceOfItems element(DCM_RangeShifterSettingsSequence); - checkElementValue(element, card, type, result, moduleName); - } - } - return result; -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - result = EC_MemoryExhausted; - DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_RangeShifterSettingsSequence); - if (sequence != NULL) - { - result = EC_Normal; - /* an empty optional sequence is not written */ - if ((type == "2") || !SequenceOfItems.empty()) - { - OFListIterator(Item *) iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* iterate over all sequence items */ - while (result.good() && (iterator != last)) - { - DcmItem *item = new DcmItem(); - if (item != NULL) - { - /* append new item to the end of the sequence */ - result = sequence->append(item); - if (result.good()) - { - result = (*iterator)->write(*item); - ++iterator; - } else - delete item; - } else - result = EC_MemoryExhausted; - } - if (result.good()) - { - /* insert sequence element into the dataset */ - result = dataset.insert(sequence, OFTrue /*replaceOld*/); - } - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - if (result.good()) - { - /* forget reference to sequence object (avoid deletion below) */ - sequence = NULL; - } - } - else if (type == "1") - { - /* empty type 1 sequence not allowed */ - result = RT_EC_InvalidValue; - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - } - /* delete sequence (if not inserted into the dataset) */ - delete sequence; - } - } - return result; -} - - -// end of source file diff --git a/dcmrt/libsrc/drtrshs7.cc b/dcmrt/libsrc/drtrshs7.cc deleted file mode 100644 index 45a8e6c6..00000000 --- a/dcmrt/libsrc/drtrshs7.cc +++ /dev/null @@ -1,582 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Source file for class DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/dcmrt/seq/drtrshs7.h" - - -// --- item class --- - -DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::Item(const OFBool emptyDefaultItem) - : EmptyDefaultItem(emptyDefaultItem), - RangeShifterSetting(DCM_RangeShifterSetting), - ReferencedRangeShifterNumber(DCM_ReferencedRangeShifterNumber) -{ -} - - -DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::Item(const Item ©) - : EmptyDefaultItem(copy.EmptyDefaultItem), - RangeShifterSetting(copy.RangeShifterSetting), - ReferencedRangeShifterNumber(copy.ReferencedRangeShifterNumber) -{ -} - - -DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::~Item() -{ -} - - -DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::operator=(const Item ©) -{ - if (this != ©) - { - EmptyDefaultItem = copy.EmptyDefaultItem; - RangeShifterSetting = copy.RangeShifterSetting; - ReferencedRangeShifterNumber = copy.ReferencedRangeShifterNumber; - } - return *this; -} - - -void DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::clear() -{ - if (!EmptyDefaultItem) - { - /* clear all DICOM attributes */ - ReferencedRangeShifterNumber.clear(); - RangeShifterSetting.clear(); - } -} - - -OFBool DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::isEmpty() -{ - return ReferencedRangeShifterNumber.isEmpty() && - RangeShifterSetting.isEmpty(); -} - - -OFBool DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::isValid() const -{ - return !EmptyDefaultItem; -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::read(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - /* re-initialize object */ - clear(); - getAndCheckElementFromDataset(item, ReferencedRangeShifterNumber, "1", "1", "RangeShifterSettingsSequence"); - getAndCheckElementFromDataset(item, RangeShifterSetting, "1", "1", "RangeShifterSettingsSequence"); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::write(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = EC_Normal; - addElementToDataset(result, item, new DcmIntegerString(ReferencedRangeShifterNumber), "1", "1", "RangeShifterSettingsSequence"); - addElementToDataset(result, item, new DcmLongString(RangeShifterSetting), "1", "1", "RangeShifterSettingsSequence"); - } - return result; -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getRangeShifterSetting(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(RangeShifterSetting, value, pos); -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getReferencedRangeShifterNumber(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ReferencedRangeShifterNumber, value, pos); -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getReferencedRangeShifterNumber(Sint32 &value, const unsigned long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return OFconst_cast(DcmIntegerString &, ReferencedRangeShifterNumber).getSint32(value, pos); -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::setRangeShifterSetting(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = RangeShifterSetting.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::setReferencedRangeShifterNumber(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ReferencedRangeShifterNumber.putOFStringArray(value); - } - return result; -} - - -// --- sequence class --- - -DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence) - : EmptyDefaultSequence(emptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - CurrentItem = SequenceOfItems.end(); -} - - -DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule(const DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule ©) - : EmptyDefaultSequence(copy.EmptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); -} - - -DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::operator=(const DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule ©) -{ - if (this != ©) - { - clear(); - EmptyDefaultSequence = copy.EmptyDefaultSequence; - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); - } - return *this; -} - - -DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::~DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule() -{ - clear(); -} - - -void DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::clear() -{ - if (!EmptyDefaultSequence) - { - CurrentItem = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* delete all items and free memory */ - while (CurrentItem != last) - { - delete (*CurrentItem); - CurrentItem = SequenceOfItems.erase(CurrentItem); - } - /* make sure that the list is empty */ - SequenceOfItems.clear(); - CurrentItem = SequenceOfItems.end(); - } -} - - -OFBool DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::isEmpty() -{ - return SequenceOfItems.empty(); -} - - -OFBool DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::isValid() const -{ - return !EmptyDefaultSequence; -} - - -size_t DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getNumberOfItems() const -{ - return SequenceOfItems.size(); -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::gotoFirstItem() -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - CurrentItem = SequenceOfItems.begin(); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::gotoNextItem() -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - ++CurrentItem; - result = EC_Normal; - } - return result; -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num) -{ - return gotoItem(num, CurrentItem); -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem(Item *&item) const -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - item = *CurrentItem; - result = EC_Normal; - } - return result; -} - - -DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem() -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -const DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem() const -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num, Item *&item) -{ - OFListIterator(Item *) iterator; - OFCondition result = gotoItem(num, iterator); - if (result.good()) - item = *iterator; - return result; -} - - -DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) -{ - OFListIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -const DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) const -{ - OFListConstIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) -{ - return getItem(num); -} - - -const DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) const -{ - return getItem(num); -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::addItem(Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.push_back(item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } - return result; -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::insertItem(const size_t pos, Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - result = gotoItem(pos, iterator); - if (result.good()) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.insert(iterator, 1, item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } else - result = addItem(item); - } - return result; -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::removeItem(const size_t pos) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - if (gotoItem(pos, iterator).good()) - { - delete *iterator; - iterator = SequenceOfItems.erase(iterator); - result = EC_Normal; - } else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - /* re-initialize object */ - clear(); - /* retrieve sequence element from dataset */ - DcmSequenceOfItems *sequence; - result = dataset.findAndGetSequence(DCM_RangeShifterSettingsSequence, sequence); - if (sequence != NULL) - { - if (checkElementValue(*sequence, card, type, result, moduleName)) - { - DcmStack stack; - OFBool first = OFTrue; - /* iterate over all sequence items */ - while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) - { - DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); - if (ditem != NULL) - { - Item *item = new Item(); - if (item != NULL) - { - result = item->read(*ditem); - if (result.good()) - { - /* append new item to the end of the list */ - SequenceOfItems.push_back(item); - first = OFFalse; - } - } else - result = EC_MemoryExhausted; - } else - result = EC_CorruptedData; - } - } - } else { - DcmSequenceOfItems element(DCM_RangeShifterSettingsSequence); - checkElementValue(element, card, type, result, moduleName); - } - } - return result; -} - - -OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - result = EC_MemoryExhausted; - DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_RangeShifterSettingsSequence); - if (sequence != NULL) - { - result = EC_Normal; - /* an empty optional sequence is not written */ - if ((type == "2") || !SequenceOfItems.empty()) - { - OFListIterator(Item *) iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* iterate over all sequence items */ - while (result.good() && (iterator != last)) - { - DcmItem *item = new DcmItem(); - if (item != NULL) - { - /* append new item to the end of the sequence */ - result = sequence->append(item); - if (result.good()) - { - result = (*iterator)->write(*item); - ++iterator; - } else - delete item; - } else - result = EC_MemoryExhausted; - } - if (result.good()) - { - /* insert sequence element into the dataset */ - result = dataset.insert(sequence, OFTrue /*replaceOld*/); - } - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - if (result.good()) - { - /* forget reference to sequence object (avoid deletion below) */ - sequence = NULL; - } - } - else if (type == "1") - { - /* empty type 1 sequence not allowed */ - result = RT_EC_InvalidValue; - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - } - /* delete sequence (if not inserted into the dataset) */ - delete sequence; - } - } - return result; -} - - -// end of source file diff --git a/dcmrt/libsrc/drtrsis.cc b/dcmrt/libsrc/drtrsis.cc index 2bdba75b..e2d6d8d5 100644 --- a/dcmrt/libsrc/drtrsis.cc +++ b/dcmrt/libsrc/drtrsis.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTReferencedSetupImageSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -364,10 +364,12 @@ OFCondition DRTReferencedSetupImageSequence::gotoFirstItem() OFCondition DRTReferencedSetupImageSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrsns.cc b/dcmrt/libsrc/drtrsns.cc index 8e3753fb..4b211c93 100644 --- a/dcmrt/libsrc/drtrsns.cc +++ b/dcmrt/libsrc/drtrsns.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTRecordedSnoutSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -272,10 +272,12 @@ OFCondition DRTRecordedSnoutSequence::gotoFirstItem() OFCondition DRTRecordedSnoutSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrsos.cc b/dcmrt/libsrc/drtrsos.cc index 2ac0dd7c..06c0c2d9 100644 --- a/dcmrt/libsrc/drtrsos.cc +++ b/dcmrt/libsrc/drtrsos.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTReferencedSOPSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -364,10 +364,12 @@ OFCondition DRTReferencedSOPSequence::gotoFirstItem() OFCondition DRTReferencedSOPSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrsrs.cc b/dcmrt/libsrc/drtrsrs.cc index 69f0edad..5cc0daff 100644 --- a/dcmrt/libsrc/drtrsrs.cc +++ b/dcmrt/libsrc/drtrsrs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTReferencedSpatialRegistrationSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -272,10 +272,12 @@ OFCondition DRTReferencedSpatialRegistrationSequence::gotoFirstItem() OFCondition DRTReferencedSpatialRegistrationSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrss.cc b/dcmrt/libsrc/drtrss.cc index 8b276972..19f67ed9 100644 --- a/dcmrt/libsrc/drtrss.cc +++ b/dcmrt/libsrc/drtrss.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTReferencedStudySequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -272,10 +272,12 @@ OFCondition DRTReferencedStudySequence::gotoFirstItem() OFCondition DRTReferencedStudySequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrsss.cc b/dcmrt/libsrc/drtrsss.cc index 46e3250c..a1480a08 100644 --- a/dcmrt/libsrc/drtrsss.cc +++ b/dcmrt/libsrc/drtrsss.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTReferencedStructureSetSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -272,10 +272,12 @@ OFCondition DRTReferencedStructureSetSequence::gotoFirstItem() OFCondition DRTReferencedStructureSetSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrsts.cc b/dcmrt/libsrc/drtrsts.cc index 7ffb7c80..f750ce54 100644 --- a/dcmrt/libsrc/drtrsts.cc +++ b/dcmrt/libsrc/drtrsts.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTRTReferencedStudySequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -279,10 +279,12 @@ OFCondition DRTRTReferencedStudySequence::gotoFirstItem() OFCondition DRTRTReferencedStudySequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrtps1.cc b/dcmrt/libsrc/drtrtps1.cc new file mode 100644 index 00000000..fd335aa5 --- /dev/null +++ b/dcmrt/libsrc/drtrtps1.cc @@ -0,0 +1,607 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTReferencedRTPlanSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtrtps1.h" + + +// --- item class --- + +DRTReferencedRTPlanSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + ReferencedFractionGroupSequence(emptyDefaultItem /*emptyDefaultSequence*/), + ReferencedPlanOverviewIndex(DCM_ReferencedPlanOverviewIndex), + ReferencedSOPClassUID(DCM_ReferencedSOPClassUID), + ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID) +{ +} + + +DRTReferencedRTPlanSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + ReferencedFractionGroupSequence(copy.ReferencedFractionGroupSequence), + ReferencedPlanOverviewIndex(copy.ReferencedPlanOverviewIndex), + ReferencedSOPClassUID(copy.ReferencedSOPClassUID), + ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID) +{ +} + + +DRTReferencedRTPlanSequence::Item::~Item() +{ +} + + +DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + ReferencedFractionGroupSequence = copy.ReferencedFractionGroupSequence; + ReferencedPlanOverviewIndex = copy.ReferencedPlanOverviewIndex; + ReferencedSOPClassUID = copy.ReferencedSOPClassUID; + ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID; + } + return *this; +} + + +void DRTReferencedRTPlanSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + ReferencedSOPClassUID.clear(); + ReferencedSOPInstanceUID.clear(); + ReferencedPlanOverviewIndex.clear(); + ReferencedFractionGroupSequence.clear(); + } +} + + +OFBool DRTReferencedRTPlanSequence::Item::isEmpty() +{ + return ReferencedSOPClassUID.isEmpty() && + ReferencedSOPInstanceUID.isEmpty() && + ReferencedPlanOverviewIndex.isEmpty() && + ReferencedFractionGroupSequence.isEmpty(); +} + + +OFBool DRTReferencedRTPlanSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTReferencedRTPlanSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedRTPlanSequence"); + getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedRTPlanSequence"); + getAndCheckElementFromDataset(item, ReferencedPlanOverviewIndex, "1", "1C", "ReferencedRTPlanSequence"); + ReferencedFractionGroupSequence.read(item, "1-n", "1C", "ReferencedRTPlanSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedRTPlanSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedRTPlanSequence"); + addElementToDataset(result, item, new DcmUnsignedShort(ReferencedPlanOverviewIndex), "1", "1C", "ReferencedRTPlanSequence"); + if (result.good()) result = ReferencedFractionGroupSequence.write(item, "1-n", "1C", "ReferencedRTPlanSequence"); + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequence::Item::getReferencedPlanOverviewIndex(Uint16 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmUnsignedShort &, ReferencedPlanOverviewIndex).getUint16(value, pos); +} + + +OFCondition DRTReferencedRTPlanSequence::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedSOPClassUID, value, pos); +} + + +OFCondition DRTReferencedRTPlanSequence::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos); +} + + +OFCondition DRTReferencedRTPlanSequence::Item::setReferencedPlanOverviewIndex(const Uint16 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return ReferencedPlanOverviewIndex.putUint16(value, pos); +} + + +OFCondition DRTReferencedRTPlanSequence::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedSOPClassUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequence::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedSOPInstanceUID.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTReferencedRTPlanSequence::DRTReferencedRTPlanSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTReferencedRTPlanSequence::DRTReferencedRTPlanSequence(const DRTReferencedRTPlanSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTReferencedRTPlanSequence &DRTReferencedRTPlanSequence::operator=(const DRTReferencedRTPlanSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTReferencedRTPlanSequence::~DRTReferencedRTPlanSequence() +{ + clear(); +} + + +void DRTReferencedRTPlanSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTReferencedRTPlanSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTReferencedRTPlanSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTReferencedRTPlanSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTReferencedRTPlanSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTReferencedRTPlanSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTReferencedRTPlanSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTReferencedRTPlanSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_ReferencedRTPlanSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_ReferencedRTPlanSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedRTPlanSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtrtps2.cc b/dcmrt/libsrc/drtrtps2.cc new file mode 100644 index 00000000..8749a8c2 --- /dev/null +++ b/dcmrt/libsrc/drtrtps2.cc @@ -0,0 +1,604 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTReferencedRTPlanSequenceInRTGeneralPlanModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtrtps2.h" + + +// --- item class --- + +DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + RTPlanRelationship(DCM_RTPlanRelationship), + ReferencedSOPClassUID(DCM_ReferencedSOPClassUID), + ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID) +{ +} + + +DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + RTPlanRelationship(copy.RTPlanRelationship), + ReferencedSOPClassUID(copy.ReferencedSOPClassUID), + ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID) +{ +} + + +DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::~Item() +{ +} + + +DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + RTPlanRelationship = copy.RTPlanRelationship; + ReferencedSOPClassUID = copy.ReferencedSOPClassUID; + ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID; + } + return *this; +} + + +void DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + ReferencedSOPClassUID.clear(); + ReferencedSOPInstanceUID.clear(); + RTPlanRelationship.clear(); + } +} + + +OFBool DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::isEmpty() +{ + return ReferencedSOPClassUID.isEmpty() && + ReferencedSOPInstanceUID.isEmpty() && + RTPlanRelationship.isEmpty(); +} + + +OFBool DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedRTPlanSequence"); + getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedRTPlanSequence"); + getAndCheckElementFromDataset(item, RTPlanRelationship, "1", "1", "ReferencedRTPlanSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedRTPlanSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedRTPlanSequence"); + addElementToDataset(result, item, new DcmCodeString(RTPlanRelationship), "1", "1", "ReferencedRTPlanSequence"); + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::getRTPlanRelationship(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(RTPlanRelationship, value, pos); +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedSOPClassUID, value, pos); +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos); +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::setRTPlanRelationship(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = RTPlanRelationship.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedSOPClassUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedSOPInstanceUID.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTReferencedRTPlanSequenceInRTGeneralPlanModule::DRTReferencedRTPlanSequenceInRTGeneralPlanModule(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTReferencedRTPlanSequenceInRTGeneralPlanModule::DRTReferencedRTPlanSequenceInRTGeneralPlanModule(const DRTReferencedRTPlanSequenceInRTGeneralPlanModule ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTReferencedRTPlanSequenceInRTGeneralPlanModule &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::operator=(const DRTReferencedRTPlanSequenceInRTGeneralPlanModule ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTReferencedRTPlanSequenceInRTGeneralPlanModule::~DRTReferencedRTPlanSequenceInRTGeneralPlanModule() +{ + clear(); +} + + +void DRTReferencedRTPlanSequenceInRTGeneralPlanModule::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTReferencedRTPlanSequenceInRTGeneralPlanModule::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTReferencedRTPlanSequenceInRTGeneralPlanModule::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_ReferencedRTPlanSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_ReferencedRTPlanSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedRTPlanSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtrtps3.cc b/dcmrt/libsrc/drtrtps3.cc new file mode 100644 index 00000000..c487cd21 --- /dev/null +++ b/dcmrt/libsrc/drtrtps3.cc @@ -0,0 +1,575 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtrtps3.h" + + +// --- item class --- + +DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + ReferencedSOPClassUID(DCM_ReferencedSOPClassUID), + ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID) +{ +} + + +DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + ReferencedSOPClassUID(copy.ReferencedSOPClassUID), + ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID) +{ +} + + +DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::~Item() +{ +} + + +DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + ReferencedSOPClassUID = copy.ReferencedSOPClassUID; + ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID; + } + return *this; +} + + +void DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + ReferencedSOPClassUID.clear(); + ReferencedSOPInstanceUID.clear(); + } +} + + +OFBool DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::isEmpty() +{ + return ReferencedSOPClassUID.isEmpty() && + ReferencedSOPInstanceUID.isEmpty(); +} + + +OFBool DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedRTPlanSequence"); + getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedRTPlanSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedRTPlanSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedRTPlanSequence"); + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedSOPClassUID, value, pos); +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos); +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedSOPClassUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedSOPInstanceUID.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule(const DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::operator=(const DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::~DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule() +{ + clear(); +} + + +void DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_ReferencedRTPlanSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_ReferencedRTPlanSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedRTPlanSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtrtps4.cc b/dcmrt/libsrc/drtrtps4.cc new file mode 100644 index 00000000..7b88aaf7 --- /dev/null +++ b/dcmrt/libsrc/drtrtps4.cc @@ -0,0 +1,575 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTReferencedRTPlanSequenceInRTImageModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtrtps4.h" + + +// --- item class --- + +DRTReferencedRTPlanSequenceInRTImageModule::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + ReferencedSOPClassUID(DCM_ReferencedSOPClassUID), + ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID) +{ +} + + +DRTReferencedRTPlanSequenceInRTImageModule::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + ReferencedSOPClassUID(copy.ReferencedSOPClassUID), + ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID) +{ +} + + +DRTReferencedRTPlanSequenceInRTImageModule::Item::~Item() +{ +} + + +DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + ReferencedSOPClassUID = copy.ReferencedSOPClassUID; + ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID; + } + return *this; +} + + +void DRTReferencedRTPlanSequenceInRTImageModule::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + ReferencedSOPClassUID.clear(); + ReferencedSOPInstanceUID.clear(); + } +} + + +OFBool DRTReferencedRTPlanSequenceInRTImageModule::Item::isEmpty() +{ + return ReferencedSOPClassUID.isEmpty() && + ReferencedSOPInstanceUID.isEmpty(); +} + + +OFBool DRTReferencedRTPlanSequenceInRTImageModule::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTImageModule::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedRTPlanSequence"); + getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedRTPlanSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTImageModule::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedRTPlanSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedRTPlanSequence"); + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTImageModule::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedSOPClassUID, value, pos); +} + + +OFCondition DRTReferencedRTPlanSequenceInRTImageModule::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos); +} + + +OFCondition DRTReferencedRTPlanSequenceInRTImageModule::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedSOPClassUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTImageModule::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedSOPInstanceUID.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTReferencedRTPlanSequenceInRTImageModule::DRTReferencedRTPlanSequenceInRTImageModule(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTReferencedRTPlanSequenceInRTImageModule::DRTReferencedRTPlanSequenceInRTImageModule(const DRTReferencedRTPlanSequenceInRTImageModule ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTReferencedRTPlanSequenceInRTImageModule &DRTReferencedRTPlanSequenceInRTImageModule::operator=(const DRTReferencedRTPlanSequenceInRTImageModule ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTReferencedRTPlanSequenceInRTImageModule::~DRTReferencedRTPlanSequenceInRTImageModule() +{ + clear(); +} + + +void DRTReferencedRTPlanSequenceInRTImageModule::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTReferencedRTPlanSequenceInRTImageModule::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTReferencedRTPlanSequenceInRTImageModule::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTReferencedRTPlanSequenceInRTImageModule::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTReferencedRTPlanSequenceInRTImageModule::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTImageModule::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTImageModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTImageModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTImageModule::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTReferencedRTPlanSequenceInRTImageModule::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTImageModule::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTReferencedRTPlanSequenceInRTImageModule::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTImageModule::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTImageModule::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTImageModule::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_ReferencedRTPlanSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_ReferencedRTPlanSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTReferencedRTPlanSequenceInRTImageModule::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedRTPlanSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtrtrs1.cc b/dcmrt/libsrc/drtrtrs1.cc new file mode 100644 index 00000000..9d9038c1 --- /dev/null +++ b/dcmrt/libsrc/drtrtrs1.cc @@ -0,0 +1,582 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTReferencedTreatmentRecordSequenceInRTDoseModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtrtrs1.h" + + +// --- item class --- + +DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + ReferencedBeamSequence(emptyDefaultItem /*emptyDefaultSequence*/), + ReferencedSOPClassUID(DCM_ReferencedSOPClassUID), + ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID) +{ +} + + +DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + ReferencedBeamSequence(copy.ReferencedBeamSequence), + ReferencedSOPClassUID(copy.ReferencedSOPClassUID), + ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID) +{ +} + + +DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::~Item() +{ +} + + +DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + ReferencedBeamSequence = copy.ReferencedBeamSequence; + ReferencedSOPClassUID = copy.ReferencedSOPClassUID; + ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID; + } + return *this; +} + + +void DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + ReferencedSOPClassUID.clear(); + ReferencedSOPInstanceUID.clear(); + ReferencedBeamSequence.clear(); + } +} + + +OFBool DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::isEmpty() +{ + return ReferencedSOPClassUID.isEmpty() && + ReferencedSOPInstanceUID.isEmpty() && + ReferencedBeamSequence.isEmpty(); +} + + +OFBool DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedTreatmentRecordSequence"); + getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedTreatmentRecordSequence"); + ReferencedBeamSequence.read(item, "1-n", "1C", "ReferencedTreatmentRecordSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedTreatmentRecordSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedTreatmentRecordSequence"); + if (result.good()) result = ReferencedBeamSequence.write(item, "1-n", "1C", "ReferencedTreatmentRecordSequence"); + } + return result; +} + + +OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedSOPClassUID, value, pos); +} + + +OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos); +} + + +OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedSOPClassUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ReferencedSOPInstanceUID.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTReferencedTreatmentRecordSequenceInRTDoseModule::DRTReferencedTreatmentRecordSequenceInRTDoseModule(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTReferencedTreatmentRecordSequenceInRTDoseModule::DRTReferencedTreatmentRecordSequenceInRTDoseModule(const DRTReferencedTreatmentRecordSequenceInRTDoseModule ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTReferencedTreatmentRecordSequenceInRTDoseModule &DRTReferencedTreatmentRecordSequenceInRTDoseModule::operator=(const DRTReferencedTreatmentRecordSequenceInRTDoseModule ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTReferencedTreatmentRecordSequenceInRTDoseModule::~DRTReferencedTreatmentRecordSequenceInRTDoseModule() +{ + clear(); +} + + +void DRTReferencedTreatmentRecordSequenceInRTDoseModule::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTReferencedTreatmentRecordSequenceInRTDoseModule::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTReferencedTreatmentRecordSequenceInRTDoseModule::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTReferencedTreatmentRecordSequenceInRTDoseModule::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_ReferencedTreatmentRecordSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_ReferencedTreatmentRecordSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedTreatmentRecordSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtrtrs2.cc b/dcmrt/libsrc/drtrtrs2.cc index ab4529da..625f16df 100644 --- a/dcmrt/libsrc/drtrtrs2.cc +++ b/dcmrt/libsrc/drtrtrs2.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * - * Source file for class DRTReferencedTreatmentRecordSequenceInRTDoseModule + * Source file for class DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -19,35 +19,32 @@ // --- item class --- -DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::Item(const OFBool emptyDefaultItem) +DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::Item(const OFBool emptyDefaultItem) : EmptyDefaultItem(emptyDefaultItem), - ReferencedBeamSequence(emptyDefaultItem /*emptyDefaultSequence*/), ReferencedSOPClassUID(DCM_ReferencedSOPClassUID), ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID) { } -DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::Item(const Item ©) +DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::Item(const Item ©) : EmptyDefaultItem(copy.EmptyDefaultItem), - ReferencedBeamSequence(copy.ReferencedBeamSequence), ReferencedSOPClassUID(copy.ReferencedSOPClassUID), ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID) { } -DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::~Item() +DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::~Item() { } -DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::operator=(const Item ©) +DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::operator=(const Item ©) { if (this != ©) { EmptyDefaultItem = copy.EmptyDefaultItem; - ReferencedBeamSequence = copy.ReferencedBeamSequence; ReferencedSOPClassUID = copy.ReferencedSOPClassUID; ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID; } @@ -55,33 +52,31 @@ DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatment } -void DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::clear() +void DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::clear() { if (!EmptyDefaultItem) { /* clear all DICOM attributes */ ReferencedSOPClassUID.clear(); ReferencedSOPInstanceUID.clear(); - ReferencedBeamSequence.clear(); } } -OFBool DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::isEmpty() +OFBool DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::isEmpty() { return ReferencedSOPClassUID.isEmpty() && - ReferencedSOPInstanceUID.isEmpty() && - ReferencedBeamSequence.isEmpty(); + ReferencedSOPInstanceUID.isEmpty(); } -OFBool DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::isValid() const +OFBool DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::isValid() const { return !EmptyDefaultItem; } -OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::read(DcmItem &item) +OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::read(DcmItem &item) { OFCondition result = EC_IllegalCall; if (!EmptyDefaultItem) @@ -90,14 +85,13 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::read(DcmIt clear(); getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedTreatmentRecordSequence"); getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedTreatmentRecordSequence"); - ReferencedBeamSequence.read(item, "1-n", "1C", "ReferencedTreatmentRecordSequence"); result = EC_Normal; } return result; } -OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::write(DcmItem &item) +OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::write(DcmItem &item) { OFCondition result = EC_IllegalCall; if (!EmptyDefaultItem) @@ -105,13 +99,12 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::write(DcmI result = EC_Normal; addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedTreatmentRecordSequence"); addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedTreatmentRecordSequence"); - if (result.good()) result = ReferencedBeamSequence.write(item, "1-n", "1C", "ReferencedTreatmentRecordSequence"); } return result; } -OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const +OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const { if (EmptyDefaultItem) return EC_IllegalCall; @@ -120,7 +113,7 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::getReferen } -OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const +OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const { if (EmptyDefaultItem) return EC_IllegalCall; @@ -129,7 +122,7 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::getReferen } -OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check) +OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check) { OFCondition result = EC_IllegalCall; if (!EmptyDefaultItem) @@ -142,7 +135,7 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::setReferen } -OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check) +OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check) { OFCondition result = EC_IllegalCall; if (!EmptyDefaultItem) @@ -157,7 +150,7 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::setReferen // --- sequence class --- -DRTReferencedTreatmentRecordSequenceInRTDoseModule::DRTReferencedTreatmentRecordSequenceInRTDoseModule(const OFBool emptyDefaultSequence) +DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule(const OFBool emptyDefaultSequence) : EmptyDefaultSequence(emptyDefaultSequence), SequenceOfItems(), CurrentItem(), @@ -167,7 +160,7 @@ DRTReferencedTreatmentRecordSequenceInRTDoseModule::DRTReferencedTreatmentRecord } -DRTReferencedTreatmentRecordSequenceInRTDoseModule::DRTReferencedTreatmentRecordSequenceInRTDoseModule(const DRTReferencedTreatmentRecordSequenceInRTDoseModule ©) +DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule(const DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule ©) : EmptyDefaultSequence(copy.EmptyDefaultSequence), SequenceOfItems(), CurrentItem(), @@ -193,7 +186,7 @@ DRTReferencedTreatmentRecordSequenceInRTDoseModule::DRTReferencedTreatmentRecord } -DRTReferencedTreatmentRecordSequenceInRTDoseModule &DRTReferencedTreatmentRecordSequenceInRTDoseModule::operator=(const DRTReferencedTreatmentRecordSequenceInRTDoseModule ©) +DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::operator=(const DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule ©) { if (this != ©) { @@ -221,13 +214,13 @@ DRTReferencedTreatmentRecordSequenceInRTDoseModule &DRTReferencedTreatmentRecord } -DRTReferencedTreatmentRecordSequenceInRTDoseModule::~DRTReferencedTreatmentRecordSequenceInRTDoseModule() +DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::~DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule() { clear(); } -void DRTReferencedTreatmentRecordSequenceInRTDoseModule::clear() +void DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::clear() { if (!EmptyDefaultSequence) { @@ -246,25 +239,25 @@ void DRTReferencedTreatmentRecordSequenceInRTDoseModule::clear() } -OFBool DRTReferencedTreatmentRecordSequenceInRTDoseModule::isEmpty() +OFBool DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::isEmpty() { return SequenceOfItems.empty(); } -OFBool DRTReferencedTreatmentRecordSequenceInRTDoseModule::isValid() const +OFBool DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::isValid() const { return !EmptyDefaultSequence; } -size_t DRTReferencedTreatmentRecordSequenceInRTDoseModule::getNumberOfItems() const +size_t DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getNumberOfItems() const { return SequenceOfItems.size(); } -OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::gotoFirstItem() +OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::gotoFirstItem() { OFCondition result = EC_IllegalCall; if (!SequenceOfItems.empty()) @@ -276,19 +269,21 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::gotoFirstItem() } -OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::gotoNextItem() +OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } -OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) { OFCondition result = EC_IllegalCall; if (!SequenceOfItems.empty()) @@ -308,7 +303,7 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::gotoItem(const s } -OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const { OFCondition result = EC_IllegalCall; if (!SequenceOfItems.empty()) @@ -328,13 +323,13 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::gotoItem(const s } -OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::gotoItem(const size_t num) +OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num) { return gotoItem(num, CurrentItem); } -OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::getCurrentItem(Item *&item) const +OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getCurrentItem(Item *&item) const { OFCondition result = EC_IllegalCall; if (CurrentItem != SequenceOfItems.end()) @@ -346,7 +341,7 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::getCurrentItem(I } -DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::getCurrentItem() +DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getCurrentItem() { if (CurrentItem != SequenceOfItems.end()) return **CurrentItem; @@ -355,7 +350,7 @@ DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatment } -const DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::getCurrentItem() const +const DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getCurrentItem() const { if (CurrentItem != SequenceOfItems.end()) return **CurrentItem; @@ -364,7 +359,7 @@ const DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTre } -OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::getItem(const size_t num, Item *&item) +OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num, Item *&item) { OFListIterator(Item *) iterator; OFCondition result = gotoItem(num, iterator); @@ -374,7 +369,7 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::getItem(const si } -DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::getItem(const size_t num) +DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num) { OFListIterator(Item *) iterator; if (gotoItem(num, iterator).good()) @@ -384,7 +379,7 @@ DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatment } -const DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::getItem(const size_t num) const +const DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num) const { OFListConstIterator(Item *) iterator; if (gotoItem(num, iterator).good()) @@ -394,19 +389,19 @@ const DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTre } -DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::operator[](const size_t num) +DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::operator[](const size_t num) { return getItem(num); } -const DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::operator[](const size_t num) const +const DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::operator[](const size_t num) const { return getItem(num); } -OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::addItem(Item *&item) +OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::addItem(Item *&item) { OFCondition result = EC_IllegalCall; if (!EmptyDefaultSequence) @@ -423,7 +418,7 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::addItem(Item *&i } -OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::insertItem(const size_t pos, Item *&item) +OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::insertItem(const size_t pos, Item *&item) { OFCondition result = EC_IllegalCall; if (!EmptyDefaultSequence) @@ -446,7 +441,7 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::insertItem(const } -OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::removeItem(const size_t pos) +OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::removeItem(const size_t pos) { OFCondition result = EC_IllegalCall; if (!EmptyDefaultSequence) @@ -464,10 +459,10 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::removeItem(const } -OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) +OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) { OFCondition result = EC_IllegalCall; if (!EmptyDefaultSequence) @@ -514,10 +509,10 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::read(DcmItem &da } -OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) +OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) { OFCondition result = EC_IllegalCall; if (!EmptyDefaultSequence) diff --git a/dcmrt/libsrc/drtrtrs4.cc b/dcmrt/libsrc/drtrtrs4.cc deleted file mode 100644 index fa81902f..00000000 --- a/dcmrt/libsrc/drtrtrs4.cc +++ /dev/null @@ -1,573 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Source file for class DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/dcmrt/seq/drtrtrs4.h" - - -// --- item class --- - -DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::Item(const OFBool emptyDefaultItem) - : EmptyDefaultItem(emptyDefaultItem), - ReferencedSOPClassUID(DCM_ReferencedSOPClassUID), - ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID) -{ -} - - -DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::Item(const Item ©) - : EmptyDefaultItem(copy.EmptyDefaultItem), - ReferencedSOPClassUID(copy.ReferencedSOPClassUID), - ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID) -{ -} - - -DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::~Item() -{ -} - - -DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::operator=(const Item ©) -{ - if (this != ©) - { - EmptyDefaultItem = copy.EmptyDefaultItem; - ReferencedSOPClassUID = copy.ReferencedSOPClassUID; - ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID; - } - return *this; -} - - -void DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::clear() -{ - if (!EmptyDefaultItem) - { - /* clear all DICOM attributes */ - ReferencedSOPClassUID.clear(); - ReferencedSOPInstanceUID.clear(); - } -} - - -OFBool DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::isEmpty() -{ - return ReferencedSOPClassUID.isEmpty() && - ReferencedSOPInstanceUID.isEmpty(); -} - - -OFBool DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::isValid() const -{ - return !EmptyDefaultItem; -} - - -OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::read(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - /* re-initialize object */ - clear(); - getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedTreatmentRecordSequence"); - getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedTreatmentRecordSequence"); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::write(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = EC_Normal; - addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedTreatmentRecordSequence"); - addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedTreatmentRecordSequence"); - } - return result; -} - - -OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ReferencedSOPClassUID, value, pos); -} - - -OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos); -} - - -OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ReferencedSOPClassUID.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ReferencedSOPInstanceUID.putOFStringArray(value); - } - return result; -} - - -// --- sequence class --- - -DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule(const OFBool emptyDefaultSequence) - : EmptyDefaultSequence(emptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - CurrentItem = SequenceOfItems.end(); -} - - -DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule(const DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule ©) - : EmptyDefaultSequence(copy.EmptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); -} - - -DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::operator=(const DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule ©) -{ - if (this != ©) - { - clear(); - EmptyDefaultSequence = copy.EmptyDefaultSequence; - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); - } - return *this; -} - - -DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::~DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule() -{ - clear(); -} - - -void DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::clear() -{ - if (!EmptyDefaultSequence) - { - CurrentItem = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* delete all items and free memory */ - while (CurrentItem != last) - { - delete (*CurrentItem); - CurrentItem = SequenceOfItems.erase(CurrentItem); - } - /* make sure that the list is empty */ - SequenceOfItems.clear(); - CurrentItem = SequenceOfItems.end(); - } -} - - -OFBool DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::isEmpty() -{ - return SequenceOfItems.empty(); -} - - -OFBool DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::isValid() const -{ - return !EmptyDefaultSequence; -} - - -size_t DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getNumberOfItems() const -{ - return SequenceOfItems.size(); -} - - -OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::gotoFirstItem() -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - CurrentItem = SequenceOfItems.begin(); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::gotoNextItem() -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - ++CurrentItem; - result = EC_Normal; - } - return result; -} - - -OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num) -{ - return gotoItem(num, CurrentItem); -} - - -OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getCurrentItem(Item *&item) const -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - item = *CurrentItem; - result = EC_Normal; - } - return result; -} - - -DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getCurrentItem() -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -const DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getCurrentItem() const -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num, Item *&item) -{ - OFListIterator(Item *) iterator; - OFCondition result = gotoItem(num, iterator); - if (result.good()) - item = *iterator; - return result; -} - - -DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num) -{ - OFListIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -const DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num) const -{ - OFListConstIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::operator[](const size_t num) -{ - return getItem(num); -} - - -const DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::operator[](const size_t num) const -{ - return getItem(num); -} - - -OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::addItem(Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.push_back(item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } - return result; -} - - -OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::insertItem(const size_t pos, Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - result = gotoItem(pos, iterator); - if (result.good()) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.insert(iterator, 1, item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } else - result = addItem(item); - } - return result; -} - - -OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::removeItem(const size_t pos) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - if (gotoItem(pos, iterator).good()) - { - delete *iterator; - iterator = SequenceOfItems.erase(iterator); - result = EC_Normal; - } else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - /* re-initialize object */ - clear(); - /* retrieve sequence element from dataset */ - DcmSequenceOfItems *sequence; - result = dataset.findAndGetSequence(DCM_ReferencedTreatmentRecordSequence, sequence); - if (sequence != NULL) - { - if (checkElementValue(*sequence, card, type, result, moduleName)) - { - DcmStack stack; - OFBool first = OFTrue; - /* iterate over all sequence items */ - while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) - { - DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); - if (ditem != NULL) - { - Item *item = new Item(); - if (item != NULL) - { - result = item->read(*ditem); - if (result.good()) - { - /* append new item to the end of the list */ - SequenceOfItems.push_back(item); - first = OFFalse; - } - } else - result = EC_MemoryExhausted; - } else - result = EC_CorruptedData; - } - } - } else { - DcmSequenceOfItems element(DCM_ReferencedTreatmentRecordSequence); - checkElementValue(element, card, type, result, moduleName); - } - } - return result; -} - - -OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - result = EC_MemoryExhausted; - DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedTreatmentRecordSequence); - if (sequence != NULL) - { - result = EC_Normal; - /* an empty optional sequence is not written */ - if ((type == "2") || !SequenceOfItems.empty()) - { - OFListIterator(Item *) iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* iterate over all sequence items */ - while (result.good() && (iterator != last)) - { - DcmItem *item = new DcmItem(); - if (item != NULL) - { - /* append new item to the end of the sequence */ - result = sequence->append(item); - if (result.good()) - { - result = (*iterator)->write(*item); - ++iterator; - } else - delete item; - } else - result = EC_MemoryExhausted; - } - if (result.good()) - { - /* insert sequence element into the dataset */ - result = dataset.insert(sequence, OFTrue /*replaceOld*/); - } - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - if (result.good()) - { - /* forget reference to sequence object (avoid deletion below) */ - sequence = NULL; - } - } - else if (type == "1") - { - /* empty type 1 sequence not allowed */ - result = RT_EC_InvalidValue; - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - } - /* delete sequence (if not inserted into the dataset) */ - delete sequence; - } - } - return result; -} - - -// end of source file diff --git a/dcmrt/libsrc/drtrvcs.cc b/dcmrt/libsrc/drtrvcs.cc new file mode 100644 index 00000000..8c20c30a --- /dev/null +++ b/dcmrt/libsrc/drtrvcs.cc @@ -0,0 +1,959 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTReasonForVisitCodeSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtrvcs.h" + + +// --- item class --- + +DRTReasonForVisitCodeSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + CodeMeaning(DCM_CodeMeaning), + CodeValue(DCM_CodeValue), + CodingSchemeDesignator(DCM_CodingSchemeDesignator), + CodingSchemeVersion(DCM_CodingSchemeVersion), + ContextGroupExtensionCreatorUID(DCM_ContextGroupExtensionCreatorUID), + ContextGroupExtensionFlag(DCM_ContextGroupExtensionFlag), + ContextGroupLocalVersion(DCM_ContextGroupLocalVersion), + ContextGroupVersion(DCM_ContextGroupVersion), + ContextIdentifier(DCM_ContextIdentifier), + ContextUID(DCM_ContextUID), + EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), + LongCodeValue(DCM_LongCodeValue), + MappingResource(DCM_MappingResource), + MappingResourceName(DCM_MappingResourceName), + MappingResourceUID(DCM_MappingResourceUID), + URNCodeValue(DCM_URNCodeValue) +{ +} + + +DRTReasonForVisitCodeSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + CodeMeaning(copy.CodeMeaning), + CodeValue(copy.CodeValue), + CodingSchemeDesignator(copy.CodingSchemeDesignator), + CodingSchemeVersion(copy.CodingSchemeVersion), + ContextGroupExtensionCreatorUID(copy.ContextGroupExtensionCreatorUID), + ContextGroupExtensionFlag(copy.ContextGroupExtensionFlag), + ContextGroupLocalVersion(copy.ContextGroupLocalVersion), + ContextGroupVersion(copy.ContextGroupVersion), + ContextIdentifier(copy.ContextIdentifier), + ContextUID(copy.ContextUID), + EquivalentCodeSequence(copy.EquivalentCodeSequence), + LongCodeValue(copy.LongCodeValue), + MappingResource(copy.MappingResource), + MappingResourceName(copy.MappingResourceName), + MappingResourceUID(copy.MappingResourceUID), + URNCodeValue(copy.URNCodeValue) +{ +} + + +DRTReasonForVisitCodeSequence::Item::~Item() +{ +} + + +DRTReasonForVisitCodeSequence::Item &DRTReasonForVisitCodeSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + CodeMeaning = copy.CodeMeaning; + CodeValue = copy.CodeValue; + CodingSchemeDesignator = copy.CodingSchemeDesignator; + CodingSchemeVersion = copy.CodingSchemeVersion; + ContextGroupExtensionCreatorUID = copy.ContextGroupExtensionCreatorUID; + ContextGroupExtensionFlag = copy.ContextGroupExtensionFlag; + ContextGroupLocalVersion = copy.ContextGroupLocalVersion; + ContextGroupVersion = copy.ContextGroupVersion; + ContextIdentifier = copy.ContextIdentifier; + ContextUID = copy.ContextUID; + EquivalentCodeSequence = copy.EquivalentCodeSequence; + LongCodeValue = copy.LongCodeValue; + MappingResource = copy.MappingResource; + MappingResourceName = copy.MappingResourceName; + MappingResourceUID = copy.MappingResourceUID; + URNCodeValue = copy.URNCodeValue; + } + return *this; +} + + +void DRTReasonForVisitCodeSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + CodeValue.clear(); + CodingSchemeDesignator.clear(); + CodingSchemeVersion.clear(); + CodeMeaning.clear(); + LongCodeValue.clear(); + URNCodeValue.clear(); + EquivalentCodeSequence.clear(); + ContextIdentifier.clear(); + ContextUID.clear(); + MappingResource.clear(); + MappingResourceUID.clear(); + MappingResourceName.clear(); + ContextGroupVersion.clear(); + ContextGroupExtensionFlag.clear(); + ContextGroupLocalVersion.clear(); + ContextGroupExtensionCreatorUID.clear(); + } +} + + +OFBool DRTReasonForVisitCodeSequence::Item::isEmpty() +{ + return CodeValue.isEmpty() && + CodingSchemeDesignator.isEmpty() && + CodingSchemeVersion.isEmpty() && + CodeMeaning.isEmpty() && + LongCodeValue.isEmpty() && + URNCodeValue.isEmpty() && + EquivalentCodeSequence.isEmpty() && + ContextIdentifier.isEmpty() && + ContextUID.isEmpty() && + MappingResource.isEmpty() && + MappingResourceUID.isEmpty() && + MappingResourceName.isEmpty() && + ContextGroupVersion.isEmpty() && + ContextGroupExtensionFlag.isEmpty() && + ContextGroupLocalVersion.isEmpty() && + ContextGroupExtensionCreatorUID.isEmpty(); +} + + +OFBool DRTReasonForVisitCodeSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTReasonForVisitCodeSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "ReasonForVisitCodeSequence"); + getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "ReasonForVisitCodeSequence"); + getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "ReasonForVisitCodeSequence"); + getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "ReasonForVisitCodeSequence"); + getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "ReasonForVisitCodeSequence"); + getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "ReasonForVisitCodeSequence"); + EquivalentCodeSequence.read(item, "1-n", "3", "ReasonForVisitCodeSequence"); + getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "ReasonForVisitCodeSequence"); + getAndCheckElementFromDataset(item, ContextUID, "1", "3", "ReasonForVisitCodeSequence"); + getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "ReasonForVisitCodeSequence"); + getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "ReasonForVisitCodeSequence"); + getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "ReasonForVisitCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "ReasonForVisitCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "ReasonForVisitCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "ReasonForVisitCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "ReasonForVisitCodeSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReasonForVisitCodeSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "ReasonForVisitCodeSequence"); + addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "ReasonForVisitCodeSequence"); + addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "ReasonForVisitCodeSequence"); + addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "ReasonForVisitCodeSequence"); + addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "ReasonForVisitCodeSequence"); + addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "ReasonForVisitCodeSequence"); + if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "ReasonForVisitCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "ReasonForVisitCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "ReasonForVisitCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "ReasonForVisitCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "ReasonForVisitCodeSequence"); + addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "ReasonForVisitCodeSequence"); + addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "ReasonForVisitCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "ReasonForVisitCodeSequence"); + addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "ReasonForVisitCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "ReasonForVisitCodeSequence"); + } + return result; +} + + +OFCondition DRTReasonForVisitCodeSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodeMeaning, value, pos); +} + + +OFCondition DRTReasonForVisitCodeSequence::Item::getCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodeValue, value, pos); +} + + +OFCondition DRTReasonForVisitCodeSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodingSchemeDesignator, value, pos); +} + + +OFCondition DRTReasonForVisitCodeSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodingSchemeVersion, value, pos); +} + + +OFCondition DRTReasonForVisitCodeSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupExtensionCreatorUID, value, pos); +} + + +OFCondition DRTReasonForVisitCodeSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupExtensionFlag, value, pos); +} + + +OFCondition DRTReasonForVisitCodeSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupLocalVersion, value, pos); +} + + +OFCondition DRTReasonForVisitCodeSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupVersion, value, pos); +} + + +OFCondition DRTReasonForVisitCodeSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextIdentifier, value, pos); +} + + +OFCondition DRTReasonForVisitCodeSequence::Item::getContextUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextUID, value, pos); +} + + +OFCondition DRTReasonForVisitCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(LongCodeValue, value, pos); +} + + +OFCondition DRTReasonForVisitCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResource, value, pos); +} + + +OFCondition DRTReasonForVisitCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResourceName, value, pos); +} + + +OFCondition DRTReasonForVisitCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResourceUID, value, pos); +} + + +OFCondition DRTReasonForVisitCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(URNCodeValue, value, pos); +} + + +OFCondition DRTReasonForVisitCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodeMeaning.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReasonForVisitCodeSequence::Item::setCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodeValue.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReasonForVisitCodeSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodingSchemeDesignator.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReasonForVisitCodeSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodingSchemeVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReasonForVisitCodeSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupExtensionCreatorUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReasonForVisitCodeSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupExtensionFlag.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReasonForVisitCodeSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupLocalVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReasonForVisitCodeSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReasonForVisitCodeSequence::Item::setContextIdentifier(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextIdentifier.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReasonForVisitCodeSequence::Item::setContextUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReasonForVisitCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = LongCodeValue.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReasonForVisitCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResource.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReasonForVisitCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResourceName.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReasonForVisitCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResourceUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTReasonForVisitCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal; + if (result.good()) + result = URNCodeValue.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTReasonForVisitCodeSequence::DRTReasonForVisitCodeSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTReasonForVisitCodeSequence::DRTReasonForVisitCodeSequence(const DRTReasonForVisitCodeSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTReasonForVisitCodeSequence &DRTReasonForVisitCodeSequence::operator=(const DRTReasonForVisitCodeSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTReasonForVisitCodeSequence::~DRTReasonForVisitCodeSequence() +{ + clear(); +} + + +void DRTReasonForVisitCodeSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTReasonForVisitCodeSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTReasonForVisitCodeSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTReasonForVisitCodeSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTReasonForVisitCodeSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTReasonForVisitCodeSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTReasonForVisitCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReasonForVisitCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReasonForVisitCodeSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTReasonForVisitCodeSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTReasonForVisitCodeSequence::Item &DRTReasonForVisitCodeSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTReasonForVisitCodeSequence::Item &DRTReasonForVisitCodeSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTReasonForVisitCodeSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTReasonForVisitCodeSequence::Item &DRTReasonForVisitCodeSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTReasonForVisitCodeSequence::Item &DRTReasonForVisitCodeSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTReasonForVisitCodeSequence::Item &DRTReasonForVisitCodeSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTReasonForVisitCodeSequence::Item &DRTReasonForVisitCodeSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTReasonForVisitCodeSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTReasonForVisitCodeSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTReasonForVisitCodeSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTReasonForVisitCodeSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_ReasonForVisitCodeSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_ReasonForVisitCodeSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTReasonForVisitCodeSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReasonForVisitCodeSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtrvis.cc b/dcmrt/libsrc/drtrvis.cc index 31aa5caa..116fc3cf 100644 --- a/dcmrt/libsrc/drtrvis.cc +++ b/dcmrt/libsrc/drtrvis.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTReferencedVerificationImageSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -272,10 +272,12 @@ OFCondition DRTReferencedVerificationImageSequence::gotoFirstItem() OFCondition DRTReferencedVerificationImageSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrws.cc b/dcmrt/libsrc/drtrws.cc index 2484dae8..7023e3fb 100644 --- a/dcmrt/libsrc/drtrws.cc +++ b/dcmrt/libsrc/drtrws.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTRecordedWedgeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -415,10 +415,12 @@ OFCondition DRTRecordedWedgeSequence::gotoFirstItem() OFCondition DRTRecordedWedgeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtrwvms.cc b/dcmrt/libsrc/drtrwvms.cc index a65903c5..b2914deb 100644 --- a/dcmrt/libsrc/drtrwvms.cc +++ b/dcmrt/libsrc/drtrwvms.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTRealWorldValueMappingSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -461,10 +461,12 @@ OFCondition DRTRealWorldValueMappingSequence::gotoFirstItem() OFCondition DRTRealWorldValueMappingSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtscris.cc b/dcmrt/libsrc/drtscris.cc index 3e0fef6a..35823f80 100644 --- a/dcmrt/libsrc/drtscris.cc +++ b/dcmrt/libsrc/drtscris.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTStudiesContainingOtherReferencedInstancesSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -250,10 +250,12 @@ OFCondition DRTStudiesContainingOtherReferencedInstancesSequence::gotoFirstItem( OFCondition DRTStudiesContainingOtherReferencedInstancesSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtscs.cc b/dcmrt/libsrc/drtscs.cc index 03e75af2..21cc5e3a 100644 --- a/dcmrt/libsrc/drtscs.cc +++ b/dcmrt/libsrc/drtscs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTStrainCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -656,10 +656,12 @@ OFCondition DRTStrainCodeSequence::gotoFirstItem() OFCondition DRTStrainCodeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtscvs.cc b/dcmrt/libsrc/drtscvs.cc new file mode 100644 index 00000000..1f66a540 --- /dev/null +++ b/dcmrt/libsrc/drtscvs.cc @@ -0,0 +1,578 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTSourceConceptualVolumeSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtscvs.h" + + +// --- item class --- + +DRTSourceConceptualVolumeSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + ConceptualVolumeConstituentIndex(DCM_ConceptualVolumeConstituentIndex), + ConceptualVolumeConstituentSegmentationReferenceSequence(emptyDefaultItem /*emptyDefaultSequence*/), + SourceConceptualVolumeUID(DCM_SourceConceptualVolumeUID) +{ +} + + +DRTSourceConceptualVolumeSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + ConceptualVolumeConstituentIndex(copy.ConceptualVolumeConstituentIndex), + ConceptualVolumeConstituentSegmentationReferenceSequence(copy.ConceptualVolumeConstituentSegmentationReferenceSequence), + SourceConceptualVolumeUID(copy.SourceConceptualVolumeUID) +{ +} + + +DRTSourceConceptualVolumeSequence::Item::~Item() +{ +} + + +DRTSourceConceptualVolumeSequence::Item &DRTSourceConceptualVolumeSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + ConceptualVolumeConstituentIndex = copy.ConceptualVolumeConstituentIndex; + ConceptualVolumeConstituentSegmentationReferenceSequence = copy.ConceptualVolumeConstituentSegmentationReferenceSequence; + SourceConceptualVolumeUID = copy.SourceConceptualVolumeUID; + } + return *this; +} + + +void DRTSourceConceptualVolumeSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + SourceConceptualVolumeUID.clear(); + ConceptualVolumeConstituentIndex.clear(); + ConceptualVolumeConstituentSegmentationReferenceSequence.clear(); + } +} + + +OFBool DRTSourceConceptualVolumeSequence::Item::isEmpty() +{ + return SourceConceptualVolumeUID.isEmpty() && + ConceptualVolumeConstituentIndex.isEmpty() && + ConceptualVolumeConstituentSegmentationReferenceSequence.isEmpty(); +} + + +OFBool DRTSourceConceptualVolumeSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTSourceConceptualVolumeSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, SourceConceptualVolumeUID, "1", "1", "SourceConceptualVolumeSequence"); + getAndCheckElementFromDataset(item, ConceptualVolumeConstituentIndex, "1", "1", "SourceConceptualVolumeSequence"); + ConceptualVolumeConstituentSegmentationReferenceSequence.read(item, "1-n", "2", "SourceConceptualVolumeSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTSourceConceptualVolumeSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmUniqueIdentifier(SourceConceptualVolumeUID), "1", "1", "SourceConceptualVolumeSequence"); + addElementToDataset(result, item, new DcmUnsignedShort(ConceptualVolumeConstituentIndex), "1", "1", "SourceConceptualVolumeSequence"); + if (result.good()) result = ConceptualVolumeConstituentSegmentationReferenceSequence.write(item, "1-n", "2", "SourceConceptualVolumeSequence"); + } + return result; +} + + +OFCondition DRTSourceConceptualVolumeSequence::Item::getConceptualVolumeConstituentIndex(Uint16 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmUnsignedShort &, ConceptualVolumeConstituentIndex).getUint16(value, pos); +} + + +OFCondition DRTSourceConceptualVolumeSequence::Item::getSourceConceptualVolumeUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(SourceConceptualVolumeUID, value, pos); +} + + +OFCondition DRTSourceConceptualVolumeSequence::Item::setConceptualVolumeConstituentIndex(const Uint16 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return ConceptualVolumeConstituentIndex.putUint16(value, pos); +} + + +OFCondition DRTSourceConceptualVolumeSequence::Item::setSourceConceptualVolumeUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = SourceConceptualVolumeUID.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTSourceConceptualVolumeSequence::DRTSourceConceptualVolumeSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTSourceConceptualVolumeSequence::DRTSourceConceptualVolumeSequence(const DRTSourceConceptualVolumeSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTSourceConceptualVolumeSequence &DRTSourceConceptualVolumeSequence::operator=(const DRTSourceConceptualVolumeSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTSourceConceptualVolumeSequence::~DRTSourceConceptualVolumeSequence() +{ + clear(); +} + + +void DRTSourceConceptualVolumeSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTSourceConceptualVolumeSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTSourceConceptualVolumeSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTSourceConceptualVolumeSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTSourceConceptualVolumeSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTSourceConceptualVolumeSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTSourceConceptualVolumeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTSourceConceptualVolumeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTSourceConceptualVolumeSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTSourceConceptualVolumeSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTSourceConceptualVolumeSequence::Item &DRTSourceConceptualVolumeSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTSourceConceptualVolumeSequence::Item &DRTSourceConceptualVolumeSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTSourceConceptualVolumeSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTSourceConceptualVolumeSequence::Item &DRTSourceConceptualVolumeSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTSourceConceptualVolumeSequence::Item &DRTSourceConceptualVolumeSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTSourceConceptualVolumeSequence::Item &DRTSourceConceptualVolumeSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTSourceConceptualVolumeSequence::Item &DRTSourceConceptualVolumeSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTSourceConceptualVolumeSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTSourceConceptualVolumeSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTSourceConceptualVolumeSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTSourceConceptualVolumeSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_SourceConceptualVolumeSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_SourceConceptualVolumeSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTSourceConceptualVolumeSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_SourceConceptualVolumeSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtsdcs.cc b/dcmrt/libsrc/drtsdcs.cc index 90c8e989..1dc74c1f 100644 --- a/dcmrt/libsrc/drtsdcs.cc +++ b/dcmrt/libsrc/drtsdcs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTSeriesDescriptionCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -656,10 +656,12 @@ OFCondition DRTSeriesDescriptionCodeSequence::gotoFirstItem() OFCondition DRTSeriesDescriptionCodeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtsds.cc b/dcmrt/libsrc/drtsds.cc index ceb1dcd6..56cc4912 100644 --- a/dcmrt/libsrc/drtsds.cc +++ b/dcmrt/libsrc/drtsds.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTSetupDeviceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -397,10 +397,12 @@ OFCondition DRTSetupDeviceSequence::gotoFirstItem() OFCondition DRTSetupDeviceSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtshds.cc b/dcmrt/libsrc/drtshds.cc index 4bc3520c..24a9896c 100644 --- a/dcmrt/libsrc/drtshds.cc +++ b/dcmrt/libsrc/drtshds.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTShieldingDeviceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -359,10 +359,12 @@ OFCondition DRTShieldingDeviceSequence::gotoFirstItem() OFCondition DRTShieldingDeviceSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtsins.cc b/dcmrt/libsrc/drtsins.cc index 519b4842..cdb29e2b 100644 --- a/dcmrt/libsrc/drtsins.cc +++ b/dcmrt/libsrc/drtsins.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTSourceInstanceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -279,10 +279,12 @@ OFCondition DRTSourceInstanceSequence::gotoFirstItem() OFCondition DRTSourceInstanceSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtsis.cc b/dcmrt/libsrc/drtsis.cc index ce2fda10..bd445c9e 100644 --- a/dcmrt/libsrc/drtsis.cc +++ b/dcmrt/libsrc/drtsis.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTSourceImageSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -400,10 +400,12 @@ OFCondition DRTSourceImageSequence::gotoFirstItem() OFCondition DRTSourceImageSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtsns.cc b/dcmrt/libsrc/drtsns.cc index f181258a..0ccf780c 100644 --- a/dcmrt/libsrc/drtsns.cc +++ b/dcmrt/libsrc/drtsns.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTSnoutSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -272,10 +272,12 @@ OFCondition DRTSnoutSequence::gotoFirstItem() OFCondition DRTSnoutSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtspccs.cc b/dcmrt/libsrc/drtspccs.cc index b293c8cf..cc637ca3 100644 --- a/dcmrt/libsrc/drtspccs.cc +++ b/dcmrt/libsrc/drtspccs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTSegmentedPropertyCategoryCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -656,10 +656,12 @@ OFCondition DRTSegmentedPropertyCategoryCodeSequence::gotoFirstItem() OFCondition DRTSegmentedPropertyCategoryCodeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtspcs.cc b/dcmrt/libsrc/drtspcs.cc index ac21d60e..16acda03 100644 --- a/dcmrt/libsrc/drtspcs.cc +++ b/dcmrt/libsrc/drtspcs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTScheduledProtocolCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -663,10 +663,12 @@ OFCondition DRTScheduledProtocolCodeSequence::gotoFirstItem() OFCondition DRTScheduledProtocolCodeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtspgis.cc b/dcmrt/libsrc/drtspgis.cc index c873b708..7b3f21d6 100644 --- a/dcmrt/libsrc/drtspgis.cc +++ b/dcmrt/libsrc/drtspgis.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTSourcePatientGroupIdentificationSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -279,10 +279,12 @@ OFCondition DRTSourcePatientGroupIdentificationSequence::gotoFirstItem() OFCondition DRTSourcePatientGroupIdentificationSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtsppcs.cc b/dcmrt/libsrc/drtsppcs.cc new file mode 100644 index 00000000..df8c64f1 --- /dev/null +++ b/dcmrt/libsrc/drtsppcs.cc @@ -0,0 +1,784 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTSourcePixelPlanesCharacteristicsSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtsppcs.h" + + +// --- item class --- + +DRTSourcePixelPlanesCharacteristicsSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + Columns(DCM_Columns), + ImageOrientationPatient(DCM_ImageOrientationPatient), + ImagePositionPatient(DCM_ImagePositionPatient), + NumberOfFrames(DCM_NumberOfFrames), + PixelSpacing(DCM_PixelSpacing), + Rows(DCM_Rows), + SpacingBetweenSlices(DCM_SpacingBetweenSlices) +{ +} + + +DRTSourcePixelPlanesCharacteristicsSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + Columns(copy.Columns), + ImageOrientationPatient(copy.ImageOrientationPatient), + ImagePositionPatient(copy.ImagePositionPatient), + NumberOfFrames(copy.NumberOfFrames), + PixelSpacing(copy.PixelSpacing), + Rows(copy.Rows), + SpacingBetweenSlices(copy.SpacingBetweenSlices) +{ +} + + +DRTSourcePixelPlanesCharacteristicsSequence::Item::~Item() +{ +} + + +DRTSourcePixelPlanesCharacteristicsSequence::Item &DRTSourcePixelPlanesCharacteristicsSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + Columns = copy.Columns; + ImageOrientationPatient = copy.ImageOrientationPatient; + ImagePositionPatient = copy.ImagePositionPatient; + NumberOfFrames = copy.NumberOfFrames; + PixelSpacing = copy.PixelSpacing; + Rows = copy.Rows; + SpacingBetweenSlices = copy.SpacingBetweenSlices; + } + return *this; +} + + +void DRTSourcePixelPlanesCharacteristicsSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + PixelSpacing.clear(); + SpacingBetweenSlices.clear(); + ImageOrientationPatient.clear(); + ImagePositionPatient.clear(); + NumberOfFrames.clear(); + Rows.clear(); + Columns.clear(); + } +} + + +OFBool DRTSourcePixelPlanesCharacteristicsSequence::Item::isEmpty() +{ + return PixelSpacing.isEmpty() && + SpacingBetweenSlices.isEmpty() && + ImageOrientationPatient.isEmpty() && + ImagePositionPatient.isEmpty() && + NumberOfFrames.isEmpty() && + Rows.isEmpty() && + Columns.isEmpty(); +} + + +OFBool DRTSourcePixelPlanesCharacteristicsSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, PixelSpacing, "2", "1", "SourcePixelPlanesCharacteristicsSequence"); + getAndCheckElementFromDataset(item, SpacingBetweenSlices, "1", "1", "SourcePixelPlanesCharacteristicsSequence"); + getAndCheckElementFromDataset(item, ImageOrientationPatient, "6", "1", "SourcePixelPlanesCharacteristicsSequence"); + getAndCheckElementFromDataset(item, ImagePositionPatient, "3", "1", "SourcePixelPlanesCharacteristicsSequence"); + getAndCheckElementFromDataset(item, NumberOfFrames, "1", "1", "SourcePixelPlanesCharacteristicsSequence"); + getAndCheckElementFromDataset(item, Rows, "1", "1", "SourcePixelPlanesCharacteristicsSequence"); + getAndCheckElementFromDataset(item, Columns, "1", "1", "SourcePixelPlanesCharacteristicsSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmDecimalString(PixelSpacing), "2", "1", "SourcePixelPlanesCharacteristicsSequence"); + addElementToDataset(result, item, new DcmDecimalString(SpacingBetweenSlices), "1", "1", "SourcePixelPlanesCharacteristicsSequence"); + addElementToDataset(result, item, new DcmDecimalString(ImageOrientationPatient), "6", "1", "SourcePixelPlanesCharacteristicsSequence"); + addElementToDataset(result, item, new DcmDecimalString(ImagePositionPatient), "3", "1", "SourcePixelPlanesCharacteristicsSequence"); + addElementToDataset(result, item, new DcmIntegerString(NumberOfFrames), "1", "1", "SourcePixelPlanesCharacteristicsSequence"); + addElementToDataset(result, item, new DcmUnsignedShort(Rows), "1", "1", "SourcePixelPlanesCharacteristicsSequence"); + addElementToDataset(result, item, new DcmUnsignedShort(Columns), "1", "1", "SourcePixelPlanesCharacteristicsSequence"); + } + return result; +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::getColumns(Uint16 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmUnsignedShort &, Columns).getUint16(value, pos); +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::getImageOrientationPatient(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ImageOrientationPatient, value, pos); +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::getImageOrientationPatient(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, ImageOrientationPatient).getFloat64(value, pos); +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::getImageOrientationPatient(OFVector &value) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, ImageOrientationPatient).getFloat64Vector(value); +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::getImagePositionPatient(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ImagePositionPatient, value, pos); +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::getImagePositionPatient(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, ImagePositionPatient).getFloat64(value, pos); +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::getImagePositionPatient(OFVector &value) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, ImagePositionPatient).getFloat64Vector(value); +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::getNumberOfFrames(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(NumberOfFrames, value, pos); +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::getNumberOfFrames(Sint32 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmIntegerString &, NumberOfFrames).getSint32(value, pos); +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::getPixelSpacing(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(PixelSpacing, value, pos); +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::getPixelSpacing(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, PixelSpacing).getFloat64(value, pos); +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::getPixelSpacing(OFVector &value) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, PixelSpacing).getFloat64Vector(value); +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::getRows(Uint16 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmUnsignedShort &, Rows).getUint16(value, pos); +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::getSpacingBetweenSlices(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(SpacingBetweenSlices, value, pos); +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::getSpacingBetweenSlices(Float64 &value, const unsigned long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return OFconst_cast(DcmDecimalString &, SpacingBetweenSlices).getFloat64(value, pos); +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::setColumns(const Uint16 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return Columns.putUint16(value, pos); +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::setImageOrientationPatient(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDecimalString::checkStringValue(value, "6") : EC_Normal; + if (result.good()) + result = ImageOrientationPatient.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::setImagePositionPatient(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDecimalString::checkStringValue(value, "3") : EC_Normal; + if (result.good()) + result = ImagePositionPatient.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::setNumberOfFrames(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = NumberOfFrames.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::setPixelSpacing(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDecimalString::checkStringValue(value, "2") : EC_Normal; + if (result.good()) + result = PixelSpacing.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::setRows(const Uint16 value, const unsigned long pos) +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return Rows.putUint16(value, pos); +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::setSpacingBetweenSlices(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = SpacingBetweenSlices.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTSourcePixelPlanesCharacteristicsSequence::DRTSourcePixelPlanesCharacteristicsSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTSourcePixelPlanesCharacteristicsSequence::DRTSourcePixelPlanesCharacteristicsSequence(const DRTSourcePixelPlanesCharacteristicsSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTSourcePixelPlanesCharacteristicsSequence &DRTSourcePixelPlanesCharacteristicsSequence::operator=(const DRTSourcePixelPlanesCharacteristicsSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTSourcePixelPlanesCharacteristicsSequence::~DRTSourcePixelPlanesCharacteristicsSequence() +{ + clear(); +} + + +void DRTSourcePixelPlanesCharacteristicsSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTSourcePixelPlanesCharacteristicsSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTSourcePixelPlanesCharacteristicsSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTSourcePixelPlanesCharacteristicsSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTSourcePixelPlanesCharacteristicsSequence::Item &DRTSourcePixelPlanesCharacteristicsSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTSourcePixelPlanesCharacteristicsSequence::Item &DRTSourcePixelPlanesCharacteristicsSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTSourcePixelPlanesCharacteristicsSequence::Item &DRTSourcePixelPlanesCharacteristicsSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTSourcePixelPlanesCharacteristicsSequence::Item &DRTSourcePixelPlanesCharacteristicsSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTSourcePixelPlanesCharacteristicsSequence::Item &DRTSourcePixelPlanesCharacteristicsSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTSourcePixelPlanesCharacteristicsSequence::Item &DRTSourcePixelPlanesCharacteristicsSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_SourcePixelPlanesCharacteristicsSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_SourcePixelPlanesCharacteristicsSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTSourcePixelPlanesCharacteristicsSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_SourcePixelPlanesCharacteristicsSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drtsptcs.cc b/dcmrt/libsrc/drtsptcs.cc index 2f36d5d0..82ffacd1 100644 --- a/dcmrt/libsrc/drtsptcs.cc +++ b/dcmrt/libsrc/drtsptcs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTSegmentedPropertyTypeModifierCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -656,10 +656,12 @@ OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::gotoFirstItem() OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtss.cc b/dcmrt/libsrc/drtss.cc index e0ef16cf..aa857df5 100644 --- a/dcmrt/libsrc/drtss.cc +++ b/dcmrt/libsrc/drtss.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTSourceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -808,10 +808,12 @@ OFCondition DRTSourceSequence::gotoFirstItem() OFCondition DRTSourceSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtssrcs.cc b/dcmrt/libsrc/drtssrcs.cc index 3443bbfc..f652cc3d 100644 --- a/dcmrt/libsrc/drtssrcs.cc +++ b/dcmrt/libsrc/drtssrcs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTStrainSourceRegistryCodeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -656,10 +656,12 @@ OFCondition DRTStrainSourceRegistryCodeSequence::gotoFirstItem() OFCondition DRTStrainSourceRegistryCodeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtssrs.cc b/dcmrt/libsrc/drtssrs.cc index 8d050cde..dcdd23eb 100644 --- a/dcmrt/libsrc/drtssrs.cc +++ b/dcmrt/libsrc/drtssrs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTStructureSetROISequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -21,7 +21,10 @@ DRTStructureSetROISequence::Item::Item(const OFBool emptyDefaultItem) : EmptyDefaultItem(emptyDefaultItem), + ConceptualVolumeIdentificationSequence(emptyDefaultItem /*emptyDefaultSequence*/), + DefinitionSourceSequence(emptyDefaultItem /*emptyDefaultSequence*/), DerivationCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), + ROIDerivationAlgorithmIdentificationSequence(emptyDefaultItem /*emptyDefaultSequence*/), ROIDescription(DCM_ROIDescription), ROIGenerationAlgorithm(DCM_ROIGenerationAlgorithm), ROIGenerationDescription(DCM_ROIGenerationDescription), @@ -35,7 +38,10 @@ DRTStructureSetROISequence::Item::Item(const OFBool emptyDefaultItem) DRTStructureSetROISequence::Item::Item(const Item ©) : EmptyDefaultItem(copy.EmptyDefaultItem), + ConceptualVolumeIdentificationSequence(copy.ConceptualVolumeIdentificationSequence), + DefinitionSourceSequence(copy.DefinitionSourceSequence), DerivationCodeSequence(copy.DerivationCodeSequence), + ROIDerivationAlgorithmIdentificationSequence(copy.ROIDerivationAlgorithmIdentificationSequence), ROIDescription(copy.ROIDescription), ROIGenerationAlgorithm(copy.ROIGenerationAlgorithm), ROIGenerationDescription(copy.ROIGenerationDescription), @@ -57,7 +63,10 @@ DRTStructureSetROISequence::Item &DRTStructureSetROISequence::Item::operator=(co if (this != ©) { EmptyDefaultItem = copy.EmptyDefaultItem; + ConceptualVolumeIdentificationSequence = copy.ConceptualVolumeIdentificationSequence; + DefinitionSourceSequence = copy.DefinitionSourceSequence; DerivationCodeSequence = copy.DerivationCodeSequence; + ROIDerivationAlgorithmIdentificationSequence = copy.ROIDerivationAlgorithmIdentificationSequence; ROIDescription = copy.ROIDescription; ROIGenerationAlgorithm = copy.ROIGenerationAlgorithm; ROIGenerationDescription = copy.ROIGenerationDescription; @@ -76,13 +85,16 @@ void DRTStructureSetROISequence::Item::clear() { /* clear all DICOM attributes */ ROINumber.clear(); + ConceptualVolumeIdentificationSequence.clear(); ReferencedFrameOfReferenceUID.clear(); ROIName.clear(); ROIDescription.clear(); ROIVolume.clear(); ROIGenerationAlgorithm.clear(); ROIGenerationDescription.clear(); + ROIDerivationAlgorithmIdentificationSequence.clear(); DerivationCodeSequence.clear(); + DefinitionSourceSequence.clear(); } } @@ -90,13 +102,16 @@ void DRTStructureSetROISequence::Item::clear() OFBool DRTStructureSetROISequence::Item::isEmpty() { return ROINumber.isEmpty() && + ConceptualVolumeIdentificationSequence.isEmpty() && ReferencedFrameOfReferenceUID.isEmpty() && ROIName.isEmpty() && ROIDescription.isEmpty() && ROIVolume.isEmpty() && ROIGenerationAlgorithm.isEmpty() && ROIGenerationDescription.isEmpty() && - DerivationCodeSequence.isEmpty(); + ROIDerivationAlgorithmIdentificationSequence.isEmpty() && + DerivationCodeSequence.isEmpty() && + DefinitionSourceSequence.isEmpty(); } @@ -114,13 +129,16 @@ OFCondition DRTStructureSetROISequence::Item::read(DcmItem &item) /* re-initialize object */ clear(); getAndCheckElementFromDataset(item, ROINumber, "1", "1", "StructureSetROISequence"); + ConceptualVolumeIdentificationSequence.read(item, "1-n", "3", "StructureSetROISequence"); getAndCheckElementFromDataset(item, ReferencedFrameOfReferenceUID, "1", "1", "StructureSetROISequence"); getAndCheckElementFromDataset(item, ROIName, "1", "2", "StructureSetROISequence"); getAndCheckElementFromDataset(item, ROIDescription, "1", "3", "StructureSetROISequence"); getAndCheckElementFromDataset(item, ROIVolume, "1", "3", "StructureSetROISequence"); getAndCheckElementFromDataset(item, ROIGenerationAlgorithm, "1", "2", "StructureSetROISequence"); getAndCheckElementFromDataset(item, ROIGenerationDescription, "1", "3", "StructureSetROISequence"); + ROIDerivationAlgorithmIdentificationSequence.read(item, "1-n", "3", "StructureSetROISequence"); DerivationCodeSequence.read(item, "1-n", "3", "StructureSetROISequence"); + DefinitionSourceSequence.read(item, "1-n", "3", "StructureSetROISequence"); result = EC_Normal; } return result; @@ -134,13 +152,16 @@ OFCondition DRTStructureSetROISequence::Item::write(DcmItem &item) { result = EC_Normal; addElementToDataset(result, item, new DcmIntegerString(ROINumber), "1", "1", "StructureSetROISequence"); + if (result.good()) result = ConceptualVolumeIdentificationSequence.write(item, "1-n", "3", "StructureSetROISequence"); addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedFrameOfReferenceUID), "1", "1", "StructureSetROISequence"); addElementToDataset(result, item, new DcmLongString(ROIName), "1", "2", "StructureSetROISequence"); addElementToDataset(result, item, new DcmShortText(ROIDescription), "1", "3", "StructureSetROISequence"); addElementToDataset(result, item, new DcmDecimalString(ROIVolume), "1", "3", "StructureSetROISequence"); addElementToDataset(result, item, new DcmCodeString(ROIGenerationAlgorithm), "1", "2", "StructureSetROISequence"); addElementToDataset(result, item, new DcmLongString(ROIGenerationDescription), "1", "3", "StructureSetROISequence"); + if (result.good()) result = ROIDerivationAlgorithmIdentificationSequence.write(item, "1-n", "3", "StructureSetROISequence"); if (result.good()) result = DerivationCodeSequence.write(item, "1-n", "3", "StructureSetROISequence"); + if (result.good()) result = DefinitionSourceSequence.write(item, "1-n", "3", "StructureSetROISequence"); } return result; } @@ -442,10 +463,12 @@ OFCondition DRTStructureSetROISequence::gotoFirstItem() OFCondition DRTStructureSetROISequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtsss.cc b/dcmrt/libsrc/drtsss.cc index a50e49a2..650a2f9f 100644 --- a/dcmrt/libsrc/drtsss.cc +++ b/dcmrt/libsrc/drtsss.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTStrainStockSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -279,10 +279,12 @@ OFCondition DRTStrainStockSequence::gotoFirstItem() OFCondition DRTStrainStockSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtstrct.cc b/dcmrt/libsrc/drtstrct.cc index 0e48bbe7..6670863f 100644 --- a/dcmrt/libsrc/drtstrct.cc +++ b/dcmrt/libsrc/drtstrct.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTStructureSetIOD * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -22,6 +22,7 @@ DRTStructureSetIOD::DRTStructureSetIOD() PatientID(DCM_PatientID), IssuerOfPatientID(DCM_IssuerOfPatientID), IssuerOfPatientIDQualifiersSequence(), + TypeOfPatientID(DCM_TypeOfPatientID), PatientBirthDate(DCM_PatientBirthDate), PatientBirthDateInAlternativeCalendar(DCM_PatientBirthDateInAlternativeCalendar), PatientDeathDateInAlternativeCalendar(DCM_PatientDeathDateInAlternativeCalendar), @@ -78,6 +79,7 @@ DRTStructureSetIOD::DRTStructureSetIOD() PhysiciansOfRecordIdentificationSequence(), NameOfPhysiciansReadingStudy(DCM_NameOfPhysiciansReadingStudy), PhysiciansReadingStudyIdentificationSequence(), + RequestingService(DCM_RequestingService), RequestingServiceCodeSequence(), ReferencedStudySequence(), ProcedureCodeSequence(), @@ -101,12 +103,15 @@ DRTStructureSetIOD::DRTStructureSetIOD() AdditionalPatientHistory(DCM_AdditionalPatientHistory), AdmissionID(DCM_AdmissionID), IssuerOfAdmissionIDSequence(), + ReasonForVisit(DCM_ReasonForVisit), + ReasonForVisitCodeSequence(), ServiceEpisodeID(DCM_ServiceEpisodeID), IssuerOfServiceEpisodeIDSequence(), ServiceEpisodeDescription(DCM_ServiceEpisodeDescription), PatientSexNeutered(DCM_PatientSexNeutered), ClinicalTrialTimePointID(DCM_ClinicalTrialTimePointID), ClinicalTrialTimePointDescription(DCM_ClinicalTrialTimePointDescription), + ClinicalTrialTimePointTypeCodeSequence(), LongitudinalTemporalOffsetFromEvent(DCM_LongitudinalTemporalOffsetFromEvent), LongitudinalTemporalEventType(DCM_LongitudinalTemporalEventType), ConsentForClinicalTrialUseSequence(), @@ -129,6 +134,7 @@ DRTStructureSetIOD::DRTStructureSetIOD() PerformedProcedureStepDescription(DCM_PerformedProcedureStepDescription), PerformedProtocolCodeSequence(), CommentsOnThePerformedProcedureStep(DCM_CommentsOnThePerformedProcedureStep), + TreatmentSessionUID(DCM_TreatmentSessionUID), ClinicalTrialCoordinatingCenterName(DCM_ClinicalTrialCoordinatingCenterName), ClinicalTrialSeriesID(DCM_ClinicalTrialSeriesID), ClinicalTrialSeriesDescription(DCM_ClinicalTrialSeriesDescription), @@ -137,11 +143,14 @@ DRTStructureSetIOD::DRTStructureSetIOD() InstitutionAddress(DCM_InstitutionAddress), StationName(DCM_StationName), InstitutionalDepartmentName(DCM_InstitutionalDepartmentName), + InstitutionalDepartmentTypeCodeSequence(), ManufacturerModelName(DCM_ManufacturerModelName), + ManufacturerDeviceClassUID(DCM_ManufacturerDeviceClassUID), DeviceSerialNumber(DCM_DeviceSerialNumber), SoftwareVersions(DCM_SoftwareVersions), GantryID(DCM_GantryID), UDISequence(), + DeviceUID(DCM_DeviceUID), SpatialResolution(DCM_SpatialResolution), DateOfLastCalibration(DCM_DateOfLastCalibration), TimeOfLastCalibration(DCM_TimeOfLastCalibration), @@ -197,6 +206,10 @@ DRTStructureSetIOD::DRTStructureSetIOD() ConversionSourceAttributesSequence(), ContentQualification(DCM_ContentQualification), PrivateDataElementCharacteristicsSequence(), + InstanceOriginStatus(DCM_InstanceOriginStatus), + BarcodeValue(DCM_BarcodeValue), + ReferencedDefinedProtocolSequence(), + ReferencedPerformedProtocolSequence(), ReferencedSeriesSequence(), StudiesContainingOtherReferencedInstancesSequence() { @@ -210,6 +223,7 @@ DRTStructureSetIOD::DRTStructureSetIOD(const DRTStructureSetIOD ©) PatientID(copy.PatientID), IssuerOfPatientID(copy.IssuerOfPatientID), IssuerOfPatientIDQualifiersSequence(copy.IssuerOfPatientIDQualifiersSequence), + TypeOfPatientID(copy.TypeOfPatientID), PatientBirthDate(copy.PatientBirthDate), PatientBirthDateInAlternativeCalendar(copy.PatientBirthDateInAlternativeCalendar), PatientDeathDateInAlternativeCalendar(copy.PatientDeathDateInAlternativeCalendar), @@ -266,6 +280,7 @@ DRTStructureSetIOD::DRTStructureSetIOD(const DRTStructureSetIOD ©) PhysiciansOfRecordIdentificationSequence(copy.PhysiciansOfRecordIdentificationSequence), NameOfPhysiciansReadingStudy(copy.NameOfPhysiciansReadingStudy), PhysiciansReadingStudyIdentificationSequence(copy.PhysiciansReadingStudyIdentificationSequence), + RequestingService(copy.RequestingService), RequestingServiceCodeSequence(copy.RequestingServiceCodeSequence), ReferencedStudySequence(copy.ReferencedStudySequence), ProcedureCodeSequence(copy.ProcedureCodeSequence), @@ -289,12 +304,15 @@ DRTStructureSetIOD::DRTStructureSetIOD(const DRTStructureSetIOD ©) AdditionalPatientHistory(copy.AdditionalPatientHistory), AdmissionID(copy.AdmissionID), IssuerOfAdmissionIDSequence(copy.IssuerOfAdmissionIDSequence), + ReasonForVisit(copy.ReasonForVisit), + ReasonForVisitCodeSequence(copy.ReasonForVisitCodeSequence), ServiceEpisodeID(copy.ServiceEpisodeID), IssuerOfServiceEpisodeIDSequence(copy.IssuerOfServiceEpisodeIDSequence), ServiceEpisodeDescription(copy.ServiceEpisodeDescription), PatientSexNeutered(copy.PatientSexNeutered), ClinicalTrialTimePointID(copy.ClinicalTrialTimePointID), ClinicalTrialTimePointDescription(copy.ClinicalTrialTimePointDescription), + ClinicalTrialTimePointTypeCodeSequence(copy.ClinicalTrialTimePointTypeCodeSequence), LongitudinalTemporalOffsetFromEvent(copy.LongitudinalTemporalOffsetFromEvent), LongitudinalTemporalEventType(copy.LongitudinalTemporalEventType), ConsentForClinicalTrialUseSequence(copy.ConsentForClinicalTrialUseSequence), @@ -317,6 +335,7 @@ DRTStructureSetIOD::DRTStructureSetIOD(const DRTStructureSetIOD ©) PerformedProcedureStepDescription(copy.PerformedProcedureStepDescription), PerformedProtocolCodeSequence(copy.PerformedProtocolCodeSequence), CommentsOnThePerformedProcedureStep(copy.CommentsOnThePerformedProcedureStep), + TreatmentSessionUID(copy.TreatmentSessionUID), ClinicalTrialCoordinatingCenterName(copy.ClinicalTrialCoordinatingCenterName), ClinicalTrialSeriesID(copy.ClinicalTrialSeriesID), ClinicalTrialSeriesDescription(copy.ClinicalTrialSeriesDescription), @@ -325,11 +344,14 @@ DRTStructureSetIOD::DRTStructureSetIOD(const DRTStructureSetIOD ©) InstitutionAddress(copy.InstitutionAddress), StationName(copy.StationName), InstitutionalDepartmentName(copy.InstitutionalDepartmentName), + InstitutionalDepartmentTypeCodeSequence(copy.InstitutionalDepartmentTypeCodeSequence), ManufacturerModelName(copy.ManufacturerModelName), + ManufacturerDeviceClassUID(copy.ManufacturerDeviceClassUID), DeviceSerialNumber(copy.DeviceSerialNumber), SoftwareVersions(copy.SoftwareVersions), GantryID(copy.GantryID), UDISequence(copy.UDISequence), + DeviceUID(copy.DeviceUID), SpatialResolution(copy.SpatialResolution), DateOfLastCalibration(copy.DateOfLastCalibration), TimeOfLastCalibration(copy.TimeOfLastCalibration), @@ -385,6 +407,10 @@ DRTStructureSetIOD::DRTStructureSetIOD(const DRTStructureSetIOD ©) ConversionSourceAttributesSequence(copy.ConversionSourceAttributesSequence), ContentQualification(copy.ContentQualification), PrivateDataElementCharacteristicsSequence(copy.PrivateDataElementCharacteristicsSequence), + InstanceOriginStatus(copy.InstanceOriginStatus), + BarcodeValue(copy.BarcodeValue), + ReferencedDefinedProtocolSequence(copy.ReferencedDefinedProtocolSequence), + ReferencedPerformedProtocolSequence(copy.ReferencedPerformedProtocolSequence), ReferencedSeriesSequence(copy.ReferencedSeriesSequence), StudiesContainingOtherReferencedInstancesSequence(copy.StudiesContainingOtherReferencedInstancesSequence) { @@ -404,6 +430,7 @@ DRTStructureSetIOD &DRTStructureSetIOD::operator=(const DRTStructureSetIOD © PatientID = copy.PatientID; IssuerOfPatientID = copy.IssuerOfPatientID; IssuerOfPatientIDQualifiersSequence = copy.IssuerOfPatientIDQualifiersSequence; + TypeOfPatientID = copy.TypeOfPatientID; PatientBirthDate = copy.PatientBirthDate; PatientBirthDateInAlternativeCalendar = copy.PatientBirthDateInAlternativeCalendar; PatientDeathDateInAlternativeCalendar = copy.PatientDeathDateInAlternativeCalendar; @@ -460,6 +487,7 @@ DRTStructureSetIOD &DRTStructureSetIOD::operator=(const DRTStructureSetIOD © PhysiciansOfRecordIdentificationSequence = copy.PhysiciansOfRecordIdentificationSequence; NameOfPhysiciansReadingStudy = copy.NameOfPhysiciansReadingStudy; PhysiciansReadingStudyIdentificationSequence = copy.PhysiciansReadingStudyIdentificationSequence; + RequestingService = copy.RequestingService; RequestingServiceCodeSequence = copy.RequestingServiceCodeSequence; ReferencedStudySequence = copy.ReferencedStudySequence; ProcedureCodeSequence = copy.ProcedureCodeSequence; @@ -483,12 +511,15 @@ DRTStructureSetIOD &DRTStructureSetIOD::operator=(const DRTStructureSetIOD © AdditionalPatientHistory = copy.AdditionalPatientHistory; AdmissionID = copy.AdmissionID; IssuerOfAdmissionIDSequence = copy.IssuerOfAdmissionIDSequence; + ReasonForVisit = copy.ReasonForVisit; + ReasonForVisitCodeSequence = copy.ReasonForVisitCodeSequence; ServiceEpisodeID = copy.ServiceEpisodeID; IssuerOfServiceEpisodeIDSequence = copy.IssuerOfServiceEpisodeIDSequence; ServiceEpisodeDescription = copy.ServiceEpisodeDescription; PatientSexNeutered = copy.PatientSexNeutered; ClinicalTrialTimePointID = copy.ClinicalTrialTimePointID; ClinicalTrialTimePointDescription = copy.ClinicalTrialTimePointDescription; + ClinicalTrialTimePointTypeCodeSequence = copy.ClinicalTrialTimePointTypeCodeSequence; LongitudinalTemporalOffsetFromEvent = copy.LongitudinalTemporalOffsetFromEvent; LongitudinalTemporalEventType = copy.LongitudinalTemporalEventType; ConsentForClinicalTrialUseSequence = copy.ConsentForClinicalTrialUseSequence; @@ -511,6 +542,7 @@ DRTStructureSetIOD &DRTStructureSetIOD::operator=(const DRTStructureSetIOD © PerformedProcedureStepDescription = copy.PerformedProcedureStepDescription; PerformedProtocolCodeSequence = copy.PerformedProtocolCodeSequence; CommentsOnThePerformedProcedureStep = copy.CommentsOnThePerformedProcedureStep; + TreatmentSessionUID = copy.TreatmentSessionUID; ClinicalTrialCoordinatingCenterName = copy.ClinicalTrialCoordinatingCenterName; ClinicalTrialSeriesID = copy.ClinicalTrialSeriesID; ClinicalTrialSeriesDescription = copy.ClinicalTrialSeriesDescription; @@ -519,11 +551,14 @@ DRTStructureSetIOD &DRTStructureSetIOD::operator=(const DRTStructureSetIOD © InstitutionAddress = copy.InstitutionAddress; StationName = copy.StationName; InstitutionalDepartmentName = copy.InstitutionalDepartmentName; + InstitutionalDepartmentTypeCodeSequence = copy.InstitutionalDepartmentTypeCodeSequence; ManufacturerModelName = copy.ManufacturerModelName; + ManufacturerDeviceClassUID = copy.ManufacturerDeviceClassUID; DeviceSerialNumber = copy.DeviceSerialNumber; SoftwareVersions = copy.SoftwareVersions; GantryID = copy.GantryID; UDISequence = copy.UDISequence; + DeviceUID = copy.DeviceUID; SpatialResolution = copy.SpatialResolution; DateOfLastCalibration = copy.DateOfLastCalibration; TimeOfLastCalibration = copy.TimeOfLastCalibration; @@ -579,6 +614,10 @@ DRTStructureSetIOD &DRTStructureSetIOD::operator=(const DRTStructureSetIOD © ConversionSourceAttributesSequence = copy.ConversionSourceAttributesSequence; ContentQualification = copy.ContentQualification; PrivateDataElementCharacteristicsSequence = copy.PrivateDataElementCharacteristicsSequence; + InstanceOriginStatus = copy.InstanceOriginStatus; + BarcodeValue = copy.BarcodeValue; + ReferencedDefinedProtocolSequence = copy.ReferencedDefinedProtocolSequence; + ReferencedPerformedProtocolSequence = copy.ReferencedPerformedProtocolSequence; ReferencedSeriesSequence = copy.ReferencedSeriesSequence; StudiesContainingOtherReferencedInstancesSequence = copy.StudiesContainingOtherReferencedInstancesSequence; } @@ -593,6 +632,7 @@ void DRTStructureSetIOD::clear() PatientID.clear(); IssuerOfPatientID.clear(); IssuerOfPatientIDQualifiersSequence.clear(); + TypeOfPatientID.clear(); PatientBirthDate.clear(); PatientBirthDateInAlternativeCalendar.clear(); PatientDeathDateInAlternativeCalendar.clear(); @@ -649,6 +689,7 @@ void DRTStructureSetIOD::clear() PhysiciansOfRecordIdentificationSequence.clear(); NameOfPhysiciansReadingStudy.clear(); PhysiciansReadingStudyIdentificationSequence.clear(); + RequestingService.clear(); RequestingServiceCodeSequence.clear(); ReferencedStudySequence.clear(); ProcedureCodeSequence.clear(); @@ -672,12 +713,15 @@ void DRTStructureSetIOD::clear() AdditionalPatientHistory.clear(); AdmissionID.clear(); IssuerOfAdmissionIDSequence.clear(); + ReasonForVisit.clear(); + ReasonForVisitCodeSequence.clear(); ServiceEpisodeID.clear(); IssuerOfServiceEpisodeIDSequence.clear(); ServiceEpisodeDescription.clear(); PatientSexNeutered.clear(); ClinicalTrialTimePointID.clear(); ClinicalTrialTimePointDescription.clear(); + ClinicalTrialTimePointTypeCodeSequence.clear(); LongitudinalTemporalOffsetFromEvent.clear(); LongitudinalTemporalEventType.clear(); ConsentForClinicalTrialUseSequence.clear(); @@ -700,6 +744,7 @@ void DRTStructureSetIOD::clear() PerformedProcedureStepDescription.clear(); PerformedProtocolCodeSequence.clear(); CommentsOnThePerformedProcedureStep.clear(); + TreatmentSessionUID.clear(); ClinicalTrialCoordinatingCenterName.clear(); ClinicalTrialSeriesID.clear(); ClinicalTrialSeriesDescription.clear(); @@ -708,11 +753,14 @@ void DRTStructureSetIOD::clear() InstitutionAddress.clear(); StationName.clear(); InstitutionalDepartmentName.clear(); + InstitutionalDepartmentTypeCodeSequence.clear(); ManufacturerModelName.clear(); + ManufacturerDeviceClassUID.clear(); DeviceSerialNumber.clear(); SoftwareVersions.clear(); GantryID.clear(); UDISequence.clear(); + DeviceUID.clear(); SpatialResolution.clear(); DateOfLastCalibration.clear(); TimeOfLastCalibration.clear(); @@ -768,6 +816,10 @@ void DRTStructureSetIOD::clear() ConversionSourceAttributesSequence.clear(); ContentQualification.clear(); PrivateDataElementCharacteristicsSequence.clear(); + InstanceOriginStatus.clear(); + BarcodeValue.clear(); + ReferencedDefinedProtocolSequence.clear(); + ReferencedPerformedProtocolSequence.clear(); ReferencedSeriesSequence.clear(); StudiesContainingOtherReferencedInstancesSequence.clear(); } @@ -823,11 +875,14 @@ OFCondition DRTStructureSetIOD::read(DcmItem &dataset) getAndCheckElementFromDataset(dataset, InstitutionAddress, "1", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, StationName, "1", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, InstitutionalDepartmentName, "1", "3", "GeneralEquipmentModule"); + InstitutionalDepartmentTypeCodeSequence.read(dataset, "1-n", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, ManufacturerModelName, "1", "3", "GeneralEquipmentModule"); + getAndCheckElementFromDataset(dataset, ManufacturerDeviceClassUID, "1-n", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, DeviceSerialNumber, "1", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, SoftwareVersions, "1-n", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, GantryID, "1", "3", "GeneralEquipmentModule"); UDISequence.read(dataset, "1-n", "3", "GeneralEquipmentModule"); + getAndCheckElementFromDataset(dataset, DeviceUID, "1", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, SpatialResolution, "1", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, DateOfLastCalibration, "1-n", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, TimeOfLastCalibration, "1-n", "3", "GeneralEquipmentModule"); @@ -905,6 +960,10 @@ OFCondition DRTStructureSetIOD::read(DcmItem &dataset) ConversionSourceAttributesSequence.read(dataset, "1-n", "1C", "SOPCommonModule"); getAndCheckElementFromDataset(dataset, ContentQualification, "1", "3", "SOPCommonModule"); PrivateDataElementCharacteristicsSequence.read(dataset, "1-n", "3", "SOPCommonModule"); + getAndCheckElementFromDataset(dataset, InstanceOriginStatus, "1", "3", "SOPCommonModule"); + getAndCheckElementFromDataset(dataset, BarcodeValue, "1", "3", "SOPCommonModule"); + ReferencedDefinedProtocolSequence.read(dataset, "1-n", "1C", "SOPCommonModule"); + ReferencedPerformedProtocolSequence.read(dataset, "1-n", "1C", "SOPCommonModule"); // --- CommonInstanceReferenceModule (U) --- ReferencedSeriesSequence.read(dataset, "1-n", "1C", "CommonInstanceReferenceModule"); @@ -923,6 +982,7 @@ OFCondition DRTStructureSetIOD::readPatientData(DcmItem &dataset) getAndCheckElementFromDataset(dataset, PatientID, "1", "2", "PatientModule"); getAndCheckElementFromDataset(dataset, IssuerOfPatientID, "1", "3", "PatientModule"); IssuerOfPatientIDQualifiersSequence.read(dataset, "1-n", "3", "PatientModule"); + getAndCheckElementFromDataset(dataset, TypeOfPatientID, "1", "3", "PatientModule"); getAndCheckElementFromDataset(dataset, PatientBirthDate, "1", "2", "PatientModule"); getAndCheckElementFromDataset(dataset, PatientBirthDateInAlternativeCalendar, "1", "3", "PatientModule"); getAndCheckElementFromDataset(dataset, PatientDeathDateInAlternativeCalendar, "1", "3", "PatientModule"); @@ -999,6 +1059,7 @@ OFCondition DRTStructureSetIOD::readStudyData(DcmItem &dataset) PhysiciansOfRecordIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule"); getAndCheckElementFromDataset(dataset, NameOfPhysiciansReadingStudy, "1-n", "3", "GeneralStudyModule"); PhysiciansReadingStudyIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule"); + getAndCheckElementFromDataset(dataset, RequestingService, "1", "3", "GeneralStudyModule"); RequestingServiceCodeSequence.read(dataset, "1-n", "3", "GeneralStudyModule"); ReferencedStudySequence.read(dataset, "1-n", "3", "GeneralStudyModule"); ProcedureCodeSequence.read(dataset, "1-n", "3", "GeneralStudyModule"); @@ -1024,6 +1085,8 @@ OFCondition DRTStructureSetIOD::readStudyData(DcmItem &dataset) getAndCheckElementFromDataset(dataset, AdditionalPatientHistory, "1", "3", "PatientStudyModule"); getAndCheckElementFromDataset(dataset, AdmissionID, "1", "3", "PatientStudyModule"); IssuerOfAdmissionIDSequence.read(dataset, "1-n", "3", "PatientStudyModule"); + getAndCheckElementFromDataset(dataset, ReasonForVisit, "1", "3", "PatientStudyModule"); + ReasonForVisitCodeSequence.read(dataset, "1-n", "3", "PatientStudyModule"); getAndCheckElementFromDataset(dataset, ServiceEpisodeID, "1", "3", "PatientStudyModule"); IssuerOfServiceEpisodeIDSequence.read(dataset, "1-n", "3", "PatientStudyModule"); getAndCheckElementFromDataset(dataset, ServiceEpisodeDescription, "1", "3", "PatientStudyModule"); @@ -1034,6 +1097,7 @@ OFCondition DRTStructureSetIOD::readStudyData(DcmItem &dataset) { getAndCheckElementFromDataset(dataset, ClinicalTrialTimePointID, "1", "2", "ClinicalTrialStudyModule"); getAndCheckElementFromDataset(dataset, ClinicalTrialTimePointDescription, "1", "3", "ClinicalTrialStudyModule"); + ClinicalTrialTimePointTypeCodeSequence.read(dataset, "1-n", "3", "ClinicalTrialStudyModule"); getAndCheckElementFromDataset(dataset, LongitudinalTemporalOffsetFromEvent, "1", "3", "ClinicalTrialStudyModule"); getAndCheckElementFromDataset(dataset, LongitudinalTemporalEventType, "1", "1C", "ClinicalTrialStudyModule"); ConsentForClinicalTrialUseSequence.read(dataset, "1-n", "3", "ClinicalTrialStudyModule"); @@ -1069,6 +1133,7 @@ OFCondition DRTStructureSetIOD::readSeriesData(DcmItem &dataset) getAndCheckElementFromDataset(dataset, PerformedProcedureStepDescription, "1", "3", "RTSeriesModule"); PerformedProtocolCodeSequence.read(dataset, "1-n", "3", "RTSeriesModule"); getAndCheckElementFromDataset(dataset, CommentsOnThePerformedProcedureStep, "1", "3", "RTSeriesModule"); + getAndCheckElementFromDataset(dataset, TreatmentSessionUID, "1", "3", "RTSeriesModule"); // --- ClinicalTrialSeriesModule (U) --- if (dataset.tagExists(DCM_ClinicalTrialCoordinatingCenterName)) @@ -1096,6 +1161,7 @@ OFCondition DRTStructureSetIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmLongString(PatientID), "1", "2", "PatientModule"); addElementToDataset(result, dataset, new DcmLongString(IssuerOfPatientID), "1", "3", "PatientModule"); if (result.good()) result = IssuerOfPatientIDQualifiersSequence.write(dataset, "1-n" ,"3", "PatientModule"); + addElementToDataset(result, dataset, new DcmCodeString(TypeOfPatientID), "1", "3", "PatientModule"); addElementToDataset(result, dataset, new DcmDate(PatientBirthDate), "1", "2", "PatientModule"); addElementToDataset(result, dataset, new DcmLongString(PatientBirthDateInAlternativeCalendar), "1", "3", "PatientModule"); addElementToDataset(result, dataset, new DcmLongString(PatientDeathDateInAlternativeCalendar), "1", "3", "PatientModule"); @@ -1159,6 +1225,7 @@ OFCondition DRTStructureSetIOD::write(DcmItem &dataset) if (result.good()) result = PhysiciansOfRecordIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule"); addElementToDataset(result, dataset, new DcmPersonName(NameOfPhysiciansReadingStudy), "1-n", "3", "GeneralStudyModule"); if (result.good()) result = PhysiciansReadingStudyIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule"); + addElementToDataset(result, dataset, new DcmLongString(RequestingService), "1", "3", "GeneralStudyModule"); if (result.good()) result = RequestingServiceCodeSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule"); if (result.good()) result = ReferencedStudySequence.write(dataset, "1-n" ,"3", "GeneralStudyModule"); if (result.good()) result = ProcedureCodeSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule"); @@ -1186,6 +1253,8 @@ OFCondition DRTStructureSetIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmLongText(AdditionalPatientHistory), "1", "3", "PatientStudyModule"); addElementToDataset(result, dataset, new DcmLongString(AdmissionID), "1", "3", "PatientStudyModule"); if (result.good()) result = IssuerOfAdmissionIDSequence.write(dataset, "1-n" ,"3", "PatientStudyModule"); + addElementToDataset(result, dataset, new DcmUnlimitedText(ReasonForVisit), "1", "3", "PatientStudyModule"); + if (result.good()) result = ReasonForVisitCodeSequence.write(dataset, "1-n" ,"3", "PatientStudyModule"); addElementToDataset(result, dataset, new DcmLongString(ServiceEpisodeID), "1", "3", "PatientStudyModule"); if (result.good()) result = IssuerOfServiceEpisodeIDSequence.write(dataset, "1-n" ,"3", "PatientStudyModule"); addElementToDataset(result, dataset, new DcmLongString(ServiceEpisodeDescription), "1", "3", "PatientStudyModule"); @@ -1197,6 +1266,7 @@ OFCondition DRTStructureSetIOD::write(DcmItem &dataset) { addElementToDataset(result, dataset, new DcmLongString(ClinicalTrialTimePointID), "1", "2", "ClinicalTrialStudyModule"); addElementToDataset(result, dataset, new DcmShortText(ClinicalTrialTimePointDescription), "1", "3", "ClinicalTrialStudyModule"); + if (result.good()) result = ClinicalTrialTimePointTypeCodeSequence.write(dataset, "1-n" ,"3", "ClinicalTrialStudyModule"); addElementToDataset(result, dataset, new DcmFloatingPointDouble(LongitudinalTemporalOffsetFromEvent), "1", "3", "ClinicalTrialStudyModule"); addElementToDataset(result, dataset, new DcmCodeString(LongitudinalTemporalEventType), "1", "1C", "ClinicalTrialStudyModule"); if (result.good()) result = ConsentForClinicalTrialUseSequence.write(dataset, "1-n" ,"3", "ClinicalTrialStudyModule"); @@ -1222,6 +1292,7 @@ OFCondition DRTStructureSetIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmLongString(PerformedProcedureStepDescription), "1", "3", "RTSeriesModule"); if (result.good()) result = PerformedProtocolCodeSequence.write(dataset, "1-n" ,"3", "RTSeriesModule"); addElementToDataset(result, dataset, new DcmShortText(CommentsOnThePerformedProcedureStep), "1", "3", "RTSeriesModule"); + addElementToDataset(result, dataset, new DcmUniqueIdentifier(TreatmentSessionUID), "1", "3", "RTSeriesModule"); // --- ClinicalTrialSeriesModule (U) --- if (isClinicalTrialSeriesModulePresent(OFFalse /*complete*/)) @@ -1237,11 +1308,14 @@ OFCondition DRTStructureSetIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmShortText(InstitutionAddress), "1", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmShortString(StationName), "1", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmLongString(InstitutionalDepartmentName), "1", "3", "GeneralEquipmentModule"); + if (result.good()) result = InstitutionalDepartmentTypeCodeSequence.write(dataset, "1-n" ,"3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmLongString(ManufacturerModelName), "1", "3", "GeneralEquipmentModule"); + addElementToDataset(result, dataset, new DcmUniqueIdentifier(ManufacturerDeviceClassUID), "1-n", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmLongString(DeviceSerialNumber), "1", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmLongString(SoftwareVersions), "1-n", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmLongString(GantryID), "1", "3", "GeneralEquipmentModule"); if (result.good()) result = UDISequence.write(dataset, "1-n" ,"3", "GeneralEquipmentModule"); + addElementToDataset(result, dataset, new DcmUniqueIdentifier(DeviceUID), "1", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmDecimalString(SpatialResolution), "1", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmDate(DateOfLastCalibration), "1-n", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmTime(TimeOfLastCalibration), "1-n", "3", "GeneralEquipmentModule"); @@ -1321,6 +1395,10 @@ OFCondition DRTStructureSetIOD::write(DcmItem &dataset) if (result.good()) result = ConversionSourceAttributesSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule"); addElementToDataset(result, dataset, new DcmCodeString(ContentQualification), "1", "3", "SOPCommonModule"); if (result.good()) result = PrivateDataElementCharacteristicsSequence.write(dataset, "1-n" ,"3", "SOPCommonModule"); + addElementToDataset(result, dataset, new DcmCodeString(InstanceOriginStatus), "1", "3", "SOPCommonModule"); + addElementToDataset(result, dataset, new DcmLongText(BarcodeValue), "1", "3", "SOPCommonModule"); + if (result.good()) result = ReferencedDefinedProtocolSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule"); + if (result.good()) result = ReferencedPerformedProtocolSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule"); // --- CommonInstanceReferenceModule (U) --- if (isCommonInstanceReferenceModulePresent(OFFalse /*complete*/)) @@ -1378,6 +1456,8 @@ OFBool DRTStructureSetIOD::isPatientStudyModulePresent(const OFBool /*complete*/ !AdditionalPatientHistory.isEmpty() || !AdmissionID.isEmpty() || !IssuerOfAdmissionIDSequence.isEmpty() || + !ReasonForVisit.isEmpty() || + !ReasonForVisitCodeSequence.isEmpty() || !ServiceEpisodeID.isEmpty() || !IssuerOfServiceEpisodeIDSequence.isEmpty() || !ServiceEpisodeDescription.isEmpty() || @@ -1390,6 +1470,7 @@ OFBool DRTStructureSetIOD::isClinicalTrialStudyModulePresent(const OFBool /*comp /* check whether at least one attribute is present */ return !ClinicalTrialTimePointID.isEmpty() || !ClinicalTrialTimePointDescription.isEmpty() || + !ClinicalTrialTimePointTypeCodeSequence.isEmpty() || !LongitudinalTemporalOffsetFromEvent.isEmpty() || !LongitudinalTemporalEventType.isEmpty() || !ConsentForClinicalTrialUseSequence.isEmpty(); @@ -1497,6 +1578,12 @@ OFCondition DRTStructureSetIOD::getAuthorizationEquipmentCertificationNumber(OFS } +OFCondition DRTStructureSetIOD::getBarcodeValue(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(BarcodeValue, value, pos); +} + + OFCondition DRTStructureSetIOD::getClinicalTrialCoordinatingCenterName(OFString &value, const signed long pos) const { return getStringValueFromElement(ClinicalTrialCoordinatingCenterName, value, pos); @@ -1623,6 +1710,12 @@ OFCondition DRTStructureSetIOD::getDeviceSerialNumber(OFString &value, const sig } +OFCondition DRTStructureSetIOD::getDeviceUID(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(DeviceUID, value, pos); +} + + OFCondition DRTStructureSetIOD::getEthnicGroup(OFString &value, const signed long pos) const { return getStringValueFromElement(EthnicGroup, value, pos); @@ -1677,6 +1770,12 @@ OFCondition DRTStructureSetIOD::getInstanceNumber(Sint32 &value, const unsigned } +OFCondition DRTStructureSetIOD::getInstanceOriginStatus(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(InstanceOriginStatus, value, pos); +} + + OFCondition DRTStructureSetIOD::getInstitutionAddress(OFString &value, const signed long pos) const { return getStringValueFromElement(InstitutionAddress, value, pos); @@ -1731,6 +1830,12 @@ OFCondition DRTStructureSetIOD::getManufacturer(OFString &value, const signed lo } +OFCondition DRTStructureSetIOD::getManufacturerDeviceClassUID(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(ManufacturerDeviceClassUID, value, pos); +} + + OFCondition DRTStructureSetIOD::getManufacturerModelName(OFString &value, const signed long pos) const { return getStringValueFromElement(ManufacturerModelName, value, pos); @@ -2001,6 +2106,12 @@ OFCondition DRTStructureSetIOD::getQueryRetrieveView(OFString &value, const sign } +OFCondition DRTStructureSetIOD::getReasonForVisit(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(ReasonForVisit, value, pos); +} + + OFCondition DRTStructureSetIOD::getReferringPhysicianName(OFString &value, const signed long pos) const { return getStringValueFromElement(ReferringPhysicianName, value, pos); @@ -2013,6 +2124,12 @@ OFCondition DRTStructureSetIOD::getRelatedGeneralSOPClassUID(OFString &value, co } +OFCondition DRTStructureSetIOD::getRequestingService(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(RequestingService, value, pos); +} + + OFCondition DRTStructureSetIOD::getResponsibleOrganization(OFString &value, const signed long pos) const { return getStringValueFromElement(ResponsibleOrganization, value, pos); @@ -2253,6 +2370,18 @@ OFCondition DRTStructureSetIOD::getTimezoneOffsetFromUTC(OFString &value, const } +OFCondition DRTStructureSetIOD::getTreatmentSessionUID(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(TreatmentSessionUID, value, pos); +} + + +OFCondition DRTStructureSetIOD::getTypeOfPatientID(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(TypeOfPatientID, value, pos); +} + + OFCondition DRTStructureSetIOD::setAccessionNumber(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; @@ -2316,6 +2445,15 @@ OFCondition DRTStructureSetIOD::setAuthorizationEquipmentCertificationNumber(con } +OFCondition DRTStructureSetIOD::setBarcodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmLongText::checkStringValue(value) : EC_Normal; + if (result.good()) + result = BarcodeValue.putOFStringArray(value); + return result; +} + + OFCondition DRTStructureSetIOD::setClinicalTrialCoordinatingCenterName(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; @@ -2505,6 +2643,15 @@ OFCondition DRTStructureSetIOD::setDeviceSerialNumber(const OFString &value, con } +OFCondition DRTStructureSetIOD::setDeviceUID(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = DeviceUID.putOFStringArray(value); + return result; +} + + OFCondition DRTStructureSetIOD::setEthnicGroup(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; @@ -2577,6 +2724,15 @@ OFCondition DRTStructureSetIOD::setInstanceNumber(const OFString &value, const O } +OFCondition DRTStructureSetIOD::setInstanceOriginStatus(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = InstanceOriginStatus.putOFStringArray(value); + return result; +} + + OFCondition DRTStructureSetIOD::setInstitutionAddress(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal; @@ -2655,6 +2811,15 @@ OFCondition DRTStructureSetIOD::setManufacturer(const OFString &value, const OFB } +OFCondition DRTStructureSetIOD::setManufacturerDeviceClassUID(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1-n") : EC_Normal; + if (result.good()) + result = ManufacturerDeviceClassUID.putOFStringArray(value); + return result; +} + + OFCondition DRTStructureSetIOD::setManufacturerModelName(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; @@ -3009,6 +3174,15 @@ OFCondition DRTStructureSetIOD::setQueryRetrieveView(const OFString &value, cons } +OFCondition DRTStructureSetIOD::setReasonForVisit(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmUnlimitedText::checkStringValue(value) : EC_Normal; + if (result.good()) + result = ReasonForVisit.putOFStringArray(value); + return result; +} + + OFCondition DRTStructureSetIOD::setReferringPhysicianName(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmPersonName::checkStringValue(value, "1") : EC_Normal; @@ -3027,6 +3201,15 @@ OFCondition DRTStructureSetIOD::setRelatedGeneralSOPClassUID(const OFString &val } +OFCondition DRTStructureSetIOD::setRequestingService(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = RequestingService.putOFStringArray(value); + return result; +} + + OFCondition DRTStructureSetIOD::setResponsibleOrganization(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; @@ -3369,4 +3552,22 @@ OFCondition DRTStructureSetIOD::setTimezoneOffsetFromUTC(const OFString &value, } +OFCondition DRTStructureSetIOD::setTreatmentSessionUID(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = TreatmentSessionUID.putOFStringArray(value); + return result; +} + + +OFCondition DRTStructureSetIOD::setTypeOfPatientID(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = TypeOfPatientID.putOFStringArray(value); + return result; +} + + // end of source file diff --git a/dcmrt/libsrc/drttms0.cc b/dcmrt/libsrc/drttms0.cc deleted file mode 100644 index 3027753e..00000000 --- a/dcmrt/libsrc/drttms0.cc +++ /dev/null @@ -1,718 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Source file for class DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/dcmrt/seq/drttms0.h" - - -// --- item class --- - -DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::Item(const OFBool emptyDefaultItem) - : EmptyDefaultItem(emptyDefaultItem), - DeviceSerialNumber(DCM_DeviceSerialNumber), - InstitutionAddress(DCM_InstitutionAddress), - InstitutionName(DCM_InstitutionName), - InstitutionalDepartmentName(DCM_InstitutionalDepartmentName), - Manufacturer(DCM_Manufacturer), - ManufacturerModelName(DCM_ManufacturerModelName), - TreatmentMachineName(DCM_TreatmentMachineName) -{ -} - - -DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::Item(const Item ©) - : EmptyDefaultItem(copy.EmptyDefaultItem), - DeviceSerialNumber(copy.DeviceSerialNumber), - InstitutionAddress(copy.InstitutionAddress), - InstitutionName(copy.InstitutionName), - InstitutionalDepartmentName(copy.InstitutionalDepartmentName), - Manufacturer(copy.Manufacturer), - ManufacturerModelName(copy.ManufacturerModelName), - TreatmentMachineName(copy.TreatmentMachineName) -{ -} - - -DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::~Item() -{ -} - - -DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::operator=(const Item ©) -{ - if (this != ©) - { - EmptyDefaultItem = copy.EmptyDefaultItem; - DeviceSerialNumber = copy.DeviceSerialNumber; - InstitutionAddress = copy.InstitutionAddress; - InstitutionName = copy.InstitutionName; - InstitutionalDepartmentName = copy.InstitutionalDepartmentName; - Manufacturer = copy.Manufacturer; - ManufacturerModelName = copy.ManufacturerModelName; - TreatmentMachineName = copy.TreatmentMachineName; - } - return *this; -} - - -void DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::clear() -{ - if (!EmptyDefaultItem) - { - /* clear all DICOM attributes */ - TreatmentMachineName.clear(); - Manufacturer.clear(); - InstitutionName.clear(); - InstitutionAddress.clear(); - InstitutionalDepartmentName.clear(); - ManufacturerModelName.clear(); - DeviceSerialNumber.clear(); - } -} - - -OFBool DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::isEmpty() -{ - return TreatmentMachineName.isEmpty() && - Manufacturer.isEmpty() && - InstitutionName.isEmpty() && - InstitutionAddress.isEmpty() && - InstitutionalDepartmentName.isEmpty() && - ManufacturerModelName.isEmpty() && - DeviceSerialNumber.isEmpty(); -} - - -OFBool DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::isValid() const -{ - return !EmptyDefaultItem; -} - - -OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::read(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - /* re-initialize object */ - clear(); - getAndCheckElementFromDataset(item, TreatmentMachineName, "1", "2", "TreatmentMachineSequence"); - getAndCheckElementFromDataset(item, Manufacturer, "1", "2", "TreatmentMachineSequence"); - getAndCheckElementFromDataset(item, InstitutionName, "1", "2", "TreatmentMachineSequence"); - getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "TreatmentMachineSequence"); - getAndCheckElementFromDataset(item, InstitutionalDepartmentName, "1", "3", "TreatmentMachineSequence"); - getAndCheckElementFromDataset(item, ManufacturerModelName, "1", "2", "TreatmentMachineSequence"); - getAndCheckElementFromDataset(item, DeviceSerialNumber, "1", "2", "TreatmentMachineSequence"); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::write(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = EC_Normal; - addElementToDataset(result, item, new DcmShortString(TreatmentMachineName), "1", "2", "TreatmentMachineSequence"); - addElementToDataset(result, item, new DcmLongString(Manufacturer), "1", "2", "TreatmentMachineSequence"); - addElementToDataset(result, item, new DcmLongString(InstitutionName), "1", "2", "TreatmentMachineSequence"); - addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "TreatmentMachineSequence"); - addElementToDataset(result, item, new DcmLongString(InstitutionalDepartmentName), "1", "3", "TreatmentMachineSequence"); - addElementToDataset(result, item, new DcmLongString(ManufacturerModelName), "1", "2", "TreatmentMachineSequence"); - addElementToDataset(result, item, new DcmLongString(DeviceSerialNumber), "1", "2", "TreatmentMachineSequence"); - } - return result; -} - - -OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::getDeviceSerialNumber(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(DeviceSerialNumber, value, pos); -} - - -OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::getInstitutionAddress(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(InstitutionAddress, value, pos); -} - - -OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::getInstitutionName(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(InstitutionName, value, pos); -} - - -OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::getInstitutionalDepartmentName(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(InstitutionalDepartmentName, value, pos); -} - - -OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::getManufacturer(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(Manufacturer, value, pos); -} - - -OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::getManufacturerModelName(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ManufacturerModelName, value, pos); -} - - -OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::getTreatmentMachineName(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(TreatmentMachineName, value, pos); -} - - -OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::setDeviceSerialNumber(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = DeviceSerialNumber.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::setInstitutionAddress(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal; - if (result.good()) - result = InstitutionAddress.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::setInstitutionName(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = InstitutionName.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::setInstitutionalDepartmentName(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = InstitutionalDepartmentName.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::setManufacturer(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = Manufacturer.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::setManufacturerModelName(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ManufacturerModelName.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::setTreatmentMachineName(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = TreatmentMachineName.putOFStringArray(value); - } - return result; -} - - -// --- sequence class --- - -DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule(const OFBool emptyDefaultSequence) - : EmptyDefaultSequence(emptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - CurrentItem = SequenceOfItems.end(); -} - - -DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule(const DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule ©) - : EmptyDefaultSequence(copy.EmptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); -} - - -DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::operator=(const DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule ©) -{ - if (this != ©) - { - clear(); - EmptyDefaultSequence = copy.EmptyDefaultSequence; - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); - } - return *this; -} - - -DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::~DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule() -{ - clear(); -} - - -void DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::clear() -{ - if (!EmptyDefaultSequence) - { - CurrentItem = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* delete all items and free memory */ - while (CurrentItem != last) - { - delete (*CurrentItem); - CurrentItem = SequenceOfItems.erase(CurrentItem); - } - /* make sure that the list is empty */ - SequenceOfItems.clear(); - CurrentItem = SequenceOfItems.end(); - } -} - - -OFBool DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::isEmpty() -{ - return SequenceOfItems.empty(); -} - - -OFBool DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::isValid() const -{ - return !EmptyDefaultSequence; -} - - -size_t DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getNumberOfItems() const -{ - return SequenceOfItems.size(); -} - - -OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::gotoFirstItem() -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - CurrentItem = SequenceOfItems.begin(); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::gotoNextItem() -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - ++CurrentItem; - result = EC_Normal; - } - return result; -} - - -OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::gotoItem(const size_t num) -{ - return gotoItem(num, CurrentItem); -} - - -OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getCurrentItem(Item *&item) const -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - item = *CurrentItem; - result = EC_Normal; - } - return result; -} - - -DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getCurrentItem() -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -const DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getCurrentItem() const -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getItem(const size_t num, Item *&item) -{ - OFListIterator(Item *) iterator; - OFCondition result = gotoItem(num, iterator); - if (result.good()) - item = *iterator; - return result; -} - - -DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getItem(const size_t num) -{ - OFListIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -const DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getItem(const size_t num) const -{ - OFListConstIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::operator[](const size_t num) -{ - return getItem(num); -} - - -const DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::operator[](const size_t num) const -{ - return getItem(num); -} - - -OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::addItem(Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.push_back(item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } - return result; -} - - -OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::insertItem(const size_t pos, Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - result = gotoItem(pos, iterator); - if (result.good()) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.insert(iterator, 1, item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } else - result = addItem(item); - } - return result; -} - - -OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::removeItem(const size_t pos) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - if (gotoItem(pos, iterator).good()) - { - delete *iterator; - iterator = SequenceOfItems.erase(iterator); - result = EC_Normal; - } else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - /* re-initialize object */ - clear(); - /* retrieve sequence element from dataset */ - DcmSequenceOfItems *sequence; - result = dataset.findAndGetSequence(DCM_TreatmentMachineSequence, sequence); - if (sequence != NULL) - { - if (checkElementValue(*sequence, card, type, result, moduleName)) - { - DcmStack stack; - OFBool first = OFTrue; - /* iterate over all sequence items */ - while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) - { - DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); - if (ditem != NULL) - { - Item *item = new Item(); - if (item != NULL) - { - result = item->read(*ditem); - if (result.good()) - { - /* append new item to the end of the list */ - SequenceOfItems.push_back(item); - first = OFFalse; - } - } else - result = EC_MemoryExhausted; - } else - result = EC_CorruptedData; - } - } - } else { - DcmSequenceOfItems element(DCM_TreatmentMachineSequence); - checkElementValue(element, card, type, result, moduleName); - } - } - return result; -} - - -OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - result = EC_MemoryExhausted; - DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_TreatmentMachineSequence); - if (sequence != NULL) - { - result = EC_Normal; - /* an empty optional sequence is not written */ - if ((type == "2") || !SequenceOfItems.empty()) - { - OFListIterator(Item *) iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* iterate over all sequence items */ - while (result.good() && (iterator != last)) - { - DcmItem *item = new DcmItem(); - if (item != NULL) - { - /* append new item to the end of the sequence */ - result = sequence->append(item); - if (result.good()) - { - result = (*iterator)->write(*item); - ++iterator; - } else - delete item; - } else - result = EC_MemoryExhausted; - } - if (result.good()) - { - /* insert sequence element into the dataset */ - result = dataset.insert(sequence, OFTrue /*replaceOld*/); - } - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - if (result.good()) - { - /* forget reference to sequence object (avoid deletion below) */ - sequence = NULL; - } - } - else if (type == "1") - { - /* empty type 1 sequence not allowed */ - result = RT_EC_InvalidValue; - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - } - /* delete sequence (if not inserted into the dataset) */ - delete sequence; - } - } - return result; -} - - -// end of source file diff --git a/dcmrt/libsrc/drttms1.cc b/dcmrt/libsrc/drttms1.cc new file mode 100644 index 00000000..c74c180b --- /dev/null +++ b/dcmrt/libsrc/drttms1.cc @@ -0,0 +1,727 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drttms1.h" + + +// --- item class --- + +DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + DeviceSerialNumber(DCM_DeviceSerialNumber), + InstitutionAddress(DCM_InstitutionAddress), + InstitutionName(DCM_InstitutionName), + InstitutionalDepartmentName(DCM_InstitutionalDepartmentName), + InstitutionalDepartmentTypeCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), + Manufacturer(DCM_Manufacturer), + ManufacturerModelName(DCM_ManufacturerModelName), + TreatmentMachineName(DCM_TreatmentMachineName) +{ +} + + +DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + DeviceSerialNumber(copy.DeviceSerialNumber), + InstitutionAddress(copy.InstitutionAddress), + InstitutionName(copy.InstitutionName), + InstitutionalDepartmentName(copy.InstitutionalDepartmentName), + InstitutionalDepartmentTypeCodeSequence(copy.InstitutionalDepartmentTypeCodeSequence), + Manufacturer(copy.Manufacturer), + ManufacturerModelName(copy.ManufacturerModelName), + TreatmentMachineName(copy.TreatmentMachineName) +{ +} + + +DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::~Item() +{ +} + + +DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + DeviceSerialNumber = copy.DeviceSerialNumber; + InstitutionAddress = copy.InstitutionAddress; + InstitutionName = copy.InstitutionName; + InstitutionalDepartmentName = copy.InstitutionalDepartmentName; + InstitutionalDepartmentTypeCodeSequence = copy.InstitutionalDepartmentTypeCodeSequence; + Manufacturer = copy.Manufacturer; + ManufacturerModelName = copy.ManufacturerModelName; + TreatmentMachineName = copy.TreatmentMachineName; + } + return *this; +} + + +void DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + TreatmentMachineName.clear(); + Manufacturer.clear(); + InstitutionName.clear(); + InstitutionAddress.clear(); + InstitutionalDepartmentName.clear(); + InstitutionalDepartmentTypeCodeSequence.clear(); + ManufacturerModelName.clear(); + DeviceSerialNumber.clear(); + } +} + + +OFBool DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::isEmpty() +{ + return TreatmentMachineName.isEmpty() && + Manufacturer.isEmpty() && + InstitutionName.isEmpty() && + InstitutionAddress.isEmpty() && + InstitutionalDepartmentName.isEmpty() && + InstitutionalDepartmentTypeCodeSequence.isEmpty() && + ManufacturerModelName.isEmpty() && + DeviceSerialNumber.isEmpty(); +} + + +OFBool DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, TreatmentMachineName, "1", "2", "TreatmentMachineSequence"); + getAndCheckElementFromDataset(item, Manufacturer, "1", "3", "TreatmentMachineSequence"); + getAndCheckElementFromDataset(item, InstitutionName, "1", "3", "TreatmentMachineSequence"); + getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "TreatmentMachineSequence"); + getAndCheckElementFromDataset(item, InstitutionalDepartmentName, "1", "3", "TreatmentMachineSequence"); + InstitutionalDepartmentTypeCodeSequence.read(item, "1-n", "3", "TreatmentMachineSequence"); + getAndCheckElementFromDataset(item, ManufacturerModelName, "1", "3", "TreatmentMachineSequence"); + getAndCheckElementFromDataset(item, DeviceSerialNumber, "1", "3", "TreatmentMachineSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmShortString(TreatmentMachineName), "1", "2", "TreatmentMachineSequence"); + addElementToDataset(result, item, new DcmLongString(Manufacturer), "1", "3", "TreatmentMachineSequence"); + addElementToDataset(result, item, new DcmLongString(InstitutionName), "1", "3", "TreatmentMachineSequence"); + addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "TreatmentMachineSequence"); + addElementToDataset(result, item, new DcmLongString(InstitutionalDepartmentName), "1", "3", "TreatmentMachineSequence"); + if (result.good()) result = InstitutionalDepartmentTypeCodeSequence.write(item, "1-n", "3", "TreatmentMachineSequence"); + addElementToDataset(result, item, new DcmLongString(ManufacturerModelName), "1", "3", "TreatmentMachineSequence"); + addElementToDataset(result, item, new DcmLongString(DeviceSerialNumber), "1", "3", "TreatmentMachineSequence"); + } + return result; +} + + +OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::getDeviceSerialNumber(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(DeviceSerialNumber, value, pos); +} + + +OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::getInstitutionAddress(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(InstitutionAddress, value, pos); +} + + +OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::getInstitutionName(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(InstitutionName, value, pos); +} + + +OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::getInstitutionalDepartmentName(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(InstitutionalDepartmentName, value, pos); +} + + +OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::getManufacturer(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(Manufacturer, value, pos); +} + + +OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::getManufacturerModelName(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ManufacturerModelName, value, pos); +} + + +OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::getTreatmentMachineName(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(TreatmentMachineName, value, pos); +} + + +OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::setDeviceSerialNumber(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = DeviceSerialNumber.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::setInstitutionAddress(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal; + if (result.good()) + result = InstitutionAddress.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::setInstitutionName(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = InstitutionName.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::setInstitutionalDepartmentName(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = InstitutionalDepartmentName.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::setManufacturer(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = Manufacturer.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::setManufacturerModelName(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ManufacturerModelName.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::setTreatmentMachineName(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = TreatmentMachineName.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule(const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::operator=(const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::~DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule() +{ + clear(); +} + + +void DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_TreatmentMachineSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_TreatmentMachineSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_TreatmentMachineSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drttms2.cc b/dcmrt/libsrc/drttms2.cc new file mode 100644 index 00000000..dc265e99 --- /dev/null +++ b/dcmrt/libsrc/drttms2.cc @@ -0,0 +1,727 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drttms2.h" + + +// --- item class --- + +DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + DeviceSerialNumber(DCM_DeviceSerialNumber), + InstitutionAddress(DCM_InstitutionAddress), + InstitutionName(DCM_InstitutionName), + InstitutionalDepartmentName(DCM_InstitutionalDepartmentName), + InstitutionalDepartmentTypeCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), + Manufacturer(DCM_Manufacturer), + ManufacturerModelName(DCM_ManufacturerModelName), + TreatmentMachineName(DCM_TreatmentMachineName) +{ +} + + +DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + DeviceSerialNumber(copy.DeviceSerialNumber), + InstitutionAddress(copy.InstitutionAddress), + InstitutionName(copy.InstitutionName), + InstitutionalDepartmentName(copy.InstitutionalDepartmentName), + InstitutionalDepartmentTypeCodeSequence(copy.InstitutionalDepartmentTypeCodeSequence), + Manufacturer(copy.Manufacturer), + ManufacturerModelName(copy.ManufacturerModelName), + TreatmentMachineName(copy.TreatmentMachineName) +{ +} + + +DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::~Item() +{ +} + + +DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + DeviceSerialNumber = copy.DeviceSerialNumber; + InstitutionAddress = copy.InstitutionAddress; + InstitutionName = copy.InstitutionName; + InstitutionalDepartmentName = copy.InstitutionalDepartmentName; + InstitutionalDepartmentTypeCodeSequence = copy.InstitutionalDepartmentTypeCodeSequence; + Manufacturer = copy.Manufacturer; + ManufacturerModelName = copy.ManufacturerModelName; + TreatmentMachineName = copy.TreatmentMachineName; + } + return *this; +} + + +void DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + TreatmentMachineName.clear(); + Manufacturer.clear(); + InstitutionName.clear(); + InstitutionAddress.clear(); + InstitutionalDepartmentName.clear(); + InstitutionalDepartmentTypeCodeSequence.clear(); + ManufacturerModelName.clear(); + DeviceSerialNumber.clear(); + } +} + + +OFBool DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::isEmpty() +{ + return TreatmentMachineName.isEmpty() && + Manufacturer.isEmpty() && + InstitutionName.isEmpty() && + InstitutionAddress.isEmpty() && + InstitutionalDepartmentName.isEmpty() && + InstitutionalDepartmentTypeCodeSequence.isEmpty() && + ManufacturerModelName.isEmpty() && + DeviceSerialNumber.isEmpty(); +} + + +OFBool DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, TreatmentMachineName, "1", "2", "TreatmentMachineSequence"); + getAndCheckElementFromDataset(item, Manufacturer, "1", "2", "TreatmentMachineSequence"); + getAndCheckElementFromDataset(item, InstitutionName, "1", "2", "TreatmentMachineSequence"); + getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "TreatmentMachineSequence"); + getAndCheckElementFromDataset(item, InstitutionalDepartmentName, "1", "3", "TreatmentMachineSequence"); + InstitutionalDepartmentTypeCodeSequence.read(item, "1-n", "3", "TreatmentMachineSequence"); + getAndCheckElementFromDataset(item, ManufacturerModelName, "1", "2", "TreatmentMachineSequence"); + getAndCheckElementFromDataset(item, DeviceSerialNumber, "1", "2", "TreatmentMachineSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmShortString(TreatmentMachineName), "1", "2", "TreatmentMachineSequence"); + addElementToDataset(result, item, new DcmLongString(Manufacturer), "1", "2", "TreatmentMachineSequence"); + addElementToDataset(result, item, new DcmLongString(InstitutionName), "1", "2", "TreatmentMachineSequence"); + addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "TreatmentMachineSequence"); + addElementToDataset(result, item, new DcmLongString(InstitutionalDepartmentName), "1", "3", "TreatmentMachineSequence"); + if (result.good()) result = InstitutionalDepartmentTypeCodeSequence.write(item, "1-n", "3", "TreatmentMachineSequence"); + addElementToDataset(result, item, new DcmLongString(ManufacturerModelName), "1", "2", "TreatmentMachineSequence"); + addElementToDataset(result, item, new DcmLongString(DeviceSerialNumber), "1", "2", "TreatmentMachineSequence"); + } + return result; +} + + +OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::getDeviceSerialNumber(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(DeviceSerialNumber, value, pos); +} + + +OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::getInstitutionAddress(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(InstitutionAddress, value, pos); +} + + +OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::getInstitutionName(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(InstitutionName, value, pos); +} + + +OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::getInstitutionalDepartmentName(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(InstitutionalDepartmentName, value, pos); +} + + +OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::getManufacturer(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(Manufacturer, value, pos); +} + + +OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::getManufacturerModelName(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ManufacturerModelName, value, pos); +} + + +OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::getTreatmentMachineName(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(TreatmentMachineName, value, pos); +} + + +OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::setDeviceSerialNumber(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = DeviceSerialNumber.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::setInstitutionAddress(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal; + if (result.good()) + result = InstitutionAddress.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::setInstitutionName(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = InstitutionName.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::setInstitutionalDepartmentName(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = InstitutionalDepartmentName.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::setManufacturer(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = Manufacturer.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::setManufacturerModelName(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ManufacturerModelName.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::setTreatmentMachineName(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = TreatmentMachineName.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule(const DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::operator=(const DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::~DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule() +{ + clear(); +} + + +void DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_TreatmentMachineSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_TreatmentMachineSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_TreatmentMachineSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drttms9.cc b/dcmrt/libsrc/drttms9.cc deleted file mode 100644 index 1d7aa4f7..00000000 --- a/dcmrt/libsrc/drttms9.cc +++ /dev/null @@ -1,718 +0,0 @@ -/* - * - * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany - * All rights reserved. See COPYRIGHT file for details. - * - * Source file for class DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule - * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 - * - */ - - -#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first - -#include "dcmtk/dcmrt/seq/drttms9.h" - - -// --- item class --- - -DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::Item(const OFBool emptyDefaultItem) - : EmptyDefaultItem(emptyDefaultItem), - DeviceSerialNumber(DCM_DeviceSerialNumber), - InstitutionAddress(DCM_InstitutionAddress), - InstitutionName(DCM_InstitutionName), - InstitutionalDepartmentName(DCM_InstitutionalDepartmentName), - Manufacturer(DCM_Manufacturer), - ManufacturerModelName(DCM_ManufacturerModelName), - TreatmentMachineName(DCM_TreatmentMachineName) -{ -} - - -DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::Item(const Item ©) - : EmptyDefaultItem(copy.EmptyDefaultItem), - DeviceSerialNumber(copy.DeviceSerialNumber), - InstitutionAddress(copy.InstitutionAddress), - InstitutionName(copy.InstitutionName), - InstitutionalDepartmentName(copy.InstitutionalDepartmentName), - Manufacturer(copy.Manufacturer), - ManufacturerModelName(copy.ManufacturerModelName), - TreatmentMachineName(copy.TreatmentMachineName) -{ -} - - -DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::~Item() -{ -} - - -DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::operator=(const Item ©) -{ - if (this != ©) - { - EmptyDefaultItem = copy.EmptyDefaultItem; - DeviceSerialNumber = copy.DeviceSerialNumber; - InstitutionAddress = copy.InstitutionAddress; - InstitutionName = copy.InstitutionName; - InstitutionalDepartmentName = copy.InstitutionalDepartmentName; - Manufacturer = copy.Manufacturer; - ManufacturerModelName = copy.ManufacturerModelName; - TreatmentMachineName = copy.TreatmentMachineName; - } - return *this; -} - - -void DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::clear() -{ - if (!EmptyDefaultItem) - { - /* clear all DICOM attributes */ - TreatmentMachineName.clear(); - Manufacturer.clear(); - InstitutionName.clear(); - InstitutionAddress.clear(); - InstitutionalDepartmentName.clear(); - ManufacturerModelName.clear(); - DeviceSerialNumber.clear(); - } -} - - -OFBool DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::isEmpty() -{ - return TreatmentMachineName.isEmpty() && - Manufacturer.isEmpty() && - InstitutionName.isEmpty() && - InstitutionAddress.isEmpty() && - InstitutionalDepartmentName.isEmpty() && - ManufacturerModelName.isEmpty() && - DeviceSerialNumber.isEmpty(); -} - - -OFBool DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::isValid() const -{ - return !EmptyDefaultItem; -} - - -OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::read(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - /* re-initialize object */ - clear(); - getAndCheckElementFromDataset(item, TreatmentMachineName, "1", "2", "TreatmentMachineSequence"); - getAndCheckElementFromDataset(item, Manufacturer, "1", "3", "TreatmentMachineSequence"); - getAndCheckElementFromDataset(item, InstitutionName, "1", "3", "TreatmentMachineSequence"); - getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "TreatmentMachineSequence"); - getAndCheckElementFromDataset(item, InstitutionalDepartmentName, "1", "3", "TreatmentMachineSequence"); - getAndCheckElementFromDataset(item, ManufacturerModelName, "1", "3", "TreatmentMachineSequence"); - getAndCheckElementFromDataset(item, DeviceSerialNumber, "1", "3", "TreatmentMachineSequence"); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::write(DcmItem &item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = EC_Normal; - addElementToDataset(result, item, new DcmShortString(TreatmentMachineName), "1", "2", "TreatmentMachineSequence"); - addElementToDataset(result, item, new DcmLongString(Manufacturer), "1", "3", "TreatmentMachineSequence"); - addElementToDataset(result, item, new DcmLongString(InstitutionName), "1", "3", "TreatmentMachineSequence"); - addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "TreatmentMachineSequence"); - addElementToDataset(result, item, new DcmLongString(InstitutionalDepartmentName), "1", "3", "TreatmentMachineSequence"); - addElementToDataset(result, item, new DcmLongString(ManufacturerModelName), "1", "3", "TreatmentMachineSequence"); - addElementToDataset(result, item, new DcmLongString(DeviceSerialNumber), "1", "3", "TreatmentMachineSequence"); - } - return result; -} - - -OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::getDeviceSerialNumber(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(DeviceSerialNumber, value, pos); -} - - -OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::getInstitutionAddress(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(InstitutionAddress, value, pos); -} - - -OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::getInstitutionName(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(InstitutionName, value, pos); -} - - -OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::getInstitutionalDepartmentName(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(InstitutionalDepartmentName, value, pos); -} - - -OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::getManufacturer(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(Manufacturer, value, pos); -} - - -OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::getManufacturerModelName(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(ManufacturerModelName, value, pos); -} - - -OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::getTreatmentMachineName(OFString &value, const signed long pos) const -{ - if (EmptyDefaultItem) - return EC_IllegalCall; - else - return getStringValueFromElement(TreatmentMachineName, value, pos); -} - - -OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::setDeviceSerialNumber(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = DeviceSerialNumber.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::setInstitutionAddress(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal; - if (result.good()) - result = InstitutionAddress.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::setInstitutionName(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = InstitutionName.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::setInstitutionalDepartmentName(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = InstitutionalDepartmentName.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::setManufacturer(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = Manufacturer.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::setManufacturerModelName(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = ManufacturerModelName.putOFStringArray(value); - } - return result; -} - - -OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::setTreatmentMachineName(const OFString &value, const OFBool check) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultItem) - { - result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; - if (result.good()) - result = TreatmentMachineName.putOFStringArray(value); - } - return result; -} - - -// --- sequence class --- - -DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule(const OFBool emptyDefaultSequence) - : EmptyDefaultSequence(emptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - CurrentItem = SequenceOfItems.end(); -} - - -DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule(const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule ©) - : EmptyDefaultSequence(copy.EmptyDefaultSequence), - SequenceOfItems(), - CurrentItem(), - EmptyItem(OFTrue /*emptyDefaultItem*/) -{ - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); -} - - -DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::operator=(const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule ©) -{ - if (this != ©) - { - clear(); - EmptyDefaultSequence = copy.EmptyDefaultSequence; - /* create a copy of the internal sequence of items */ - Item *item = NULL; - OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); - while (current != last) - { - item = new Item(**current); - if (item != NULL) - { - SequenceOfItems.push_back(item); - } else { - /* memory exhausted, there is nothing we can do about it */ - break; - } - ++current; - } - CurrentItem = SequenceOfItems.begin(); - } - return *this; -} - - -DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::~DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule() -{ - clear(); -} - - -void DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::clear() -{ - if (!EmptyDefaultSequence) - { - CurrentItem = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* delete all items and free memory */ - while (CurrentItem != last) - { - delete (*CurrentItem); - CurrentItem = SequenceOfItems.erase(CurrentItem); - } - /* make sure that the list is empty */ - SequenceOfItems.clear(); - CurrentItem = SequenceOfItems.end(); - } -} - - -OFBool DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::isEmpty() -{ - return SequenceOfItems.empty(); -} - - -OFBool DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::isValid() const -{ - return !EmptyDefaultSequence; -} - - -size_t DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getNumberOfItems() const -{ - return SequenceOfItems.size(); -} - - -OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::gotoFirstItem() -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - CurrentItem = SequenceOfItems.begin(); - result = EC_Normal; - } - return result; -} - - -OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::gotoNextItem() -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - ++CurrentItem; - result = EC_Normal; - } - return result; -} - - -OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator) -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const -{ - OFCondition result = EC_IllegalCall; - if (!SequenceOfItems.empty()) - { - size_t idx = num + 1; - iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - while ((--idx > 0) && (iterator != last)) - ++iterator; - /* specified list item found? */ - if ((idx == 0) && (iterator != last)) - result = EC_Normal; - else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::gotoItem(const size_t num) -{ - return gotoItem(num, CurrentItem); -} - - -OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getCurrentItem(Item *&item) const -{ - OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) - { - item = *CurrentItem; - result = EC_Normal; - } - return result; -} - - -DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getCurrentItem() -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getCurrentItem() const -{ - if (CurrentItem != SequenceOfItems.end()) - return **CurrentItem; - else - return EmptyItem; -} - - -OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getItem(const size_t num, Item *&item) -{ - OFListIterator(Item *) iterator; - OFCondition result = gotoItem(num, iterator); - if (result.good()) - item = *iterator; - return result; -} - - -DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getItem(const size_t num) -{ - OFListIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getItem(const size_t num) const -{ - OFListConstIterator(Item *) iterator; - if (gotoItem(num, iterator).good()) - return **iterator; - else - return EmptyItem; -} - - -DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::operator[](const size_t num) -{ - return getItem(num); -} - - -const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::operator[](const size_t num) const -{ - return getItem(num); -} - - -OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::addItem(Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.push_back(item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } - return result; -} - - -OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::insertItem(const size_t pos, Item *&item) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - result = gotoItem(pos, iterator); - if (result.good()) - { - item = new Item(); - if (item != NULL) - { - SequenceOfItems.insert(iterator, 1, item); - result = EC_Normal; - } else - result = EC_MemoryExhausted; - } else - result = addItem(item); - } - return result; -} - - -OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::removeItem(const size_t pos) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - OFListIterator(Item *) iterator; - if (gotoItem(pos, iterator).good()) - { - delete *iterator; - iterator = SequenceOfItems.erase(iterator); - result = EC_Normal; - } else - result = EC_IllegalParameter; - } - return result; -} - - -OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::read(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - /* re-initialize object */ - clear(); - /* retrieve sequence element from dataset */ - DcmSequenceOfItems *sequence; - result = dataset.findAndGetSequence(DCM_TreatmentMachineSequence, sequence); - if (sequence != NULL) - { - if (checkElementValue(*sequence, card, type, result, moduleName)) - { - DcmStack stack; - OFBool first = OFTrue; - /* iterate over all sequence items */ - while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) - { - DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); - if (ditem != NULL) - { - Item *item = new Item(); - if (item != NULL) - { - result = item->read(*ditem); - if (result.good()) - { - /* append new item to the end of the list */ - SequenceOfItems.push_back(item); - first = OFFalse; - } - } else - result = EC_MemoryExhausted; - } else - result = EC_CorruptedData; - } - } - } else { - DcmSequenceOfItems element(DCM_TreatmentMachineSequence); - checkElementValue(element, card, type, result, moduleName); - } - } - return result; -} - - -OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::write(DcmItem &dataset, - const OFString &card, - const OFString &type, - const char *moduleName) -{ - OFCondition result = EC_IllegalCall; - if (!EmptyDefaultSequence) - { - result = EC_MemoryExhausted; - DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_TreatmentMachineSequence); - if (sequence != NULL) - { - result = EC_Normal; - /* an empty optional sequence is not written */ - if ((type == "2") || !SequenceOfItems.empty()) - { - OFListIterator(Item *) iterator = SequenceOfItems.begin(); - const OFListConstIterator(Item *) last = SequenceOfItems.end(); - /* iterate over all sequence items */ - while (result.good() && (iterator != last)) - { - DcmItem *item = new DcmItem(); - if (item != NULL) - { - /* append new item to the end of the sequence */ - result = sequence->append(item); - if (result.good()) - { - result = (*iterator)->write(*item); - ++iterator; - } else - delete item; - } else - result = EC_MemoryExhausted; - } - if (result.good()) - { - /* insert sequence element into the dataset */ - result = dataset.insert(sequence, OFTrue /*replaceOld*/); - } - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - if (result.good()) - { - /* forget reference to sequence object (avoid deletion below) */ - sequence = NULL; - } - } - else if (type == "1") - { - /* empty type 1 sequence not allowed */ - result = RT_EC_InvalidValue; - if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) - checkElementValue(*sequence, card, type, result, moduleName); - } - /* delete sequence (if not inserted into the dataset) */ - delete sequence; - } - } - return result; -} - - -// end of source file diff --git a/dcmrt/libsrc/drttrccs.cc b/dcmrt/libsrc/drttrccs.cc new file mode 100644 index 00000000..0c45b903 --- /dev/null +++ b/dcmrt/libsrc/drttrccs.cc @@ -0,0 +1,959 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTTherapeuticRoleCategoryCodeSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drttrccs.h" + + +// --- item class --- + +DRTTherapeuticRoleCategoryCodeSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + CodeMeaning(DCM_CodeMeaning), + CodeValue(DCM_CodeValue), + CodingSchemeDesignator(DCM_CodingSchemeDesignator), + CodingSchemeVersion(DCM_CodingSchemeVersion), + ContextGroupExtensionCreatorUID(DCM_ContextGroupExtensionCreatorUID), + ContextGroupExtensionFlag(DCM_ContextGroupExtensionFlag), + ContextGroupLocalVersion(DCM_ContextGroupLocalVersion), + ContextGroupVersion(DCM_ContextGroupVersion), + ContextIdentifier(DCM_ContextIdentifier), + ContextUID(DCM_ContextUID), + EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), + LongCodeValue(DCM_LongCodeValue), + MappingResource(DCM_MappingResource), + MappingResourceName(DCM_MappingResourceName), + MappingResourceUID(DCM_MappingResourceUID), + URNCodeValue(DCM_URNCodeValue) +{ +} + + +DRTTherapeuticRoleCategoryCodeSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + CodeMeaning(copy.CodeMeaning), + CodeValue(copy.CodeValue), + CodingSchemeDesignator(copy.CodingSchemeDesignator), + CodingSchemeVersion(copy.CodingSchemeVersion), + ContextGroupExtensionCreatorUID(copy.ContextGroupExtensionCreatorUID), + ContextGroupExtensionFlag(copy.ContextGroupExtensionFlag), + ContextGroupLocalVersion(copy.ContextGroupLocalVersion), + ContextGroupVersion(copy.ContextGroupVersion), + ContextIdentifier(copy.ContextIdentifier), + ContextUID(copy.ContextUID), + EquivalentCodeSequence(copy.EquivalentCodeSequence), + LongCodeValue(copy.LongCodeValue), + MappingResource(copy.MappingResource), + MappingResourceName(copy.MappingResourceName), + MappingResourceUID(copy.MappingResourceUID), + URNCodeValue(copy.URNCodeValue) +{ +} + + +DRTTherapeuticRoleCategoryCodeSequence::Item::~Item() +{ +} + + +DRTTherapeuticRoleCategoryCodeSequence::Item &DRTTherapeuticRoleCategoryCodeSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + CodeMeaning = copy.CodeMeaning; + CodeValue = copy.CodeValue; + CodingSchemeDesignator = copy.CodingSchemeDesignator; + CodingSchemeVersion = copy.CodingSchemeVersion; + ContextGroupExtensionCreatorUID = copy.ContextGroupExtensionCreatorUID; + ContextGroupExtensionFlag = copy.ContextGroupExtensionFlag; + ContextGroupLocalVersion = copy.ContextGroupLocalVersion; + ContextGroupVersion = copy.ContextGroupVersion; + ContextIdentifier = copy.ContextIdentifier; + ContextUID = copy.ContextUID; + EquivalentCodeSequence = copy.EquivalentCodeSequence; + LongCodeValue = copy.LongCodeValue; + MappingResource = copy.MappingResource; + MappingResourceName = copy.MappingResourceName; + MappingResourceUID = copy.MappingResourceUID; + URNCodeValue = copy.URNCodeValue; + } + return *this; +} + + +void DRTTherapeuticRoleCategoryCodeSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + CodeValue.clear(); + CodingSchemeDesignator.clear(); + CodingSchemeVersion.clear(); + CodeMeaning.clear(); + LongCodeValue.clear(); + URNCodeValue.clear(); + EquivalentCodeSequence.clear(); + ContextIdentifier.clear(); + ContextUID.clear(); + MappingResource.clear(); + MappingResourceUID.clear(); + MappingResourceName.clear(); + ContextGroupVersion.clear(); + ContextGroupExtensionFlag.clear(); + ContextGroupLocalVersion.clear(); + ContextGroupExtensionCreatorUID.clear(); + } +} + + +OFBool DRTTherapeuticRoleCategoryCodeSequence::Item::isEmpty() +{ + return CodeValue.isEmpty() && + CodingSchemeDesignator.isEmpty() && + CodingSchemeVersion.isEmpty() && + CodeMeaning.isEmpty() && + LongCodeValue.isEmpty() && + URNCodeValue.isEmpty() && + EquivalentCodeSequence.isEmpty() && + ContextIdentifier.isEmpty() && + ContextUID.isEmpty() && + MappingResource.isEmpty() && + MappingResourceUID.isEmpty() && + MappingResourceName.isEmpty() && + ContextGroupVersion.isEmpty() && + ContextGroupExtensionFlag.isEmpty() && + ContextGroupLocalVersion.isEmpty() && + ContextGroupExtensionCreatorUID.isEmpty(); +} + + +OFBool DRTTherapeuticRoleCategoryCodeSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "TherapeuticRoleCategoryCodeSequence"); + getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "TherapeuticRoleCategoryCodeSequence"); + getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "TherapeuticRoleCategoryCodeSequence"); + getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "TherapeuticRoleCategoryCodeSequence"); + getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "TherapeuticRoleCategoryCodeSequence"); + getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "TherapeuticRoleCategoryCodeSequence"); + EquivalentCodeSequence.read(item, "1-n", "3", "TherapeuticRoleCategoryCodeSequence"); + getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "TherapeuticRoleCategoryCodeSequence"); + getAndCheckElementFromDataset(item, ContextUID, "1", "3", "TherapeuticRoleCategoryCodeSequence"); + getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "TherapeuticRoleCategoryCodeSequence"); + getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "TherapeuticRoleCategoryCodeSequence"); + getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "TherapeuticRoleCategoryCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "TherapeuticRoleCategoryCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "TherapeuticRoleCategoryCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "TherapeuticRoleCategoryCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "TherapeuticRoleCategoryCodeSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "TherapeuticRoleCategoryCodeSequence"); + addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "TherapeuticRoleCategoryCodeSequence"); + addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "TherapeuticRoleCategoryCodeSequence"); + addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "TherapeuticRoleCategoryCodeSequence"); + addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "TherapeuticRoleCategoryCodeSequence"); + addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "TherapeuticRoleCategoryCodeSequence"); + if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "TherapeuticRoleCategoryCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "TherapeuticRoleCategoryCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "TherapeuticRoleCategoryCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "TherapeuticRoleCategoryCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "TherapeuticRoleCategoryCodeSequence"); + addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "TherapeuticRoleCategoryCodeSequence"); + addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "TherapeuticRoleCategoryCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "TherapeuticRoleCategoryCodeSequence"); + addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "TherapeuticRoleCategoryCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "TherapeuticRoleCategoryCodeSequence"); + } + return result; +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodeMeaning, value, pos); +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::getCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodeValue, value, pos); +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodingSchemeDesignator, value, pos); +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodingSchemeVersion, value, pos); +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupExtensionCreatorUID, value, pos); +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupExtensionFlag, value, pos); +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupLocalVersion, value, pos); +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupVersion, value, pos); +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextIdentifier, value, pos); +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::getContextUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextUID, value, pos); +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(LongCodeValue, value, pos); +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResource, value, pos); +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResourceName, value, pos); +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResourceUID, value, pos); +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(URNCodeValue, value, pos); +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodeMeaning.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::setCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodeValue.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodingSchemeDesignator.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodingSchemeVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupExtensionCreatorUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupExtensionFlag.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupLocalVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::setContextIdentifier(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextIdentifier.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::setContextUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = LongCodeValue.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResource.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResourceName.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResourceUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal; + if (result.good()) + result = URNCodeValue.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTTherapeuticRoleCategoryCodeSequence::DRTTherapeuticRoleCategoryCodeSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTTherapeuticRoleCategoryCodeSequence::DRTTherapeuticRoleCategoryCodeSequence(const DRTTherapeuticRoleCategoryCodeSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTTherapeuticRoleCategoryCodeSequence &DRTTherapeuticRoleCategoryCodeSequence::operator=(const DRTTherapeuticRoleCategoryCodeSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTTherapeuticRoleCategoryCodeSequence::~DRTTherapeuticRoleCategoryCodeSequence() +{ + clear(); +} + + +void DRTTherapeuticRoleCategoryCodeSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTTherapeuticRoleCategoryCodeSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTTherapeuticRoleCategoryCodeSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTTherapeuticRoleCategoryCodeSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTTherapeuticRoleCategoryCodeSequence::Item &DRTTherapeuticRoleCategoryCodeSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTTherapeuticRoleCategoryCodeSequence::Item &DRTTherapeuticRoleCategoryCodeSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTTherapeuticRoleCategoryCodeSequence::Item &DRTTherapeuticRoleCategoryCodeSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTTherapeuticRoleCategoryCodeSequence::Item &DRTTherapeuticRoleCategoryCodeSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTTherapeuticRoleCategoryCodeSequence::Item &DRTTherapeuticRoleCategoryCodeSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTTherapeuticRoleCategoryCodeSequence::Item &DRTTherapeuticRoleCategoryCodeSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_TherapeuticRoleCategoryCodeSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_TherapeuticRoleCategoryCodeSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTTherapeuticRoleCategoryCodeSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_TherapeuticRoleCategoryCodeSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drttreat.cc b/dcmrt/libsrc/drttreat.cc index 08cbad19..ea37dce6 100644 --- a/dcmrt/libsrc/drttreat.cc +++ b/dcmrt/libsrc/drttreat.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTTreatmentSummaryRecordIOD * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -22,6 +22,7 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD() PatientID(DCM_PatientID), IssuerOfPatientID(DCM_IssuerOfPatientID), IssuerOfPatientIDQualifiersSequence(), + TypeOfPatientID(DCM_TypeOfPatientID), PatientBirthDate(DCM_PatientBirthDate), PatientBirthDateInAlternativeCalendar(DCM_PatientBirthDateInAlternativeCalendar), PatientDeathDateInAlternativeCalendar(DCM_PatientDeathDateInAlternativeCalendar), @@ -78,6 +79,7 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD() PhysiciansOfRecordIdentificationSequence(), NameOfPhysiciansReadingStudy(DCM_NameOfPhysiciansReadingStudy), PhysiciansReadingStudyIdentificationSequence(), + RequestingService(DCM_RequestingService), RequestingServiceCodeSequence(), ReferencedStudySequence(), ProcedureCodeSequence(), @@ -101,12 +103,15 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD() AdditionalPatientHistory(DCM_AdditionalPatientHistory), AdmissionID(DCM_AdmissionID), IssuerOfAdmissionIDSequence(), + ReasonForVisit(DCM_ReasonForVisit), + ReasonForVisitCodeSequence(), ServiceEpisodeID(DCM_ServiceEpisodeID), IssuerOfServiceEpisodeIDSequence(), ServiceEpisodeDescription(DCM_ServiceEpisodeDescription), PatientSexNeutered(DCM_PatientSexNeutered), ClinicalTrialTimePointID(DCM_ClinicalTrialTimePointID), ClinicalTrialTimePointDescription(DCM_ClinicalTrialTimePointDescription), + ClinicalTrialTimePointTypeCodeSequence(), LongitudinalTemporalOffsetFromEvent(DCM_LongitudinalTemporalOffsetFromEvent), LongitudinalTemporalEventType(DCM_LongitudinalTemporalEventType), ConsentForClinicalTrialUseSequence(), @@ -129,6 +134,7 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD() PerformedProcedureStepDescription(DCM_PerformedProcedureStepDescription), PerformedProtocolCodeSequence(), CommentsOnThePerformedProcedureStep(DCM_CommentsOnThePerformedProcedureStep), + TreatmentSessionUID(DCM_TreatmentSessionUID), ClinicalTrialCoordinatingCenterName(DCM_ClinicalTrialCoordinatingCenterName), ClinicalTrialSeriesID(DCM_ClinicalTrialSeriesID), ClinicalTrialSeriesDescription(DCM_ClinicalTrialSeriesDescription), @@ -137,11 +143,14 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD() InstitutionAddress(DCM_InstitutionAddress), StationName(DCM_StationName), InstitutionalDepartmentName(DCM_InstitutionalDepartmentName), + InstitutionalDepartmentTypeCodeSequence(), ManufacturerModelName(DCM_ManufacturerModelName), + ManufacturerDeviceClassUID(DCM_ManufacturerDeviceClassUID), DeviceSerialNumber(DCM_DeviceSerialNumber), SoftwareVersions(DCM_SoftwareVersions), GantryID(DCM_GantryID), UDISequence(), + DeviceUID(DCM_DeviceUID), SpatialResolution(DCM_SpatialResolution), DateOfLastCalibration(DCM_DateOfLastCalibration), TimeOfLastCalibration(DCM_TimeOfLastCalibration), @@ -192,6 +201,10 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD() ConversionSourceAttributesSequence(), ContentQualification(DCM_ContentQualification), PrivateDataElementCharacteristicsSequence(), + InstanceOriginStatus(DCM_InstanceOriginStatus), + BarcodeValue(DCM_BarcodeValue), + ReferencedDefinedProtocolSequence(), + ReferencedPerformedProtocolSequence(), ReferencedSeriesSequence(), StudiesContainingOtherReferencedInstancesSequence() { @@ -205,6 +218,7 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD(const DRTTreatmentSum PatientID(copy.PatientID), IssuerOfPatientID(copy.IssuerOfPatientID), IssuerOfPatientIDQualifiersSequence(copy.IssuerOfPatientIDQualifiersSequence), + TypeOfPatientID(copy.TypeOfPatientID), PatientBirthDate(copy.PatientBirthDate), PatientBirthDateInAlternativeCalendar(copy.PatientBirthDateInAlternativeCalendar), PatientDeathDateInAlternativeCalendar(copy.PatientDeathDateInAlternativeCalendar), @@ -261,6 +275,7 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD(const DRTTreatmentSum PhysiciansOfRecordIdentificationSequence(copy.PhysiciansOfRecordIdentificationSequence), NameOfPhysiciansReadingStudy(copy.NameOfPhysiciansReadingStudy), PhysiciansReadingStudyIdentificationSequence(copy.PhysiciansReadingStudyIdentificationSequence), + RequestingService(copy.RequestingService), RequestingServiceCodeSequence(copy.RequestingServiceCodeSequence), ReferencedStudySequence(copy.ReferencedStudySequence), ProcedureCodeSequence(copy.ProcedureCodeSequence), @@ -284,12 +299,15 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD(const DRTTreatmentSum AdditionalPatientHistory(copy.AdditionalPatientHistory), AdmissionID(copy.AdmissionID), IssuerOfAdmissionIDSequence(copy.IssuerOfAdmissionIDSequence), + ReasonForVisit(copy.ReasonForVisit), + ReasonForVisitCodeSequence(copy.ReasonForVisitCodeSequence), ServiceEpisodeID(copy.ServiceEpisodeID), IssuerOfServiceEpisodeIDSequence(copy.IssuerOfServiceEpisodeIDSequence), ServiceEpisodeDescription(copy.ServiceEpisodeDescription), PatientSexNeutered(copy.PatientSexNeutered), ClinicalTrialTimePointID(copy.ClinicalTrialTimePointID), ClinicalTrialTimePointDescription(copy.ClinicalTrialTimePointDescription), + ClinicalTrialTimePointTypeCodeSequence(copy.ClinicalTrialTimePointTypeCodeSequence), LongitudinalTemporalOffsetFromEvent(copy.LongitudinalTemporalOffsetFromEvent), LongitudinalTemporalEventType(copy.LongitudinalTemporalEventType), ConsentForClinicalTrialUseSequence(copy.ConsentForClinicalTrialUseSequence), @@ -312,6 +330,7 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD(const DRTTreatmentSum PerformedProcedureStepDescription(copy.PerformedProcedureStepDescription), PerformedProtocolCodeSequence(copy.PerformedProtocolCodeSequence), CommentsOnThePerformedProcedureStep(copy.CommentsOnThePerformedProcedureStep), + TreatmentSessionUID(copy.TreatmentSessionUID), ClinicalTrialCoordinatingCenterName(copy.ClinicalTrialCoordinatingCenterName), ClinicalTrialSeriesID(copy.ClinicalTrialSeriesID), ClinicalTrialSeriesDescription(copy.ClinicalTrialSeriesDescription), @@ -320,11 +339,14 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD(const DRTTreatmentSum InstitutionAddress(copy.InstitutionAddress), StationName(copy.StationName), InstitutionalDepartmentName(copy.InstitutionalDepartmentName), + InstitutionalDepartmentTypeCodeSequence(copy.InstitutionalDepartmentTypeCodeSequence), ManufacturerModelName(copy.ManufacturerModelName), + ManufacturerDeviceClassUID(copy.ManufacturerDeviceClassUID), DeviceSerialNumber(copy.DeviceSerialNumber), SoftwareVersions(copy.SoftwareVersions), GantryID(copy.GantryID), UDISequence(copy.UDISequence), + DeviceUID(copy.DeviceUID), SpatialResolution(copy.SpatialResolution), DateOfLastCalibration(copy.DateOfLastCalibration), TimeOfLastCalibration(copy.TimeOfLastCalibration), @@ -375,6 +397,10 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD(const DRTTreatmentSum ConversionSourceAttributesSequence(copy.ConversionSourceAttributesSequence), ContentQualification(copy.ContentQualification), PrivateDataElementCharacteristicsSequence(copy.PrivateDataElementCharacteristicsSequence), + InstanceOriginStatus(copy.InstanceOriginStatus), + BarcodeValue(copy.BarcodeValue), + ReferencedDefinedProtocolSequence(copy.ReferencedDefinedProtocolSequence), + ReferencedPerformedProtocolSequence(copy.ReferencedPerformedProtocolSequence), ReferencedSeriesSequence(copy.ReferencedSeriesSequence), StudiesContainingOtherReferencedInstancesSequence(copy.StudiesContainingOtherReferencedInstancesSequence) { @@ -394,6 +420,7 @@ DRTTreatmentSummaryRecordIOD &DRTTreatmentSummaryRecordIOD::operator=(const DRTT PatientID = copy.PatientID; IssuerOfPatientID = copy.IssuerOfPatientID; IssuerOfPatientIDQualifiersSequence = copy.IssuerOfPatientIDQualifiersSequence; + TypeOfPatientID = copy.TypeOfPatientID; PatientBirthDate = copy.PatientBirthDate; PatientBirthDateInAlternativeCalendar = copy.PatientBirthDateInAlternativeCalendar; PatientDeathDateInAlternativeCalendar = copy.PatientDeathDateInAlternativeCalendar; @@ -450,6 +477,7 @@ DRTTreatmentSummaryRecordIOD &DRTTreatmentSummaryRecordIOD::operator=(const DRTT PhysiciansOfRecordIdentificationSequence = copy.PhysiciansOfRecordIdentificationSequence; NameOfPhysiciansReadingStudy = copy.NameOfPhysiciansReadingStudy; PhysiciansReadingStudyIdentificationSequence = copy.PhysiciansReadingStudyIdentificationSequence; + RequestingService = copy.RequestingService; RequestingServiceCodeSequence = copy.RequestingServiceCodeSequence; ReferencedStudySequence = copy.ReferencedStudySequence; ProcedureCodeSequence = copy.ProcedureCodeSequence; @@ -473,12 +501,15 @@ DRTTreatmentSummaryRecordIOD &DRTTreatmentSummaryRecordIOD::operator=(const DRTT AdditionalPatientHistory = copy.AdditionalPatientHistory; AdmissionID = copy.AdmissionID; IssuerOfAdmissionIDSequence = copy.IssuerOfAdmissionIDSequence; + ReasonForVisit = copy.ReasonForVisit; + ReasonForVisitCodeSequence = copy.ReasonForVisitCodeSequence; ServiceEpisodeID = copy.ServiceEpisodeID; IssuerOfServiceEpisodeIDSequence = copy.IssuerOfServiceEpisodeIDSequence; ServiceEpisodeDescription = copy.ServiceEpisodeDescription; PatientSexNeutered = copy.PatientSexNeutered; ClinicalTrialTimePointID = copy.ClinicalTrialTimePointID; ClinicalTrialTimePointDescription = copy.ClinicalTrialTimePointDescription; + ClinicalTrialTimePointTypeCodeSequence = copy.ClinicalTrialTimePointTypeCodeSequence; LongitudinalTemporalOffsetFromEvent = copy.LongitudinalTemporalOffsetFromEvent; LongitudinalTemporalEventType = copy.LongitudinalTemporalEventType; ConsentForClinicalTrialUseSequence = copy.ConsentForClinicalTrialUseSequence; @@ -501,6 +532,7 @@ DRTTreatmentSummaryRecordIOD &DRTTreatmentSummaryRecordIOD::operator=(const DRTT PerformedProcedureStepDescription = copy.PerformedProcedureStepDescription; PerformedProtocolCodeSequence = copy.PerformedProtocolCodeSequence; CommentsOnThePerformedProcedureStep = copy.CommentsOnThePerformedProcedureStep; + TreatmentSessionUID = copy.TreatmentSessionUID; ClinicalTrialCoordinatingCenterName = copy.ClinicalTrialCoordinatingCenterName; ClinicalTrialSeriesID = copy.ClinicalTrialSeriesID; ClinicalTrialSeriesDescription = copy.ClinicalTrialSeriesDescription; @@ -509,11 +541,14 @@ DRTTreatmentSummaryRecordIOD &DRTTreatmentSummaryRecordIOD::operator=(const DRTT InstitutionAddress = copy.InstitutionAddress; StationName = copy.StationName; InstitutionalDepartmentName = copy.InstitutionalDepartmentName; + InstitutionalDepartmentTypeCodeSequence = copy.InstitutionalDepartmentTypeCodeSequence; ManufacturerModelName = copy.ManufacturerModelName; + ManufacturerDeviceClassUID = copy.ManufacturerDeviceClassUID; DeviceSerialNumber = copy.DeviceSerialNumber; SoftwareVersions = copy.SoftwareVersions; GantryID = copy.GantryID; UDISequence = copy.UDISequence; + DeviceUID = copy.DeviceUID; SpatialResolution = copy.SpatialResolution; DateOfLastCalibration = copy.DateOfLastCalibration; TimeOfLastCalibration = copy.TimeOfLastCalibration; @@ -564,6 +599,10 @@ DRTTreatmentSummaryRecordIOD &DRTTreatmentSummaryRecordIOD::operator=(const DRTT ConversionSourceAttributesSequence = copy.ConversionSourceAttributesSequence; ContentQualification = copy.ContentQualification; PrivateDataElementCharacteristicsSequence = copy.PrivateDataElementCharacteristicsSequence; + InstanceOriginStatus = copy.InstanceOriginStatus; + BarcodeValue = copy.BarcodeValue; + ReferencedDefinedProtocolSequence = copy.ReferencedDefinedProtocolSequence; + ReferencedPerformedProtocolSequence = copy.ReferencedPerformedProtocolSequence; ReferencedSeriesSequence = copy.ReferencedSeriesSequence; StudiesContainingOtherReferencedInstancesSequence = copy.StudiesContainingOtherReferencedInstancesSequence; } @@ -578,6 +617,7 @@ void DRTTreatmentSummaryRecordIOD::clear() PatientID.clear(); IssuerOfPatientID.clear(); IssuerOfPatientIDQualifiersSequence.clear(); + TypeOfPatientID.clear(); PatientBirthDate.clear(); PatientBirthDateInAlternativeCalendar.clear(); PatientDeathDateInAlternativeCalendar.clear(); @@ -634,6 +674,7 @@ void DRTTreatmentSummaryRecordIOD::clear() PhysiciansOfRecordIdentificationSequence.clear(); NameOfPhysiciansReadingStudy.clear(); PhysiciansReadingStudyIdentificationSequence.clear(); + RequestingService.clear(); RequestingServiceCodeSequence.clear(); ReferencedStudySequence.clear(); ProcedureCodeSequence.clear(); @@ -657,12 +698,15 @@ void DRTTreatmentSummaryRecordIOD::clear() AdditionalPatientHistory.clear(); AdmissionID.clear(); IssuerOfAdmissionIDSequence.clear(); + ReasonForVisit.clear(); + ReasonForVisitCodeSequence.clear(); ServiceEpisodeID.clear(); IssuerOfServiceEpisodeIDSequence.clear(); ServiceEpisodeDescription.clear(); PatientSexNeutered.clear(); ClinicalTrialTimePointID.clear(); ClinicalTrialTimePointDescription.clear(); + ClinicalTrialTimePointTypeCodeSequence.clear(); LongitudinalTemporalOffsetFromEvent.clear(); LongitudinalTemporalEventType.clear(); ConsentForClinicalTrialUseSequence.clear(); @@ -685,6 +729,7 @@ void DRTTreatmentSummaryRecordIOD::clear() PerformedProcedureStepDescription.clear(); PerformedProtocolCodeSequence.clear(); CommentsOnThePerformedProcedureStep.clear(); + TreatmentSessionUID.clear(); ClinicalTrialCoordinatingCenterName.clear(); ClinicalTrialSeriesID.clear(); ClinicalTrialSeriesDescription.clear(); @@ -693,11 +738,14 @@ void DRTTreatmentSummaryRecordIOD::clear() InstitutionAddress.clear(); StationName.clear(); InstitutionalDepartmentName.clear(); + InstitutionalDepartmentTypeCodeSequence.clear(); ManufacturerModelName.clear(); + ManufacturerDeviceClassUID.clear(); DeviceSerialNumber.clear(); SoftwareVersions.clear(); GantryID.clear(); UDISequence.clear(); + DeviceUID.clear(); SpatialResolution.clear(); DateOfLastCalibration.clear(); TimeOfLastCalibration.clear(); @@ -748,6 +796,10 @@ void DRTTreatmentSummaryRecordIOD::clear() ConversionSourceAttributesSequence.clear(); ContentQualification.clear(); PrivateDataElementCharacteristicsSequence.clear(); + InstanceOriginStatus.clear(); + BarcodeValue.clear(); + ReferencedDefinedProtocolSequence.clear(); + ReferencedPerformedProtocolSequence.clear(); ReferencedSeriesSequence.clear(); StudiesContainingOtherReferencedInstancesSequence.clear(); } @@ -803,11 +855,14 @@ OFCondition DRTTreatmentSummaryRecordIOD::read(DcmItem &dataset) getAndCheckElementFromDataset(dataset, InstitutionAddress, "1", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, StationName, "1", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, InstitutionalDepartmentName, "1", "3", "GeneralEquipmentModule"); + InstitutionalDepartmentTypeCodeSequence.read(dataset, "1-n", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, ManufacturerModelName, "1", "3", "GeneralEquipmentModule"); + getAndCheckElementFromDataset(dataset, ManufacturerDeviceClassUID, "1-n", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, DeviceSerialNumber, "1", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, SoftwareVersions, "1-n", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, GantryID, "1", "3", "GeneralEquipmentModule"); UDISequence.read(dataset, "1-n", "3", "GeneralEquipmentModule"); + getAndCheckElementFromDataset(dataset, DeviceUID, "1", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, SpatialResolution, "1", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, DateOfLastCalibration, "1-n", "3", "GeneralEquipmentModule"); getAndCheckElementFromDataset(dataset, TimeOfLastCalibration, "1-n", "3", "GeneralEquipmentModule"); @@ -867,6 +922,10 @@ OFCondition DRTTreatmentSummaryRecordIOD::read(DcmItem &dataset) ConversionSourceAttributesSequence.read(dataset, "1-n", "1C", "SOPCommonModule"); getAndCheckElementFromDataset(dataset, ContentQualification, "1", "3", "SOPCommonModule"); PrivateDataElementCharacteristicsSequence.read(dataset, "1-n", "3", "SOPCommonModule"); + getAndCheckElementFromDataset(dataset, InstanceOriginStatus, "1", "3", "SOPCommonModule"); + getAndCheckElementFromDataset(dataset, BarcodeValue, "1", "3", "SOPCommonModule"); + ReferencedDefinedProtocolSequence.read(dataset, "1-n", "1C", "SOPCommonModule"); + ReferencedPerformedProtocolSequence.read(dataset, "1-n", "1C", "SOPCommonModule"); // --- CommonInstanceReferenceModule (U) --- ReferencedSeriesSequence.read(dataset, "1-n", "1C", "CommonInstanceReferenceModule"); @@ -885,6 +944,7 @@ OFCondition DRTTreatmentSummaryRecordIOD::readPatientData(DcmItem &dataset) getAndCheckElementFromDataset(dataset, PatientID, "1", "2", "PatientModule"); getAndCheckElementFromDataset(dataset, IssuerOfPatientID, "1", "3", "PatientModule"); IssuerOfPatientIDQualifiersSequence.read(dataset, "1-n", "3", "PatientModule"); + getAndCheckElementFromDataset(dataset, TypeOfPatientID, "1", "3", "PatientModule"); getAndCheckElementFromDataset(dataset, PatientBirthDate, "1", "2", "PatientModule"); getAndCheckElementFromDataset(dataset, PatientBirthDateInAlternativeCalendar, "1", "3", "PatientModule"); getAndCheckElementFromDataset(dataset, PatientDeathDateInAlternativeCalendar, "1", "3", "PatientModule"); @@ -961,6 +1021,7 @@ OFCondition DRTTreatmentSummaryRecordIOD::readStudyData(DcmItem &dataset) PhysiciansOfRecordIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule"); getAndCheckElementFromDataset(dataset, NameOfPhysiciansReadingStudy, "1-n", "3", "GeneralStudyModule"); PhysiciansReadingStudyIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule"); + getAndCheckElementFromDataset(dataset, RequestingService, "1", "3", "GeneralStudyModule"); RequestingServiceCodeSequence.read(dataset, "1-n", "3", "GeneralStudyModule"); ReferencedStudySequence.read(dataset, "1-n", "3", "GeneralStudyModule"); ProcedureCodeSequence.read(dataset, "1-n", "3", "GeneralStudyModule"); @@ -986,6 +1047,8 @@ OFCondition DRTTreatmentSummaryRecordIOD::readStudyData(DcmItem &dataset) getAndCheckElementFromDataset(dataset, AdditionalPatientHistory, "1", "3", "PatientStudyModule"); getAndCheckElementFromDataset(dataset, AdmissionID, "1", "3", "PatientStudyModule"); IssuerOfAdmissionIDSequence.read(dataset, "1-n", "3", "PatientStudyModule"); + getAndCheckElementFromDataset(dataset, ReasonForVisit, "1", "3", "PatientStudyModule"); + ReasonForVisitCodeSequence.read(dataset, "1-n", "3", "PatientStudyModule"); getAndCheckElementFromDataset(dataset, ServiceEpisodeID, "1", "3", "PatientStudyModule"); IssuerOfServiceEpisodeIDSequence.read(dataset, "1-n", "3", "PatientStudyModule"); getAndCheckElementFromDataset(dataset, ServiceEpisodeDescription, "1", "3", "PatientStudyModule"); @@ -996,6 +1059,7 @@ OFCondition DRTTreatmentSummaryRecordIOD::readStudyData(DcmItem &dataset) { getAndCheckElementFromDataset(dataset, ClinicalTrialTimePointID, "1", "2", "ClinicalTrialStudyModule"); getAndCheckElementFromDataset(dataset, ClinicalTrialTimePointDescription, "1", "3", "ClinicalTrialStudyModule"); + ClinicalTrialTimePointTypeCodeSequence.read(dataset, "1-n", "3", "ClinicalTrialStudyModule"); getAndCheckElementFromDataset(dataset, LongitudinalTemporalOffsetFromEvent, "1", "3", "ClinicalTrialStudyModule"); getAndCheckElementFromDataset(dataset, LongitudinalTemporalEventType, "1", "1C", "ClinicalTrialStudyModule"); ConsentForClinicalTrialUseSequence.read(dataset, "1-n", "3", "ClinicalTrialStudyModule"); @@ -1031,6 +1095,7 @@ OFCondition DRTTreatmentSummaryRecordIOD::readSeriesData(DcmItem &dataset) getAndCheckElementFromDataset(dataset, PerformedProcedureStepDescription, "1", "3", "RTSeriesModule"); PerformedProtocolCodeSequence.read(dataset, "1-n", "3", "RTSeriesModule"); getAndCheckElementFromDataset(dataset, CommentsOnThePerformedProcedureStep, "1", "3", "RTSeriesModule"); + getAndCheckElementFromDataset(dataset, TreatmentSessionUID, "1", "3", "RTSeriesModule"); // --- ClinicalTrialSeriesModule (U) --- if (dataset.tagExists(DCM_ClinicalTrialCoordinatingCenterName)) @@ -1058,6 +1123,7 @@ OFCondition DRTTreatmentSummaryRecordIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmLongString(PatientID), "1", "2", "PatientModule"); addElementToDataset(result, dataset, new DcmLongString(IssuerOfPatientID), "1", "3", "PatientModule"); if (result.good()) result = IssuerOfPatientIDQualifiersSequence.write(dataset, "1-n" ,"3", "PatientModule"); + addElementToDataset(result, dataset, new DcmCodeString(TypeOfPatientID), "1", "3", "PatientModule"); addElementToDataset(result, dataset, new DcmDate(PatientBirthDate), "1", "2", "PatientModule"); addElementToDataset(result, dataset, new DcmLongString(PatientBirthDateInAlternativeCalendar), "1", "3", "PatientModule"); addElementToDataset(result, dataset, new DcmLongString(PatientDeathDateInAlternativeCalendar), "1", "3", "PatientModule"); @@ -1121,6 +1187,7 @@ OFCondition DRTTreatmentSummaryRecordIOD::write(DcmItem &dataset) if (result.good()) result = PhysiciansOfRecordIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule"); addElementToDataset(result, dataset, new DcmPersonName(NameOfPhysiciansReadingStudy), "1-n", "3", "GeneralStudyModule"); if (result.good()) result = PhysiciansReadingStudyIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule"); + addElementToDataset(result, dataset, new DcmLongString(RequestingService), "1", "3", "GeneralStudyModule"); if (result.good()) result = RequestingServiceCodeSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule"); if (result.good()) result = ReferencedStudySequence.write(dataset, "1-n" ,"3", "GeneralStudyModule"); if (result.good()) result = ProcedureCodeSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule"); @@ -1148,6 +1215,8 @@ OFCondition DRTTreatmentSummaryRecordIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmLongText(AdditionalPatientHistory), "1", "3", "PatientStudyModule"); addElementToDataset(result, dataset, new DcmLongString(AdmissionID), "1", "3", "PatientStudyModule"); if (result.good()) result = IssuerOfAdmissionIDSequence.write(dataset, "1-n" ,"3", "PatientStudyModule"); + addElementToDataset(result, dataset, new DcmUnlimitedText(ReasonForVisit), "1", "3", "PatientStudyModule"); + if (result.good()) result = ReasonForVisitCodeSequence.write(dataset, "1-n" ,"3", "PatientStudyModule"); addElementToDataset(result, dataset, new DcmLongString(ServiceEpisodeID), "1", "3", "PatientStudyModule"); if (result.good()) result = IssuerOfServiceEpisodeIDSequence.write(dataset, "1-n" ,"3", "PatientStudyModule"); addElementToDataset(result, dataset, new DcmLongString(ServiceEpisodeDescription), "1", "3", "PatientStudyModule"); @@ -1159,6 +1228,7 @@ OFCondition DRTTreatmentSummaryRecordIOD::write(DcmItem &dataset) { addElementToDataset(result, dataset, new DcmLongString(ClinicalTrialTimePointID), "1", "2", "ClinicalTrialStudyModule"); addElementToDataset(result, dataset, new DcmShortText(ClinicalTrialTimePointDescription), "1", "3", "ClinicalTrialStudyModule"); + if (result.good()) result = ClinicalTrialTimePointTypeCodeSequence.write(dataset, "1-n" ,"3", "ClinicalTrialStudyModule"); addElementToDataset(result, dataset, new DcmFloatingPointDouble(LongitudinalTemporalOffsetFromEvent), "1", "3", "ClinicalTrialStudyModule"); addElementToDataset(result, dataset, new DcmCodeString(LongitudinalTemporalEventType), "1", "1C", "ClinicalTrialStudyModule"); if (result.good()) result = ConsentForClinicalTrialUseSequence.write(dataset, "1-n" ,"3", "ClinicalTrialStudyModule"); @@ -1184,6 +1254,7 @@ OFCondition DRTTreatmentSummaryRecordIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmLongString(PerformedProcedureStepDescription), "1", "3", "RTSeriesModule"); if (result.good()) result = PerformedProtocolCodeSequence.write(dataset, "1-n" ,"3", "RTSeriesModule"); addElementToDataset(result, dataset, new DcmShortText(CommentsOnThePerformedProcedureStep), "1", "3", "RTSeriesModule"); + addElementToDataset(result, dataset, new DcmUniqueIdentifier(TreatmentSessionUID), "1", "3", "RTSeriesModule"); // --- ClinicalTrialSeriesModule (U) --- if (isClinicalTrialSeriesModulePresent(OFFalse /*complete*/)) @@ -1199,11 +1270,14 @@ OFCondition DRTTreatmentSummaryRecordIOD::write(DcmItem &dataset) addElementToDataset(result, dataset, new DcmShortText(InstitutionAddress), "1", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmShortString(StationName), "1", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmLongString(InstitutionalDepartmentName), "1", "3", "GeneralEquipmentModule"); + if (result.good()) result = InstitutionalDepartmentTypeCodeSequence.write(dataset, "1-n" ,"3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmLongString(ManufacturerModelName), "1", "3", "GeneralEquipmentModule"); + addElementToDataset(result, dataset, new DcmUniqueIdentifier(ManufacturerDeviceClassUID), "1-n", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmLongString(DeviceSerialNumber), "1", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmLongString(SoftwareVersions), "1-n", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmLongString(GantryID), "1", "3", "GeneralEquipmentModule"); if (result.good()) result = UDISequence.write(dataset, "1-n" ,"3", "GeneralEquipmentModule"); + addElementToDataset(result, dataset, new DcmUniqueIdentifier(DeviceUID), "1", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmDecimalString(SpatialResolution), "1", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmDate(DateOfLastCalibration), "1-n", "3", "GeneralEquipmentModule"); addElementToDataset(result, dataset, new DcmTime(TimeOfLastCalibration), "1-n", "3", "GeneralEquipmentModule"); @@ -1266,6 +1340,10 @@ OFCondition DRTTreatmentSummaryRecordIOD::write(DcmItem &dataset) if (result.good()) result = ConversionSourceAttributesSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule"); addElementToDataset(result, dataset, new DcmCodeString(ContentQualification), "1", "3", "SOPCommonModule"); if (result.good()) result = PrivateDataElementCharacteristicsSequence.write(dataset, "1-n" ,"3", "SOPCommonModule"); + addElementToDataset(result, dataset, new DcmCodeString(InstanceOriginStatus), "1", "3", "SOPCommonModule"); + addElementToDataset(result, dataset, new DcmLongText(BarcodeValue), "1", "3", "SOPCommonModule"); + if (result.good()) result = ReferencedDefinedProtocolSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule"); + if (result.good()) result = ReferencedPerformedProtocolSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule"); // --- CommonInstanceReferenceModule (U) --- if (isCommonInstanceReferenceModulePresent(OFFalse /*complete*/)) @@ -1323,6 +1401,8 @@ OFBool DRTTreatmentSummaryRecordIOD::isPatientStudyModulePresent(const OFBool /* !AdditionalPatientHistory.isEmpty() || !AdmissionID.isEmpty() || !IssuerOfAdmissionIDSequence.isEmpty() || + !ReasonForVisit.isEmpty() || + !ReasonForVisitCodeSequence.isEmpty() || !ServiceEpisodeID.isEmpty() || !IssuerOfServiceEpisodeIDSequence.isEmpty() || !ServiceEpisodeDescription.isEmpty() || @@ -1335,6 +1415,7 @@ OFBool DRTTreatmentSummaryRecordIOD::isClinicalTrialStudyModulePresent(const OFB /* check whether at least one attribute is present */ return !ClinicalTrialTimePointID.isEmpty() || !ClinicalTrialTimePointDescription.isEmpty() || + !ClinicalTrialTimePointTypeCodeSequence.isEmpty() || !LongitudinalTemporalOffsetFromEvent.isEmpty() || !LongitudinalTemporalEventType.isEmpty() || !ConsentForClinicalTrialUseSequence.isEmpty(); @@ -1406,6 +1487,12 @@ OFCondition DRTTreatmentSummaryRecordIOD::getAuthorizationEquipmentCertification } +OFCondition DRTTreatmentSummaryRecordIOD::getBarcodeValue(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(BarcodeValue, value, pos); +} + + OFCondition DRTTreatmentSummaryRecordIOD::getClinicalTrialCoordinatingCenterName(OFString &value, const signed long pos) const { return getStringValueFromElement(ClinicalTrialCoordinatingCenterName, value, pos); @@ -1538,6 +1625,12 @@ OFCondition DRTTreatmentSummaryRecordIOD::getDeviceSerialNumber(OFString &value, } +OFCondition DRTTreatmentSummaryRecordIOD::getDeviceUID(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(DeviceUID, value, pos); +} + + OFCondition DRTTreatmentSummaryRecordIOD::getEthnicGroup(OFString &value, const signed long pos) const { return getStringValueFromElement(EthnicGroup, value, pos); @@ -1592,6 +1685,12 @@ OFCondition DRTTreatmentSummaryRecordIOD::getInstanceNumber(Sint32 &value, const } +OFCondition DRTTreatmentSummaryRecordIOD::getInstanceOriginStatus(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(InstanceOriginStatus, value, pos); +} + + OFCondition DRTTreatmentSummaryRecordIOD::getInstitutionAddress(OFString &value, const signed long pos) const { return getStringValueFromElement(InstitutionAddress, value, pos); @@ -1646,6 +1745,12 @@ OFCondition DRTTreatmentSummaryRecordIOD::getManufacturer(OFString &value, const } +OFCondition DRTTreatmentSummaryRecordIOD::getManufacturerDeviceClassUID(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(ManufacturerDeviceClassUID, value, pos); +} + + OFCondition DRTTreatmentSummaryRecordIOD::getManufacturerModelName(OFString &value, const signed long pos) const { return getStringValueFromElement(ManufacturerModelName, value, pos); @@ -1916,6 +2021,12 @@ OFCondition DRTTreatmentSummaryRecordIOD::getQueryRetrieveView(OFString &value, } +OFCondition DRTTreatmentSummaryRecordIOD::getReasonForVisit(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(ReasonForVisit, value, pos); +} + + OFCondition DRTTreatmentSummaryRecordIOD::getReferringPhysicianName(OFString &value, const signed long pos) const { return getStringValueFromElement(ReferringPhysicianName, value, pos); @@ -1928,6 +2039,12 @@ OFCondition DRTTreatmentSummaryRecordIOD::getRelatedGeneralSOPClassUID(OFString } +OFCondition DRTTreatmentSummaryRecordIOD::getRequestingService(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(RequestingService, value, pos); +} + + OFCondition DRTTreatmentSummaryRecordIOD::getResponsibleOrganization(OFString &value, const signed long pos) const { return getStringValueFromElement(ResponsibleOrganization, value, pos); @@ -2126,6 +2243,12 @@ OFCondition DRTTreatmentSummaryRecordIOD::getTreatmentDate(OFString &value, cons } +OFCondition DRTTreatmentSummaryRecordIOD::getTreatmentSessionUID(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(TreatmentSessionUID, value, pos); +} + + OFCondition DRTTreatmentSummaryRecordIOD::getTreatmentStatusComment(OFString &value, const signed long pos) const { return getStringValueFromElement(TreatmentStatusComment, value, pos); @@ -2138,6 +2261,12 @@ OFCondition DRTTreatmentSummaryRecordIOD::getTreatmentTime(OFString &value, cons } +OFCondition DRTTreatmentSummaryRecordIOD::getTypeOfPatientID(OFString &value, const signed long pos) const +{ + return getStringValueFromElement(TypeOfPatientID, value, pos); +} + + OFCondition DRTTreatmentSummaryRecordIOD::setAccessionNumber(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; @@ -2192,6 +2321,15 @@ OFCondition DRTTreatmentSummaryRecordIOD::setAuthorizationEquipmentCertification } +OFCondition DRTTreatmentSummaryRecordIOD::setBarcodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmLongText::checkStringValue(value) : EC_Normal; + if (result.good()) + result = BarcodeValue.putOFStringArray(value); + return result; +} + + OFCondition DRTTreatmentSummaryRecordIOD::setClinicalTrialCoordinatingCenterName(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; @@ -2390,6 +2528,15 @@ OFCondition DRTTreatmentSummaryRecordIOD::setDeviceSerialNumber(const OFString & } +OFCondition DRTTreatmentSummaryRecordIOD::setDeviceUID(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = DeviceUID.putOFStringArray(value); + return result; +} + + OFCondition DRTTreatmentSummaryRecordIOD::setEthnicGroup(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; @@ -2462,6 +2609,15 @@ OFCondition DRTTreatmentSummaryRecordIOD::setInstanceNumber(const OFString &valu } +OFCondition DRTTreatmentSummaryRecordIOD::setInstanceOriginStatus(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = InstanceOriginStatus.putOFStringArray(value); + return result; +} + + OFCondition DRTTreatmentSummaryRecordIOD::setInstitutionAddress(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal; @@ -2540,6 +2696,15 @@ OFCondition DRTTreatmentSummaryRecordIOD::setManufacturer(const OFString &value, } +OFCondition DRTTreatmentSummaryRecordIOD::setManufacturerDeviceClassUID(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1-n") : EC_Normal; + if (result.good()) + result = ManufacturerDeviceClassUID.putOFStringArray(value); + return result; +} + + OFCondition DRTTreatmentSummaryRecordIOD::setManufacturerModelName(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; @@ -2894,6 +3059,15 @@ OFCondition DRTTreatmentSummaryRecordIOD::setQueryRetrieveView(const OFString &v } +OFCondition DRTTreatmentSummaryRecordIOD::setReasonForVisit(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmUnlimitedText::checkStringValue(value) : EC_Normal; + if (result.good()) + result = ReasonForVisit.putOFStringArray(value); + return result; +} + + OFCondition DRTTreatmentSummaryRecordIOD::setReferringPhysicianName(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmPersonName::checkStringValue(value, "1") : EC_Normal; @@ -2912,6 +3086,15 @@ OFCondition DRTTreatmentSummaryRecordIOD::setRelatedGeneralSOPClassUID(const OFS } +OFCondition DRTTreatmentSummaryRecordIOD::setRequestingService(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = RequestingService.putOFStringArray(value); + return result; +} + + OFCondition DRTTreatmentSummaryRecordIOD::setResponsibleOrganization(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; @@ -3191,6 +3374,15 @@ OFCondition DRTTreatmentSummaryRecordIOD::setTreatmentDate(const OFString &value } +OFCondition DRTTreatmentSummaryRecordIOD::setTreatmentSessionUID(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = TreatmentSessionUID.putOFStringArray(value); + return result; +} + + OFCondition DRTTreatmentSummaryRecordIOD::setTreatmentStatusComment(const OFString &value, const OFBool check) { OFCondition result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal; @@ -3209,4 +3401,13 @@ OFCondition DRTTreatmentSummaryRecordIOD::setTreatmentTime(const OFString &value } +OFCondition DRTTreatmentSummaryRecordIOD::setTypeOfPatientID(const OFString &value, const OFBool check) +{ + OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = TypeOfPatientID.putOFStringArray(value); + return result; +} + + // end of source file diff --git a/dcmrt/libsrc/drttrtcs.cc b/dcmrt/libsrc/drttrtcs.cc new file mode 100644 index 00000000..6d600aef --- /dev/null +++ b/dcmrt/libsrc/drttrtcs.cc @@ -0,0 +1,959 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTTherapeuticRoleTypeCodeSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drttrtcs.h" + + +// --- item class --- + +DRTTherapeuticRoleTypeCodeSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + CodeMeaning(DCM_CodeMeaning), + CodeValue(DCM_CodeValue), + CodingSchemeDesignator(DCM_CodingSchemeDesignator), + CodingSchemeVersion(DCM_CodingSchemeVersion), + ContextGroupExtensionCreatorUID(DCM_ContextGroupExtensionCreatorUID), + ContextGroupExtensionFlag(DCM_ContextGroupExtensionFlag), + ContextGroupLocalVersion(DCM_ContextGroupLocalVersion), + ContextGroupVersion(DCM_ContextGroupVersion), + ContextIdentifier(DCM_ContextIdentifier), + ContextUID(DCM_ContextUID), + EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), + LongCodeValue(DCM_LongCodeValue), + MappingResource(DCM_MappingResource), + MappingResourceName(DCM_MappingResourceName), + MappingResourceUID(DCM_MappingResourceUID), + URNCodeValue(DCM_URNCodeValue) +{ +} + + +DRTTherapeuticRoleTypeCodeSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + CodeMeaning(copy.CodeMeaning), + CodeValue(copy.CodeValue), + CodingSchemeDesignator(copy.CodingSchemeDesignator), + CodingSchemeVersion(copy.CodingSchemeVersion), + ContextGroupExtensionCreatorUID(copy.ContextGroupExtensionCreatorUID), + ContextGroupExtensionFlag(copy.ContextGroupExtensionFlag), + ContextGroupLocalVersion(copy.ContextGroupLocalVersion), + ContextGroupVersion(copy.ContextGroupVersion), + ContextIdentifier(copy.ContextIdentifier), + ContextUID(copy.ContextUID), + EquivalentCodeSequence(copy.EquivalentCodeSequence), + LongCodeValue(copy.LongCodeValue), + MappingResource(copy.MappingResource), + MappingResourceName(copy.MappingResourceName), + MappingResourceUID(copy.MappingResourceUID), + URNCodeValue(copy.URNCodeValue) +{ +} + + +DRTTherapeuticRoleTypeCodeSequence::Item::~Item() +{ +} + + +DRTTherapeuticRoleTypeCodeSequence::Item &DRTTherapeuticRoleTypeCodeSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + CodeMeaning = copy.CodeMeaning; + CodeValue = copy.CodeValue; + CodingSchemeDesignator = copy.CodingSchemeDesignator; + CodingSchemeVersion = copy.CodingSchemeVersion; + ContextGroupExtensionCreatorUID = copy.ContextGroupExtensionCreatorUID; + ContextGroupExtensionFlag = copy.ContextGroupExtensionFlag; + ContextGroupLocalVersion = copy.ContextGroupLocalVersion; + ContextGroupVersion = copy.ContextGroupVersion; + ContextIdentifier = copy.ContextIdentifier; + ContextUID = copy.ContextUID; + EquivalentCodeSequence = copy.EquivalentCodeSequence; + LongCodeValue = copy.LongCodeValue; + MappingResource = copy.MappingResource; + MappingResourceName = copy.MappingResourceName; + MappingResourceUID = copy.MappingResourceUID; + URNCodeValue = copy.URNCodeValue; + } + return *this; +} + + +void DRTTherapeuticRoleTypeCodeSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + CodeValue.clear(); + CodingSchemeDesignator.clear(); + CodingSchemeVersion.clear(); + CodeMeaning.clear(); + LongCodeValue.clear(); + URNCodeValue.clear(); + EquivalentCodeSequence.clear(); + ContextIdentifier.clear(); + ContextUID.clear(); + MappingResource.clear(); + MappingResourceUID.clear(); + MappingResourceName.clear(); + ContextGroupVersion.clear(); + ContextGroupExtensionFlag.clear(); + ContextGroupLocalVersion.clear(); + ContextGroupExtensionCreatorUID.clear(); + } +} + + +OFBool DRTTherapeuticRoleTypeCodeSequence::Item::isEmpty() +{ + return CodeValue.isEmpty() && + CodingSchemeDesignator.isEmpty() && + CodingSchemeVersion.isEmpty() && + CodeMeaning.isEmpty() && + LongCodeValue.isEmpty() && + URNCodeValue.isEmpty() && + EquivalentCodeSequence.isEmpty() && + ContextIdentifier.isEmpty() && + ContextUID.isEmpty() && + MappingResource.isEmpty() && + MappingResourceUID.isEmpty() && + MappingResourceName.isEmpty() && + ContextGroupVersion.isEmpty() && + ContextGroupExtensionFlag.isEmpty() && + ContextGroupLocalVersion.isEmpty() && + ContextGroupExtensionCreatorUID.isEmpty(); +} + + +OFBool DRTTherapeuticRoleTypeCodeSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "TherapeuticRoleTypeCodeSequence"); + getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "TherapeuticRoleTypeCodeSequence"); + getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "TherapeuticRoleTypeCodeSequence"); + getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "TherapeuticRoleTypeCodeSequence"); + getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "TherapeuticRoleTypeCodeSequence"); + getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "TherapeuticRoleTypeCodeSequence"); + EquivalentCodeSequence.read(item, "1-n", "3", "TherapeuticRoleTypeCodeSequence"); + getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "TherapeuticRoleTypeCodeSequence"); + getAndCheckElementFromDataset(item, ContextUID, "1", "3", "TherapeuticRoleTypeCodeSequence"); + getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "TherapeuticRoleTypeCodeSequence"); + getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "TherapeuticRoleTypeCodeSequence"); + getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "TherapeuticRoleTypeCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "TherapeuticRoleTypeCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "TherapeuticRoleTypeCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "TherapeuticRoleTypeCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "TherapeuticRoleTypeCodeSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "TherapeuticRoleTypeCodeSequence"); + addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "TherapeuticRoleTypeCodeSequence"); + addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "TherapeuticRoleTypeCodeSequence"); + addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "TherapeuticRoleTypeCodeSequence"); + addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "TherapeuticRoleTypeCodeSequence"); + addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "TherapeuticRoleTypeCodeSequence"); + if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "TherapeuticRoleTypeCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "TherapeuticRoleTypeCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "TherapeuticRoleTypeCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "TherapeuticRoleTypeCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "TherapeuticRoleTypeCodeSequence"); + addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "TherapeuticRoleTypeCodeSequence"); + addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "TherapeuticRoleTypeCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "TherapeuticRoleTypeCodeSequence"); + addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "TherapeuticRoleTypeCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "TherapeuticRoleTypeCodeSequence"); + } + return result; +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodeMeaning, value, pos); +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::getCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodeValue, value, pos); +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodingSchemeDesignator, value, pos); +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodingSchemeVersion, value, pos); +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupExtensionCreatorUID, value, pos); +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupExtensionFlag, value, pos); +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupLocalVersion, value, pos); +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupVersion, value, pos); +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextIdentifier, value, pos); +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::getContextUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextUID, value, pos); +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(LongCodeValue, value, pos); +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResource, value, pos); +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResourceName, value, pos); +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResourceUID, value, pos); +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(URNCodeValue, value, pos); +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodeMeaning.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::setCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodeValue.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodingSchemeDesignator.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodingSchemeVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupExtensionCreatorUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupExtensionFlag.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupLocalVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::setContextIdentifier(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextIdentifier.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::setContextUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = LongCodeValue.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResource.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResourceName.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResourceUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal; + if (result.good()) + result = URNCodeValue.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTTherapeuticRoleTypeCodeSequence::DRTTherapeuticRoleTypeCodeSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTTherapeuticRoleTypeCodeSequence::DRTTherapeuticRoleTypeCodeSequence(const DRTTherapeuticRoleTypeCodeSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTTherapeuticRoleTypeCodeSequence &DRTTherapeuticRoleTypeCodeSequence::operator=(const DRTTherapeuticRoleTypeCodeSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTTherapeuticRoleTypeCodeSequence::~DRTTherapeuticRoleTypeCodeSequence() +{ + clear(); +} + + +void DRTTherapeuticRoleTypeCodeSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTTherapeuticRoleTypeCodeSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTTherapeuticRoleTypeCodeSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTTherapeuticRoleTypeCodeSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTTherapeuticRoleTypeCodeSequence::Item &DRTTherapeuticRoleTypeCodeSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTTherapeuticRoleTypeCodeSequence::Item &DRTTherapeuticRoleTypeCodeSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTTherapeuticRoleTypeCodeSequence::Item &DRTTherapeuticRoleTypeCodeSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTTherapeuticRoleTypeCodeSequence::Item &DRTTherapeuticRoleTypeCodeSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTTherapeuticRoleTypeCodeSequence::Item &DRTTherapeuticRoleTypeCodeSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTTherapeuticRoleTypeCodeSequence::Item &DRTTherapeuticRoleTypeCodeSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_TherapeuticRoleTypeCodeSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_TherapeuticRoleTypeCodeSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTTherapeuticRoleTypeCodeSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_TherapeuticRoleTypeCodeSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drttscds.cc b/dcmrt/libsrc/drttscds.cc index 378b81bd..c4884e79 100644 --- a/dcmrt/libsrc/drttscds.cc +++ b/dcmrt/libsrc/drttscds.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTTreatmentSummaryCalculatedDoseReferenceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -319,10 +319,12 @@ OFCondition DRTTreatmentSummaryCalculatedDoseReferenceSequence::gotoFirstItem() OFCondition DRTTreatmentSummaryCalculatedDoseReferenceSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drttscs.cc b/dcmrt/libsrc/drttscs.cc new file mode 100644 index 00000000..c30b90c6 --- /dev/null +++ b/dcmrt/libsrc/drttscs.cc @@ -0,0 +1,959 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTTreatmentSiteCodeSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drttscs.h" + + +// --- item class --- + +DRTTreatmentSiteCodeSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + CodeMeaning(DCM_CodeMeaning), + CodeValue(DCM_CodeValue), + CodingSchemeDesignator(DCM_CodingSchemeDesignator), + CodingSchemeVersion(DCM_CodingSchemeVersion), + ContextGroupExtensionCreatorUID(DCM_ContextGroupExtensionCreatorUID), + ContextGroupExtensionFlag(DCM_ContextGroupExtensionFlag), + ContextGroupLocalVersion(DCM_ContextGroupLocalVersion), + ContextGroupVersion(DCM_ContextGroupVersion), + ContextIdentifier(DCM_ContextIdentifier), + ContextUID(DCM_ContextUID), + EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), + LongCodeValue(DCM_LongCodeValue), + MappingResource(DCM_MappingResource), + MappingResourceName(DCM_MappingResourceName), + MappingResourceUID(DCM_MappingResourceUID), + URNCodeValue(DCM_URNCodeValue) +{ +} + + +DRTTreatmentSiteCodeSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + CodeMeaning(copy.CodeMeaning), + CodeValue(copy.CodeValue), + CodingSchemeDesignator(copy.CodingSchemeDesignator), + CodingSchemeVersion(copy.CodingSchemeVersion), + ContextGroupExtensionCreatorUID(copy.ContextGroupExtensionCreatorUID), + ContextGroupExtensionFlag(copy.ContextGroupExtensionFlag), + ContextGroupLocalVersion(copy.ContextGroupLocalVersion), + ContextGroupVersion(copy.ContextGroupVersion), + ContextIdentifier(copy.ContextIdentifier), + ContextUID(copy.ContextUID), + EquivalentCodeSequence(copy.EquivalentCodeSequence), + LongCodeValue(copy.LongCodeValue), + MappingResource(copy.MappingResource), + MappingResourceName(copy.MappingResourceName), + MappingResourceUID(copy.MappingResourceUID), + URNCodeValue(copy.URNCodeValue) +{ +} + + +DRTTreatmentSiteCodeSequence::Item::~Item() +{ +} + + +DRTTreatmentSiteCodeSequence::Item &DRTTreatmentSiteCodeSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + CodeMeaning = copy.CodeMeaning; + CodeValue = copy.CodeValue; + CodingSchemeDesignator = copy.CodingSchemeDesignator; + CodingSchemeVersion = copy.CodingSchemeVersion; + ContextGroupExtensionCreatorUID = copy.ContextGroupExtensionCreatorUID; + ContextGroupExtensionFlag = copy.ContextGroupExtensionFlag; + ContextGroupLocalVersion = copy.ContextGroupLocalVersion; + ContextGroupVersion = copy.ContextGroupVersion; + ContextIdentifier = copy.ContextIdentifier; + ContextUID = copy.ContextUID; + EquivalentCodeSequence = copy.EquivalentCodeSequence; + LongCodeValue = copy.LongCodeValue; + MappingResource = copy.MappingResource; + MappingResourceName = copy.MappingResourceName; + MappingResourceUID = copy.MappingResourceUID; + URNCodeValue = copy.URNCodeValue; + } + return *this; +} + + +void DRTTreatmentSiteCodeSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + CodeValue.clear(); + CodingSchemeDesignator.clear(); + CodingSchemeVersion.clear(); + CodeMeaning.clear(); + LongCodeValue.clear(); + URNCodeValue.clear(); + EquivalentCodeSequence.clear(); + ContextIdentifier.clear(); + ContextUID.clear(); + MappingResource.clear(); + MappingResourceUID.clear(); + MappingResourceName.clear(); + ContextGroupVersion.clear(); + ContextGroupExtensionFlag.clear(); + ContextGroupLocalVersion.clear(); + ContextGroupExtensionCreatorUID.clear(); + } +} + + +OFBool DRTTreatmentSiteCodeSequence::Item::isEmpty() +{ + return CodeValue.isEmpty() && + CodingSchemeDesignator.isEmpty() && + CodingSchemeVersion.isEmpty() && + CodeMeaning.isEmpty() && + LongCodeValue.isEmpty() && + URNCodeValue.isEmpty() && + EquivalentCodeSequence.isEmpty() && + ContextIdentifier.isEmpty() && + ContextUID.isEmpty() && + MappingResource.isEmpty() && + MappingResourceUID.isEmpty() && + MappingResourceName.isEmpty() && + ContextGroupVersion.isEmpty() && + ContextGroupExtensionFlag.isEmpty() && + ContextGroupLocalVersion.isEmpty() && + ContextGroupExtensionCreatorUID.isEmpty(); +} + + +OFBool DRTTreatmentSiteCodeSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTTreatmentSiteCodeSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "TreatmentSiteCodeSequence"); + getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "TreatmentSiteCodeSequence"); + getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "TreatmentSiteCodeSequence"); + getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "TreatmentSiteCodeSequence"); + getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "TreatmentSiteCodeSequence"); + getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "TreatmentSiteCodeSequence"); + EquivalentCodeSequence.read(item, "1-n", "3", "TreatmentSiteCodeSequence"); + getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "TreatmentSiteCodeSequence"); + getAndCheckElementFromDataset(item, ContextUID, "1", "3", "TreatmentSiteCodeSequence"); + getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "TreatmentSiteCodeSequence"); + getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "TreatmentSiteCodeSequence"); + getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "TreatmentSiteCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "TreatmentSiteCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "TreatmentSiteCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "TreatmentSiteCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "TreatmentSiteCodeSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTTreatmentSiteCodeSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "TreatmentSiteCodeSequence"); + addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "TreatmentSiteCodeSequence"); + addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "TreatmentSiteCodeSequence"); + addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "TreatmentSiteCodeSequence"); + addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "TreatmentSiteCodeSequence"); + addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "TreatmentSiteCodeSequence"); + if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "TreatmentSiteCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "TreatmentSiteCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "TreatmentSiteCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "TreatmentSiteCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "TreatmentSiteCodeSequence"); + addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "TreatmentSiteCodeSequence"); + addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "TreatmentSiteCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "TreatmentSiteCodeSequence"); + addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "TreatmentSiteCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "TreatmentSiteCodeSequence"); + } + return result; +} + + +OFCondition DRTTreatmentSiteCodeSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodeMeaning, value, pos); +} + + +OFCondition DRTTreatmentSiteCodeSequence::Item::getCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodeValue, value, pos); +} + + +OFCondition DRTTreatmentSiteCodeSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodingSchemeDesignator, value, pos); +} + + +OFCondition DRTTreatmentSiteCodeSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodingSchemeVersion, value, pos); +} + + +OFCondition DRTTreatmentSiteCodeSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupExtensionCreatorUID, value, pos); +} + + +OFCondition DRTTreatmentSiteCodeSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupExtensionFlag, value, pos); +} + + +OFCondition DRTTreatmentSiteCodeSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupLocalVersion, value, pos); +} + + +OFCondition DRTTreatmentSiteCodeSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupVersion, value, pos); +} + + +OFCondition DRTTreatmentSiteCodeSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextIdentifier, value, pos); +} + + +OFCondition DRTTreatmentSiteCodeSequence::Item::getContextUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextUID, value, pos); +} + + +OFCondition DRTTreatmentSiteCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(LongCodeValue, value, pos); +} + + +OFCondition DRTTreatmentSiteCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResource, value, pos); +} + + +OFCondition DRTTreatmentSiteCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResourceName, value, pos); +} + + +OFCondition DRTTreatmentSiteCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResourceUID, value, pos); +} + + +OFCondition DRTTreatmentSiteCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(URNCodeValue, value, pos); +} + + +OFCondition DRTTreatmentSiteCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodeMeaning.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTreatmentSiteCodeSequence::Item::setCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodeValue.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTreatmentSiteCodeSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodingSchemeDesignator.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTreatmentSiteCodeSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodingSchemeVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTreatmentSiteCodeSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupExtensionCreatorUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTreatmentSiteCodeSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupExtensionFlag.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTreatmentSiteCodeSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupLocalVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTreatmentSiteCodeSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTreatmentSiteCodeSequence::Item::setContextIdentifier(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextIdentifier.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTreatmentSiteCodeSequence::Item::setContextUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTreatmentSiteCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = LongCodeValue.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTreatmentSiteCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResource.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTreatmentSiteCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResourceName.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTreatmentSiteCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResourceUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTTreatmentSiteCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal; + if (result.good()) + result = URNCodeValue.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTTreatmentSiteCodeSequence::DRTTreatmentSiteCodeSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTTreatmentSiteCodeSequence::DRTTreatmentSiteCodeSequence(const DRTTreatmentSiteCodeSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTTreatmentSiteCodeSequence &DRTTreatmentSiteCodeSequence::operator=(const DRTTreatmentSiteCodeSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTTreatmentSiteCodeSequence::~DRTTreatmentSiteCodeSequence() +{ + clear(); +} + + +void DRTTreatmentSiteCodeSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTTreatmentSiteCodeSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTTreatmentSiteCodeSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTTreatmentSiteCodeSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTTreatmentSiteCodeSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTTreatmentSiteCodeSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTTreatmentSiteCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTTreatmentSiteCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTTreatmentSiteCodeSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTTreatmentSiteCodeSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTTreatmentSiteCodeSequence::Item &DRTTreatmentSiteCodeSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTTreatmentSiteCodeSequence::Item &DRTTreatmentSiteCodeSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTTreatmentSiteCodeSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTTreatmentSiteCodeSequence::Item &DRTTreatmentSiteCodeSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTTreatmentSiteCodeSequence::Item &DRTTreatmentSiteCodeSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTTreatmentSiteCodeSequence::Item &DRTTreatmentSiteCodeSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTTreatmentSiteCodeSequence::Item &DRTTreatmentSiteCodeSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTTreatmentSiteCodeSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTTreatmentSiteCodeSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTTreatmentSiteCodeSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTTreatmentSiteCodeSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_TreatmentSiteCodeSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_TreatmentSiteCodeSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTTreatmentSiteCodeSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_TreatmentSiteCodeSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drttsibs.cc b/dcmrt/libsrc/drttsibs.cc index 88c839e2..5f560b04 100644 --- a/dcmrt/libsrc/drttsibs.cc +++ b/dcmrt/libsrc/drttsibs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTTreatmentSessionIonBeamSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -31,11 +31,13 @@ DRTTreatmentSessionIonBeamSequence::Item::Item(const OFBool emptyDefaultItem) DeliveredPrimaryMeterset(DCM_DeliveredPrimaryMeterset), DeliveredSecondaryMeterset(DCM_DeliveredSecondaryMeterset), DeliveredTreatmentTime(DCM_DeliveredTreatmentTime), + EntityLongLabel(DCM_EntityLongLabel), FixationEye(DCM_FixationEye), FixationLightAzimuthalAngle(DCM_FixationLightAzimuthalAngle), FixationLightPolarAngle(DCM_FixationLightPolarAngle), GeneralAccessorySequence(emptyDefaultItem /*emptyDefaultSequence*/), IonControlPointDeliverySequence(emptyDefaultItem /*emptyDefaultSequence*/), + MachineSpecificTreatmentTerminationCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), ModulatedScanModeType(DCM_ModulatedScanModeType), NumberOfBlocks(DCM_NumberOfBlocks), NumberOfBoli(DCM_NumberOfBoli), @@ -48,6 +50,7 @@ DRTTreatmentSessionIonBeamSequence::Item::Item(const OFBool emptyDefaultItem) PatientSupportAccessoryCode(DCM_PatientSupportAccessoryCode), PatientSupportID(DCM_PatientSupportID), PatientSupportType(DCM_PatientSupportType), + RTTreatmentTerminationReasonCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), RadiationAtomicNumber(DCM_RadiationAtomicNumber), RadiationChargeState(DCM_RadiationChargeState), RadiationMassNumber(DCM_RadiationMassNumber), @@ -71,7 +74,7 @@ DRTTreatmentSessionIonBeamSequence::Item::Item(const OFBool emptyDefaultItem) SpecifiedSecondaryMeterset(DCM_SpecifiedSecondaryMeterset), SpecifiedTreatmentTime(DCM_SpecifiedTreatmentTime), TreatmentDeliveryType(DCM_TreatmentDeliveryType), - TreatmentTerminationCode(DCM_TreatmentTerminationCode), + TreatmentTerminationDescription(DCM_TreatmentTerminationDescription), TreatmentTerminationStatus(DCM_TreatmentTerminationStatus), TreatmentVerificationStatus(DCM_TreatmentVerificationStatus) { @@ -90,11 +93,13 @@ DRTTreatmentSessionIonBeamSequence::Item::Item(const Item ©) DeliveredPrimaryMeterset(copy.DeliveredPrimaryMeterset), DeliveredSecondaryMeterset(copy.DeliveredSecondaryMeterset), DeliveredTreatmentTime(copy.DeliveredTreatmentTime), + EntityLongLabel(copy.EntityLongLabel), FixationEye(copy.FixationEye), FixationLightAzimuthalAngle(copy.FixationLightAzimuthalAngle), FixationLightPolarAngle(copy.FixationLightPolarAngle), GeneralAccessorySequence(copy.GeneralAccessorySequence), IonControlPointDeliverySequence(copy.IonControlPointDeliverySequence), + MachineSpecificTreatmentTerminationCodeSequence(copy.MachineSpecificTreatmentTerminationCodeSequence), ModulatedScanModeType(copy.ModulatedScanModeType), NumberOfBlocks(copy.NumberOfBlocks), NumberOfBoli(copy.NumberOfBoli), @@ -107,6 +112,7 @@ DRTTreatmentSessionIonBeamSequence::Item::Item(const Item ©) PatientSupportAccessoryCode(copy.PatientSupportAccessoryCode), PatientSupportID(copy.PatientSupportID), PatientSupportType(copy.PatientSupportType), + RTTreatmentTerminationReasonCodeSequence(copy.RTTreatmentTerminationReasonCodeSequence), RadiationAtomicNumber(copy.RadiationAtomicNumber), RadiationChargeState(copy.RadiationChargeState), RadiationMassNumber(copy.RadiationMassNumber), @@ -130,7 +136,7 @@ DRTTreatmentSessionIonBeamSequence::Item::Item(const Item ©) SpecifiedSecondaryMeterset(copy.SpecifiedSecondaryMeterset), SpecifiedTreatmentTime(copy.SpecifiedTreatmentTime), TreatmentDeliveryType(copy.TreatmentDeliveryType), - TreatmentTerminationCode(copy.TreatmentTerminationCode), + TreatmentTerminationDescription(copy.TreatmentTerminationDescription), TreatmentTerminationStatus(copy.TreatmentTerminationStatus), TreatmentVerificationStatus(copy.TreatmentVerificationStatus) { @@ -157,11 +163,13 @@ DRTTreatmentSessionIonBeamSequence::Item &DRTTreatmentSessionIonBeamSequence::It DeliveredPrimaryMeterset = copy.DeliveredPrimaryMeterset; DeliveredSecondaryMeterset = copy.DeliveredSecondaryMeterset; DeliveredTreatmentTime = copy.DeliveredTreatmentTime; + EntityLongLabel = copy.EntityLongLabel; FixationEye = copy.FixationEye; FixationLightAzimuthalAngle = copy.FixationLightAzimuthalAngle; FixationLightPolarAngle = copy.FixationLightPolarAngle; GeneralAccessorySequence = copy.GeneralAccessorySequence; IonControlPointDeliverySequence = copy.IonControlPointDeliverySequence; + MachineSpecificTreatmentTerminationCodeSequence = copy.MachineSpecificTreatmentTerminationCodeSequence; ModulatedScanModeType = copy.ModulatedScanModeType; NumberOfBlocks = copy.NumberOfBlocks; NumberOfBoli = copy.NumberOfBoli; @@ -174,6 +182,7 @@ DRTTreatmentSessionIonBeamSequence::Item &DRTTreatmentSessionIonBeamSequence::It PatientSupportAccessoryCode = copy.PatientSupportAccessoryCode; PatientSupportID = copy.PatientSupportID; PatientSupportType = copy.PatientSupportType; + RTTreatmentTerminationReasonCodeSequence = copy.RTTreatmentTerminationReasonCodeSequence; RadiationAtomicNumber = copy.RadiationAtomicNumber; RadiationChargeState = copy.RadiationChargeState; RadiationMassNumber = copy.RadiationMassNumber; @@ -197,7 +206,7 @@ DRTTreatmentSessionIonBeamSequence::Item &DRTTreatmentSessionIonBeamSequence::It SpecifiedSecondaryMeterset = copy.SpecifiedSecondaryMeterset; SpecifiedTreatmentTime = copy.SpecifiedTreatmentTime; TreatmentDeliveryType = copy.TreatmentDeliveryType; - TreatmentTerminationCode = copy.TreatmentTerminationCode; + TreatmentTerminationDescription = copy.TreatmentTerminationDescription; TreatmentTerminationStatus = copy.TreatmentTerminationStatus; TreatmentVerificationStatus = copy.TreatmentVerificationStatus; } @@ -212,6 +221,7 @@ void DRTTreatmentSessionIonBeamSequence::Item::clear() /* clear all DICOM attributes */ ReferencedBeamNumber.clear(); BeamName.clear(); + EntityLongLabel.clear(); BeamDescription.clear(); BeamType.clear(); RadiationType.clear(); @@ -252,7 +262,9 @@ void DRTTreatmentSessionIonBeamSequence::Item::clear() CurrentFractionNumber.clear(); TreatmentDeliveryType.clear(); TreatmentTerminationStatus.clear(); - TreatmentTerminationCode.clear(); + RTTreatmentTerminationReasonCodeSequence.clear(); + MachineSpecificTreatmentTerminationCodeSequence.clear(); + TreatmentTerminationDescription.clear(); TreatmentVerificationStatus.clear(); SpecifiedPrimaryMeterset.clear(); SpecifiedSecondaryMeterset.clear(); @@ -271,6 +283,7 @@ OFBool DRTTreatmentSessionIonBeamSequence::Item::isEmpty() { return ReferencedBeamNumber.isEmpty() && BeamName.isEmpty() && + EntityLongLabel.isEmpty() && BeamDescription.isEmpty() && BeamType.isEmpty() && RadiationType.isEmpty() && @@ -311,7 +324,9 @@ OFBool DRTTreatmentSessionIonBeamSequence::Item::isEmpty() CurrentFractionNumber.isEmpty() && TreatmentDeliveryType.isEmpty() && TreatmentTerminationStatus.isEmpty() && - TreatmentTerminationCode.isEmpty() && + RTTreatmentTerminationReasonCodeSequence.isEmpty() && + MachineSpecificTreatmentTerminationCodeSequence.isEmpty() && + TreatmentTerminationDescription.isEmpty() && TreatmentVerificationStatus.isEmpty() && SpecifiedPrimaryMeterset.isEmpty() && SpecifiedSecondaryMeterset.isEmpty() && @@ -340,6 +355,7 @@ OFCondition DRTTreatmentSessionIonBeamSequence::Item::read(DcmItem &item) clear(); getAndCheckElementFromDataset(item, ReferencedBeamNumber, "1", "1", "TreatmentSessionIonBeamSequence"); getAndCheckElementFromDataset(item, BeamName, "1", "1", "TreatmentSessionIonBeamSequence"); + getAndCheckElementFromDataset(item, EntityLongLabel, "1", "3", "TreatmentSessionIonBeamSequence"); getAndCheckElementFromDataset(item, BeamDescription, "1", "3", "TreatmentSessionIonBeamSequence"); getAndCheckElementFromDataset(item, BeamType, "1", "1", "TreatmentSessionIonBeamSequence"); getAndCheckElementFromDataset(item, RadiationType, "1", "1", "TreatmentSessionIonBeamSequence"); @@ -380,7 +396,9 @@ OFCondition DRTTreatmentSessionIonBeamSequence::Item::read(DcmItem &item) getAndCheckElementFromDataset(item, CurrentFractionNumber, "1", "2", "TreatmentSessionIonBeamSequence"); getAndCheckElementFromDataset(item, TreatmentDeliveryType, "1", "2", "TreatmentSessionIonBeamSequence"); getAndCheckElementFromDataset(item, TreatmentTerminationStatus, "1", "1", "TreatmentSessionIonBeamSequence"); - getAndCheckElementFromDataset(item, TreatmentTerminationCode, "1", "3", "TreatmentSessionIonBeamSequence"); + RTTreatmentTerminationReasonCodeSequence.read(item, "1-n", "3", "TreatmentSessionIonBeamSequence"); + MachineSpecificTreatmentTerminationCodeSequence.read(item, "1-n", "3", "TreatmentSessionIonBeamSequence"); + getAndCheckElementFromDataset(item, TreatmentTerminationDescription, "1", "3", "TreatmentSessionIonBeamSequence"); getAndCheckElementFromDataset(item, TreatmentVerificationStatus, "1", "2", "TreatmentSessionIonBeamSequence"); getAndCheckElementFromDataset(item, SpecifiedPrimaryMeterset, "1", "3", "TreatmentSessionIonBeamSequence"); getAndCheckElementFromDataset(item, SpecifiedSecondaryMeterset, "1", "3", "TreatmentSessionIonBeamSequence"); @@ -405,6 +423,7 @@ OFCondition DRTTreatmentSessionIonBeamSequence::Item::write(DcmItem &item) result = EC_Normal; addElementToDataset(result, item, new DcmIntegerString(ReferencedBeamNumber), "1", "1", "TreatmentSessionIonBeamSequence"); addElementToDataset(result, item, new DcmLongString(BeamName), "1", "1", "TreatmentSessionIonBeamSequence"); + addElementToDataset(result, item, new DcmLongString(EntityLongLabel), "1", "3", "TreatmentSessionIonBeamSequence"); addElementToDataset(result, item, new DcmShortText(BeamDescription), "1", "3", "TreatmentSessionIonBeamSequence"); addElementToDataset(result, item, new DcmCodeString(BeamType), "1", "1", "TreatmentSessionIonBeamSequence"); addElementToDataset(result, item, new DcmCodeString(RadiationType), "1", "1", "TreatmentSessionIonBeamSequence"); @@ -445,7 +464,9 @@ OFCondition DRTTreatmentSessionIonBeamSequence::Item::write(DcmItem &item) addElementToDataset(result, item, new DcmIntegerString(CurrentFractionNumber), "1", "2", "TreatmentSessionIonBeamSequence"); addElementToDataset(result, item, new DcmCodeString(TreatmentDeliveryType), "1", "2", "TreatmentSessionIonBeamSequence"); addElementToDataset(result, item, new DcmCodeString(TreatmentTerminationStatus), "1", "1", "TreatmentSessionIonBeamSequence"); - addElementToDataset(result, item, new DcmShortString(TreatmentTerminationCode), "1", "3", "TreatmentSessionIonBeamSequence"); + if (result.good()) result = RTTreatmentTerminationReasonCodeSequence.write(item, "1-n", "3", "TreatmentSessionIonBeamSequence"); + if (result.good()) result = MachineSpecificTreatmentTerminationCodeSequence.write(item, "1-n", "3", "TreatmentSessionIonBeamSequence"); + addElementToDataset(result, item, new DcmShortText(TreatmentTerminationDescription), "1", "3", "TreatmentSessionIonBeamSequence"); addElementToDataset(result, item, new DcmCodeString(TreatmentVerificationStatus), "1", "2", "TreatmentSessionIonBeamSequence"); addElementToDataset(result, item, new DcmDecimalString(SpecifiedPrimaryMeterset), "1", "3", "TreatmentSessionIonBeamSequence"); addElementToDataset(result, item, new DcmDecimalString(SpecifiedSecondaryMeterset), "1", "3", "TreatmentSessionIonBeamSequence"); @@ -560,6 +581,15 @@ OFCondition DRTTreatmentSessionIonBeamSequence::Item::getDeliveredTreatmentTime( } +OFCondition DRTTreatmentSessionIonBeamSequence::Item::getEntityLongLabel(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(EntityLongLabel, value, pos); +} + + OFCondition DRTTreatmentSessionIonBeamSequence::Item::getFixationEye(OFString &value, const signed long pos) const { if (EmptyDefaultItem) @@ -947,12 +977,12 @@ OFCondition DRTTreatmentSessionIonBeamSequence::Item::getTreatmentDeliveryType(O } -OFCondition DRTTreatmentSessionIonBeamSequence::Item::getTreatmentTerminationCode(OFString &value, const signed long pos) const +OFCondition DRTTreatmentSessionIonBeamSequence::Item::getTreatmentTerminationDescription(OFString &value, const signed long pos) const { if (EmptyDefaultItem) return EC_IllegalCall; else - return getStringValueFromElement(TreatmentTerminationCode, value, pos); + return getStringValueFromElement(TreatmentTerminationDescription, value, pos); } @@ -1065,6 +1095,19 @@ OFCondition DRTTreatmentSessionIonBeamSequence::Item::setDeliveredTreatmentTime( } +OFCondition DRTTreatmentSessionIonBeamSequence::Item::setEntityLongLabel(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = EntityLongLabel.putOFStringArray(value); + } + return result; +} + + OFCondition DRTTreatmentSessionIonBeamSequence::Item::setFixationEye(const OFString &value, const OFBool check) { OFCondition result = EC_IllegalCall; @@ -1404,14 +1447,14 @@ OFCondition DRTTreatmentSessionIonBeamSequence::Item::setTreatmentDeliveryType(c } -OFCondition DRTTreatmentSessionIonBeamSequence::Item::setTreatmentTerminationCode(const OFString &value, const OFBool check) +OFCondition DRTTreatmentSessionIonBeamSequence::Item::setTreatmentTerminationDescription(const OFString &value, const OFBool check) { OFCondition result = EC_IllegalCall; if (!EmptyDefaultItem) { - result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal; if (result.good()) - result = TreatmentTerminationCode.putOFStringArray(value); + result = TreatmentTerminationDescription.putOFStringArray(value); } return result; } @@ -1567,10 +1610,12 @@ OFCondition DRTTreatmentSessionIonBeamSequence::gotoFirstItem() OFCondition DRTTreatmentSessionIonBeamSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drttsmds.cc b/dcmrt/libsrc/drttsmds.cc index f83deb73..0e438947 100644 --- a/dcmrt/libsrc/drttsmds.cc +++ b/dcmrt/libsrc/drttsmds.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTTreatmentSummaryMeasuredDoseReferenceSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -319,10 +319,12 @@ OFCondition DRTTreatmentSummaryMeasuredDoseReferenceSequence::gotoFirstItem() OFCondition DRTTreatmentSummaryMeasuredDoseReferenceSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtttrcs.cc b/dcmrt/libsrc/drtttrcs.cc new file mode 100644 index 00000000..096d1085 --- /dev/null +++ b/dcmrt/libsrc/drtttrcs.cc @@ -0,0 +1,959 @@ +/* + * + * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany + * All rights reserved. See COPYRIGHT file for details. + * + * Source file for class DRTRTTreatmentTerminationReasonCodeSequence + * + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 + * + */ + + +#include "dcmtk/config/osconfig.h" // make sure OS specific configuration is included first + +#include "dcmtk/dcmrt/seq/drtttrcs.h" + + +// --- item class --- + +DRTRTTreatmentTerminationReasonCodeSequence::Item::Item(const OFBool emptyDefaultItem) + : EmptyDefaultItem(emptyDefaultItem), + CodeMeaning(DCM_CodeMeaning), + CodeValue(DCM_CodeValue), + CodingSchemeDesignator(DCM_CodingSchemeDesignator), + CodingSchemeVersion(DCM_CodingSchemeVersion), + ContextGroupExtensionCreatorUID(DCM_ContextGroupExtensionCreatorUID), + ContextGroupExtensionFlag(DCM_ContextGroupExtensionFlag), + ContextGroupLocalVersion(DCM_ContextGroupLocalVersion), + ContextGroupVersion(DCM_ContextGroupVersion), + ContextIdentifier(DCM_ContextIdentifier), + ContextUID(DCM_ContextUID), + EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/), + LongCodeValue(DCM_LongCodeValue), + MappingResource(DCM_MappingResource), + MappingResourceName(DCM_MappingResourceName), + MappingResourceUID(DCM_MappingResourceUID), + URNCodeValue(DCM_URNCodeValue) +{ +} + + +DRTRTTreatmentTerminationReasonCodeSequence::Item::Item(const Item ©) + : EmptyDefaultItem(copy.EmptyDefaultItem), + CodeMeaning(copy.CodeMeaning), + CodeValue(copy.CodeValue), + CodingSchemeDesignator(copy.CodingSchemeDesignator), + CodingSchemeVersion(copy.CodingSchemeVersion), + ContextGroupExtensionCreatorUID(copy.ContextGroupExtensionCreatorUID), + ContextGroupExtensionFlag(copy.ContextGroupExtensionFlag), + ContextGroupLocalVersion(copy.ContextGroupLocalVersion), + ContextGroupVersion(copy.ContextGroupVersion), + ContextIdentifier(copy.ContextIdentifier), + ContextUID(copy.ContextUID), + EquivalentCodeSequence(copy.EquivalentCodeSequence), + LongCodeValue(copy.LongCodeValue), + MappingResource(copy.MappingResource), + MappingResourceName(copy.MappingResourceName), + MappingResourceUID(copy.MappingResourceUID), + URNCodeValue(copy.URNCodeValue) +{ +} + + +DRTRTTreatmentTerminationReasonCodeSequence::Item::~Item() +{ +} + + +DRTRTTreatmentTerminationReasonCodeSequence::Item &DRTRTTreatmentTerminationReasonCodeSequence::Item::operator=(const Item ©) +{ + if (this != ©) + { + EmptyDefaultItem = copy.EmptyDefaultItem; + CodeMeaning = copy.CodeMeaning; + CodeValue = copy.CodeValue; + CodingSchemeDesignator = copy.CodingSchemeDesignator; + CodingSchemeVersion = copy.CodingSchemeVersion; + ContextGroupExtensionCreatorUID = copy.ContextGroupExtensionCreatorUID; + ContextGroupExtensionFlag = copy.ContextGroupExtensionFlag; + ContextGroupLocalVersion = copy.ContextGroupLocalVersion; + ContextGroupVersion = copy.ContextGroupVersion; + ContextIdentifier = copy.ContextIdentifier; + ContextUID = copy.ContextUID; + EquivalentCodeSequence = copy.EquivalentCodeSequence; + LongCodeValue = copy.LongCodeValue; + MappingResource = copy.MappingResource; + MappingResourceName = copy.MappingResourceName; + MappingResourceUID = copy.MappingResourceUID; + URNCodeValue = copy.URNCodeValue; + } + return *this; +} + + +void DRTRTTreatmentTerminationReasonCodeSequence::Item::clear() +{ + if (!EmptyDefaultItem) + { + /* clear all DICOM attributes */ + CodeValue.clear(); + CodingSchemeDesignator.clear(); + CodingSchemeVersion.clear(); + CodeMeaning.clear(); + LongCodeValue.clear(); + URNCodeValue.clear(); + EquivalentCodeSequence.clear(); + ContextIdentifier.clear(); + ContextUID.clear(); + MappingResource.clear(); + MappingResourceUID.clear(); + MappingResourceName.clear(); + ContextGroupVersion.clear(); + ContextGroupExtensionFlag.clear(); + ContextGroupLocalVersion.clear(); + ContextGroupExtensionCreatorUID.clear(); + } +} + + +OFBool DRTRTTreatmentTerminationReasonCodeSequence::Item::isEmpty() +{ + return CodeValue.isEmpty() && + CodingSchemeDesignator.isEmpty() && + CodingSchemeVersion.isEmpty() && + CodeMeaning.isEmpty() && + LongCodeValue.isEmpty() && + URNCodeValue.isEmpty() && + EquivalentCodeSequence.isEmpty() && + ContextIdentifier.isEmpty() && + ContextUID.isEmpty() && + MappingResource.isEmpty() && + MappingResourceUID.isEmpty() && + MappingResourceName.isEmpty() && + ContextGroupVersion.isEmpty() && + ContextGroupExtensionFlag.isEmpty() && + ContextGroupLocalVersion.isEmpty() && + ContextGroupExtensionCreatorUID.isEmpty(); +} + + +OFBool DRTRTTreatmentTerminationReasonCodeSequence::Item::isValid() const +{ + return !EmptyDefaultItem; +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::read(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + /* re-initialize object */ + clear(); + getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "RTTreatmentTerminationReasonCodeSequence"); + getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "RTTreatmentTerminationReasonCodeSequence"); + getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "RTTreatmentTerminationReasonCodeSequence"); + getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "RTTreatmentTerminationReasonCodeSequence"); + getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "RTTreatmentTerminationReasonCodeSequence"); + getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "RTTreatmentTerminationReasonCodeSequence"); + EquivalentCodeSequence.read(item, "1-n", "3", "RTTreatmentTerminationReasonCodeSequence"); + getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "RTTreatmentTerminationReasonCodeSequence"); + getAndCheckElementFromDataset(item, ContextUID, "1", "3", "RTTreatmentTerminationReasonCodeSequence"); + getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "RTTreatmentTerminationReasonCodeSequence"); + getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "RTTreatmentTerminationReasonCodeSequence"); + getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "RTTreatmentTerminationReasonCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "RTTreatmentTerminationReasonCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "RTTreatmentTerminationReasonCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "RTTreatmentTerminationReasonCodeSequence"); + getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "RTTreatmentTerminationReasonCodeSequence"); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::write(DcmItem &item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = EC_Normal; + addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "RTTreatmentTerminationReasonCodeSequence"); + addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "RTTreatmentTerminationReasonCodeSequence"); + addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "RTTreatmentTerminationReasonCodeSequence"); + addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "RTTreatmentTerminationReasonCodeSequence"); + addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "RTTreatmentTerminationReasonCodeSequence"); + addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "RTTreatmentTerminationReasonCodeSequence"); + if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "RTTreatmentTerminationReasonCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "RTTreatmentTerminationReasonCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "RTTreatmentTerminationReasonCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "RTTreatmentTerminationReasonCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "RTTreatmentTerminationReasonCodeSequence"); + addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "RTTreatmentTerminationReasonCodeSequence"); + addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "RTTreatmentTerminationReasonCodeSequence"); + addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "RTTreatmentTerminationReasonCodeSequence"); + addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "RTTreatmentTerminationReasonCodeSequence"); + addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "RTTreatmentTerminationReasonCodeSequence"); + } + return result; +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodeMeaning, value, pos); +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::getCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodeValue, value, pos); +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodingSchemeDesignator, value, pos); +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(CodingSchemeVersion, value, pos); +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupExtensionCreatorUID, value, pos); +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupExtensionFlag, value, pos); +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupLocalVersion, value, pos); +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextGroupVersion, value, pos); +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextIdentifier, value, pos); +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::getContextUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(ContextUID, value, pos); +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(LongCodeValue, value, pos); +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResource, value, pos); +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResourceName, value, pos); +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(MappingResourceUID, value, pos); +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const +{ + if (EmptyDefaultItem) + return EC_IllegalCall; + else + return getStringValueFromElement(URNCodeValue, value, pos); +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodeMeaning.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::setCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodeValue.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodingSchemeDesignator.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = CodingSchemeVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupExtensionCreatorUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupExtensionFlag.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupLocalVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextGroupVersion.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::setContextIdentifier(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextIdentifier.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::setContextUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = ContextUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = LongCodeValue.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResource.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResourceName.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal; + if (result.good()) + result = MappingResourceUID.putOFStringArray(value); + } + return result; +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultItem) + { + result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal; + if (result.good()) + result = URNCodeValue.putOFStringArray(value); + } + return result; +} + + +// --- sequence class --- + +DRTRTTreatmentTerminationReasonCodeSequence::DRTRTTreatmentTerminationReasonCodeSequence(const OFBool emptyDefaultSequence) + : EmptyDefaultSequence(emptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + CurrentItem = SequenceOfItems.end(); +} + + +DRTRTTreatmentTerminationReasonCodeSequence::DRTRTTreatmentTerminationReasonCodeSequence(const DRTRTTreatmentTerminationReasonCodeSequence ©) + : EmptyDefaultSequence(copy.EmptyDefaultSequence), + SequenceOfItems(), + CurrentItem(), + EmptyItem(OFTrue /*emptyDefaultItem*/) +{ + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); +} + + +DRTRTTreatmentTerminationReasonCodeSequence &DRTRTTreatmentTerminationReasonCodeSequence::operator=(const DRTRTTreatmentTerminationReasonCodeSequence ©) +{ + if (this != ©) + { + clear(); + EmptyDefaultSequence = copy.EmptyDefaultSequence; + /* create a copy of the internal sequence of items */ + Item *item = NULL; + OFListConstIterator(Item *) current = copy.SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = copy.SequenceOfItems.end(); + while (current != last) + { + item = new Item(**current); + if (item != NULL) + { + SequenceOfItems.push_back(item); + } else { + /* memory exhausted, there is nothing we can do about it */ + break; + } + ++current; + } + CurrentItem = SequenceOfItems.begin(); + } + return *this; +} + + +DRTRTTreatmentTerminationReasonCodeSequence::~DRTRTTreatmentTerminationReasonCodeSequence() +{ + clear(); +} + + +void DRTRTTreatmentTerminationReasonCodeSequence::clear() +{ + if (!EmptyDefaultSequence) + { + CurrentItem = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* delete all items and free memory */ + while (CurrentItem != last) + { + delete (*CurrentItem); + CurrentItem = SequenceOfItems.erase(CurrentItem); + } + /* make sure that the list is empty */ + SequenceOfItems.clear(); + CurrentItem = SequenceOfItems.end(); + } +} + + +OFBool DRTRTTreatmentTerminationReasonCodeSequence::isEmpty() +{ + return SequenceOfItems.empty(); +} + + +OFBool DRTRTTreatmentTerminationReasonCodeSequence::isValid() const +{ + return !EmptyDefaultSequence; +} + + +size_t DRTRTTreatmentTerminationReasonCodeSequence::getNumberOfItems() const +{ + return SequenceOfItems.size(); +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::gotoFirstItem() +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + CurrentItem = SequenceOfItems.begin(); + result = EC_Normal; + } + return result; +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::gotoNextItem() +{ + OFCondition result = EC_IllegalCall; + if (++CurrentItem != SequenceOfItems.end()) + { + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; + } + return result; +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator) +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const +{ + OFCondition result = EC_IllegalCall; + if (!SequenceOfItems.empty()) + { + size_t idx = num + 1; + iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + while ((--idx > 0) && (iterator != last)) + ++iterator; + /* specified list item found? */ + if ((idx == 0) && (iterator != last)) + result = EC_Normal; + else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::gotoItem(const size_t num) +{ + return gotoItem(num, CurrentItem); +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::getCurrentItem(Item *&item) const +{ + OFCondition result = EC_IllegalCall; + if (CurrentItem != SequenceOfItems.end()) + { + item = *CurrentItem; + result = EC_Normal; + } + return result; +} + + +DRTRTTreatmentTerminationReasonCodeSequence::Item &DRTRTTreatmentTerminationReasonCodeSequence::getCurrentItem() +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +const DRTRTTreatmentTerminationReasonCodeSequence::Item &DRTRTTreatmentTerminationReasonCodeSequence::getCurrentItem() const +{ + if (CurrentItem != SequenceOfItems.end()) + return **CurrentItem; + else + return EmptyItem; +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::getItem(const size_t num, Item *&item) +{ + OFListIterator(Item *) iterator; + OFCondition result = gotoItem(num, iterator); + if (result.good()) + item = *iterator; + return result; +} + + +DRTRTTreatmentTerminationReasonCodeSequence::Item &DRTRTTreatmentTerminationReasonCodeSequence::getItem(const size_t num) +{ + OFListIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +const DRTRTTreatmentTerminationReasonCodeSequence::Item &DRTRTTreatmentTerminationReasonCodeSequence::getItem(const size_t num) const +{ + OFListConstIterator(Item *) iterator; + if (gotoItem(num, iterator).good()) + return **iterator; + else + return EmptyItem; +} + + +DRTRTTreatmentTerminationReasonCodeSequence::Item &DRTRTTreatmentTerminationReasonCodeSequence::operator[](const size_t num) +{ + return getItem(num); +} + + +const DRTRTTreatmentTerminationReasonCodeSequence::Item &DRTRTTreatmentTerminationReasonCodeSequence::operator[](const size_t num) const +{ + return getItem(num); +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::addItem(Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.push_back(item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } + return result; +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::insertItem(const size_t pos, Item *&item) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + result = gotoItem(pos, iterator); + if (result.good()) + { + item = new Item(); + if (item != NULL) + { + SequenceOfItems.insert(iterator, 1, item); + result = EC_Normal; + } else + result = EC_MemoryExhausted; + } else + result = addItem(item); + } + return result; +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::removeItem(const size_t pos) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + OFListIterator(Item *) iterator; + if (gotoItem(pos, iterator).good()) + { + delete *iterator; + iterator = SequenceOfItems.erase(iterator); + result = EC_Normal; + } else + result = EC_IllegalParameter; + } + return result; +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::read(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + /* re-initialize object */ + clear(); + /* retrieve sequence element from dataset */ + DcmSequenceOfItems *sequence; + result = dataset.findAndGetSequence(DCM_RTTreatmentTerminationReasonCodeSequence, sequence); + if (sequence != NULL) + { + if (checkElementValue(*sequence, card, type, result, moduleName)) + { + DcmStack stack; + OFBool first = OFTrue; + /* iterate over all sequence items */ + while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good()) + { + DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top()); + if (ditem != NULL) + { + Item *item = new Item(); + if (item != NULL) + { + result = item->read(*ditem); + if (result.good()) + { + /* append new item to the end of the list */ + SequenceOfItems.push_back(item); + first = OFFalse; + } + } else + result = EC_MemoryExhausted; + } else + result = EC_CorruptedData; + } + } + } else { + DcmSequenceOfItems element(DCM_RTTreatmentTerminationReasonCodeSequence); + checkElementValue(element, card, type, result, moduleName); + } + } + return result; +} + + +OFCondition DRTRTTreatmentTerminationReasonCodeSequence::write(DcmItem &dataset, + const OFString &card, + const OFString &type, + const char *moduleName) +{ + OFCondition result = EC_IllegalCall; + if (!EmptyDefaultSequence) + { + result = EC_MemoryExhausted; + DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_RTTreatmentTerminationReasonCodeSequence); + if (sequence != NULL) + { + result = EC_Normal; + /* an empty optional sequence is not written */ + if ((type == "2") || !SequenceOfItems.empty()) + { + OFListIterator(Item *) iterator = SequenceOfItems.begin(); + const OFListConstIterator(Item *) last = SequenceOfItems.end(); + /* iterate over all sequence items */ + while (result.good() && (iterator != last)) + { + DcmItem *item = new DcmItem(); + if (item != NULL) + { + /* append new item to the end of the sequence */ + result = sequence->append(item); + if (result.good()) + { + result = (*iterator)->write(*item); + ++iterator; + } else + delete item; + } else + result = EC_MemoryExhausted; + } + if (result.good()) + { + /* insert sequence element into the dataset */ + result = dataset.insert(sequence, OFTrue /*replaceOld*/); + } + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + if (result.good()) + { + /* forget reference to sequence object (avoid deletion below) */ + sequence = NULL; + } + } + else if (type == "1") + { + /* empty type 1 sequence not allowed */ + result = RT_EC_InvalidValue; + if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL)) + checkElementValue(*sequence, card, type, result, moduleName); + } + /* delete sequence (if not inserted into the dataset) */ + delete sequence; + } + } + return result; +} + + +// end of source file diff --git a/dcmrt/libsrc/drttts.cc b/dcmrt/libsrc/drttts.cc index 96af4187..c1bdc9de 100644 --- a/dcmrt/libsrc/drttts.cc +++ b/dcmrt/libsrc/drttts.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTToleranceTableSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -629,10 +629,12 @@ OFCondition DRTToleranceTableSequence::gotoFirstItem() OFCondition DRTToleranceTableSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtudis.cc b/dcmrt/libsrc/drtudis.cc index b6451398..e68a177d 100644 --- a/dcmrt/libsrc/drtudis.cc +++ b/dcmrt/libsrc/drtudis.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTUDISequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -272,10 +272,12 @@ OFCondition DRTUDISequence::gotoFirstItem() OFCondition DRTUDISequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtvls.cc b/dcmrt/libsrc/drtvls.cc index f9b291b5..fedfd744 100644 --- a/dcmrt/libsrc/drtvls.cc +++ b/dcmrt/libsrc/drtvls.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTVOILUTSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -303,10 +303,12 @@ OFCondition DRTVOILUTSequence::gotoFirstItem() OFCondition DRTVOILUTSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtwps.cc b/dcmrt/libsrc/drtwps.cc index fdd3185c..0817ae48 100644 --- a/dcmrt/libsrc/drtwps.cc +++ b/dcmrt/libsrc/drtwps.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTWedgePositionSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -281,10 +281,12 @@ OFCondition DRTWedgePositionSequence::gotoFirstItem() OFCondition DRTWedgePositionSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtwrs.cc b/dcmrt/libsrc/drtwrs.cc index 4c295e98..cbfc9bda 100644 --- a/dcmrt/libsrc/drtwrs.cc +++ b/dcmrt/libsrc/drtwrs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTWADORetrievalSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -243,10 +243,12 @@ OFCondition DRTWADORetrievalSequence::gotoFirstItem() OFCondition DRTWADORetrievalSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtwrsrs.cc b/dcmrt/libsrc/drtwrsrs.cc index e684b681..44e80247 100644 --- a/dcmrt/libsrc/drtwrsrs.cc +++ b/dcmrt/libsrc/drtwrsrs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTWADORSRetrievalSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -243,10 +243,12 @@ OFCondition DRTWADORSRetrievalSequence::gotoFirstItem() OFCondition DRTWADORSRetrievalSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtws.cc b/dcmrt/libsrc/drtws.cc index b3b19da0..de60e5ec 100644 --- a/dcmrt/libsrc/drtws.cc +++ b/dcmrt/libsrc/drtws.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTWedgeSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -529,10 +529,12 @@ OFCondition DRTWedgeSequence::gotoFirstItem() OFCondition DRTWedgeSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/libsrc/drtxrs.cc b/dcmrt/libsrc/drtxrs.cc index ca042bbc..8d06fd73 100644 --- a/dcmrt/libsrc/drtxrs.cc +++ b/dcmrt/libsrc/drtxrs.cc @@ -1,13 +1,13 @@ /* * * Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany - * Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class DRTXDSRetrievalSequence * - * Generated automatically from DICOM PS 3.3-2017e - * File created on 2017-12-05 09:30:54 + * Generated automatically from DICOM PS 3.3-2023b + * File created on 2023-05-19 16:00:57 * */ @@ -272,10 +272,12 @@ OFCondition DRTXDSRetrievalSequence::gotoFirstItem() OFCondition DRTXDSRetrievalSequence::gotoNextItem() { OFCondition result = EC_IllegalCall; - if (CurrentItem != SequenceOfItems.end()) + if (++CurrentItem != SequenceOfItems.end()) { - ++CurrentItem; - result = EC_Normal; + if (*CurrentItem != NULL) + result = EC_Normal; + else + result = EC_CorruptedData; } return result; } diff --git a/dcmrt/tests/Makefile.dep b/dcmrt/tests/Makefile.dep index 5d67f431..c1b7cc67 100644 --- a/dcmrt/tests/Makefile.dep +++ b/dcmrt/tests/Makefile.dep @@ -8,6 +8,10 @@ drttest.o: drttest.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofstream.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ ../../ofstd/include/dcmtk/ofstd/ofstring.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/ofvector.h \ ../../oflog/include/dcmtk/oflog/oflog.h \ ../../oflog/include/dcmtk/oflog/logger.h \ @@ -22,7 +26,6 @@ drttest.o: drttest.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ ../../ofstd/include/dcmtk/ofstd/oftraits.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -52,10 +55,7 @@ drttest.o: drttest.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -118,16 +118,20 @@ drttest.o: drttest.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \ ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ + ../include/dcmtk/dcmrt/seq/drtars.h ../include/dcmtk/dcmrt/seq/drtarms.h \ ../include/dcmtk/dcmrt/seq/drtbrs.h \ ../include/dcmtk/dcmrt/seq/drtbrcss.h \ + ../include/dcmtk/dcmrt/seq/drtcttcs.h \ ../include/dcmtk/dcmrt/seq/drtcsis.h \ ../include/dcmtk/dcmrt/seq/drtcsrs.h \ ../include/dcmtk/dcmrt/seq/drtcctus.h \ ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \ + ../include/dcmtk/dcmrt/seq/drtidcs.h \ ../include/dcmtk/dcmrt/seq/drtpics.h \ ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \ ../include/dcmtk/dcmrt/seq/drtois.h \ ../include/dcmtk/dcmrt/seq/drtporcs.h \ + ../include/dcmtk/dcmrt/seq/drtudis.h \ ../include/dcmtk/dcmrt/seq/drtcsas.h \ ../include/dcmtk/dcmrt/seq/drtdvhs.h \ ../include/dcmtk/dcmrt/seq/drtdvrrs.h \ @@ -145,8 +149,9 @@ drttest.o: drttest.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtiais.h \ ../include/dcmtk/dcmrt/seq/drtiseis.h \ ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \ - ../include/dcmtk/dcmrt/seq/drtmls.h ../include/dcmtk/dcmrt/seq/drtoas.h \ - ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtopis.h \ + ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \ + ../include/dcmtk/dcmrt/seq/drtnmas.h \ + ../include/dcmtk/dcmrt/seq/drtopis.h \ ../include/dcmtk/dcmrt/seq/drtpbcs.h \ ../include/dcmtk/dcmrt/seq/drtpsics.h \ ../include/dcmtk/dcmrt/seq/drtpscs.h \ @@ -158,19 +163,22 @@ drttest.o: drttest.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtrsos.h \ ../include/dcmtk/dcmrt/seq/drtporis.h \ ../include/dcmtk/dcmrt/seq/drtprsis.h \ - ../include/dcmtk/dcmrt/seq/drtpsss.h \ + ../include/dcmtk/dcmrt/seq/drtplos.h \ + ../include/dcmtk/dcmrt/seq/drtpros.h \ + ../include/dcmtk/dcmrt/seq/drtrims.h \ + ../include/dcmtk/dcmrt/seq/drtrsss.h \ + ../include/dcmtk/dcmrt/seq/drttscs.h \ + ../include/dcmtk/dcmrt/seq/drtpass.h \ + ../include/dcmtk/dcmrt/seq/drtpasms.h \ ../include/dcmtk/dcmrt/seq/drtpdecs.h \ ../include/dcmtk/dcmrt/seq/drtdias.h \ ../include/dcmtk/dcmrt/seq/drtpdeds.h \ - ../include/dcmtk/dcmrt/seq/drtpcs.h ../include/dcmtk/dcmrt/seq/drtrcs.h \ - ../include/dcmtk/dcmrt/seq/drtcs.h ../include/dcmtk/dcmrt/seq/drtcis.h \ - ../include/dcmtk/dcmrt/seq/drtrdros.h \ + ../include/dcmtk/dcmrt/seq/drtpcs.h \ ../include/dcmtk/dcmrt/seq/drtrwvms.h \ ../include/dcmtk/dcmrt/seq/drtqds.h \ ../include/dcmtk/dcmrt/seq/drtrppcs.h \ - ../include/dcmtk/dcmrt/seq/drtrfors.h \ - ../include/dcmtk/dcmrt/seq/drtrsts.h \ - ../include/dcmtk/dcmrt/seq/drtrses.h ../include/dcmtk/dcmrt/seq/drtris.h \ + ../include/dcmtk/dcmrt/seq/drtrvcs.h \ + ../include/dcmtk/dcmrt/seq/drtrdps.h ../include/dcmtk/dcmrt/seq/drtris.h \ ../include/dcmtk/dcmrt/seq/drtrpphs.h \ ../include/dcmtk/dcmrt/seq/drtdimrs.h \ ../include/dcmtk/dcmrt/seq/drtdirs.h \ @@ -178,15 +186,15 @@ drttest.o: drttest.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \ ../include/dcmtk/dcmrt/seq/drtrps.h \ ../include/dcmtk/dcmrt/seq/drtrppss.h \ - ../include/dcmtk/dcmrt/seq/drtrrtps.h \ + ../include/dcmtk/dcmrt/seq/drtrpprs.h \ + ../include/dcmtk/dcmrt/seq/drtrtps1.h \ ../include/dcmtk/dcmrt/seq/drtrfgs.h \ - ../include/dcmtk/dcmrt/seq/drtrbs2.h \ + ../include/dcmtk/dcmrt/seq/drtrbs1.h \ ../include/dcmtk/dcmrt/seq/drtrcps.h \ - ../include/dcmtk/dcmrt/seq/drtrbas2.h \ + ../include/dcmtk/dcmrt/seq/drtrbas1.h \ ../include/dcmtk/dcmrt/seq/drtrsers.h \ - ../include/dcmtk/dcmrt/seq/drtrsrs.h \ - ../include/dcmtk/dcmrt/seq/drtrsss.h ../include/dcmtk/dcmrt/seq/drtrss.h \ - ../include/dcmtk/dcmrt/seq/drtrtrs2.h \ + ../include/dcmtk/dcmrt/seq/drtrsrs.h ../include/dcmtk/dcmrt/seq/drtrss.h \ + ../include/dcmtk/dcmrt/seq/drtrtrs1.h \ ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \ ../include/dcmtk/dcmrt/seq/drtrrpcs.h \ ../include/dcmtk/dcmrt/seq/drtrpcs.h \ @@ -196,48 +204,61 @@ drttest.o: drttest.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtspgis.h \ ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \ ../include/dcmtk/dcmrt/seq/drtssrcs.h \ - ../include/dcmtk/dcmrt/seq/drtssrs.h \ - ../include/dcmtk/dcmrt/seq/drtscris.h \ - ../include/dcmtk/dcmrt/seq/drtudis.h ../include/dcmtk/dcmrt/drtimage.h \ + ../include/dcmtk/dcmrt/seq/drtscris.h ../include/dcmtk/dcmrt/drtimage.h \ ../include/dcmtk/dcmrt/seq/drtcbars.h \ ../include/dcmtk/dcmrt/seq/drtads.h ../include/dcmtk/dcmrt/seq/drtbas.h \ - ../include/dcmtk/dcmrt/seq/drtds.h ../include/dcmtk/dcmrt/seq/drtes.h \ - ../include/dcmtk/dcmrt/seq/drtas5.h ../include/dcmtk/dcmrt/seq/drtags.h \ - ../include/dcmtk/dcmrt/seq/drtblds5.h \ - ../include/dcmtk/dcmrt/seq/drtbl5.h ../include/dcmtk/dcmrt/seq/drtgas.h \ + ../include/dcmtk/dcmrt/seq/drtds.h ../include/dcmtk/dcmrt/seq/drteblds.h \ + ../include/dcmtk/dcmrt/seq/drtdtcs.h \ + ../include/dcmtk/dcmrt/seq/drtfbdds.h \ + ../include/dcmtk/dcmrt/seq/drtpbdds.h \ + ../include/dcmtk/dcmrt/seq/drtpbdos.h ../include/dcmtk/dcmrt/seq/drtes.h \ + ../include/dcmtk/dcmrt/seq/drtas2.h ../include/dcmtk/dcmrt/seq/drtags.h \ + ../include/dcmtk/dcmrt/seq/drtblds2.h \ + ../include/dcmtk/dcmrt/seq/drtbl2.h \ + ../include/dcmtk/dcmrt/seq/drteblos.h \ + ../include/dcmtk/dcmrt/seq/drtrbdgs.h \ + ../include/dcmtk/dcmrt/seq/drtgas4.h \ ../include/dcmtk/dcmrt/seq/drtpfms.h ../include/dcmtk/dcmrt/seq/drtfms.h \ + ../include/dcmtk/dcmrt/seq/drtmls.h \ ../include/dcmtk/dcmrt/seq/drtmacds.h \ - ../include/dcmtk/dcmrt/seq/drtcss.h ../include/dcmtk/dcmrt/seq/drtrims.h \ - ../include/dcmtk/dcmrt/seq/drtrrtps5.h \ + ../include/dcmtk/dcmrt/seq/drtcss.h \ + ../include/dcmtk/dcmrt/seq/drtrtps4.h \ ../include/dcmtk/dcmrt/seq/drtsis.h ../include/dcmtk/dcmrt/seq/drtsins.h \ ../include/dcmtk/dcmrt/seq/drtvls.h ../include/dcmtk/dcmrt/drtplan.h \ ../include/dcmtk/dcmrt/seq/drtass.h ../include/dcmtk/dcmrt/seq/drtbads.h \ ../include/dcmtk/dcmrt/seq/drtchs.h ../include/dcmtk/dcmrt/seq/drtbcps.h \ ../include/dcmtk/dcmrt/seq/drtbrdrs.h \ ../include/dcmtk/dcmrt/seq/drtcshs.h \ - ../include/dcmtk/dcmrt/seq/drtrris9.h ../include/dcmtk/dcmrt/seq/drtbs.h \ + ../include/dcmtk/dcmrt/seq/drtrris3.h ../include/dcmtk/dcmrt/seq/drtbs.h \ ../include/dcmtk/dcmrt/seq/drtas1.h \ ../include/dcmtk/dcmrt/seq/drtblds1.h \ - ../include/dcmtk/dcmrt/seq/drtbl2.h ../include/dcmtk/dcmrt/seq/drtcos.h \ + ../include/dcmtk/dcmrt/seq/drtbl1.h ../include/dcmtk/dcmrt/seq/drtcos.h \ ../include/dcmtk/dcmrt/seq/drtcps.h \ ../include/dcmtk/dcmrt/seq/drtbldps.h \ ../include/dcmtk/dcmrt/seq/drtrdrs1.h \ ../include/dcmtk/dcmrt/seq/drtbvcps.h \ ../include/dcmtk/dcmrt/seq/drtrds.h ../include/dcmtk/dcmrt/seq/drtwps.h \ + ../include/dcmtk/dcmrt/seq/drtdfss.h \ + ../include/dcmtk/dcmrt/seq/drtgas2.h \ ../include/dcmtk/dcmrt/seq/drtpvis.h \ ../include/dcmtk/dcmrt/seq/drtrbos1.h \ ../include/dcmtk/dcmrt/seq/drtrris1.h ../include/dcmtk/dcmrt/seq/drtws.h \ ../include/dcmtk/dcmrt/seq/drtdrs.h ../include/dcmtk/dcmrt/seq/drtfgs.h \ - ../include/dcmtk/dcmrt/seq/drtrbs8.h \ - ../include/dcmtk/dcmrt/seq/drtrbas8.h \ - ../include/dcmtk/dcmrt/seq/drtrdrs8.h \ + ../include/dcmtk/dcmrt/seq/drtrbs3.h \ + ../include/dcmtk/dcmrt/seq/drtdccs.h \ + ../include/dcmtk/dcmrt/seq/drtrdcks.h \ + ../include/dcmtk/dcmrt/seq/drtrbas2.h \ + ../include/dcmtk/dcmrt/seq/drtrdrs3.h \ ../include/dcmtk/dcmrt/seq/drtpss.h ../include/dcmtk/dcmrt/seq/drtfds.h \ ../include/dcmtk/dcmrt/seq/drtmss.h ../include/dcmtk/dcmrt/seq/drtrsis.h \ ../include/dcmtk/dcmrt/seq/drtsds.h ../include/dcmtk/dcmrt/seq/drtshds.h \ - ../include/dcmtk/dcmrt/seq/drtrrtps3.h \ - ../include/dcmtk/dcmrt/seq/drtss.h ../include/dcmtk/dcmrt/seq/drttts.h \ + ../include/dcmtk/dcmrt/seq/drtrtps2.h ../include/dcmtk/dcmrt/seq/drtss.h \ + ../include/dcmtk/dcmrt/seq/drttts.h \ ../include/dcmtk/dcmrt/seq/drtbldts.h \ - ../include/dcmtk/dcmrt/seq/drttms9.h ../include/dcmtk/dcmrt/drtstrct.h \ + ../include/dcmtk/dcmrt/seq/drttms1.h ../include/dcmtk/dcmrt/drtstrct.h \ + ../include/dcmtk/dcmrt/seq/drtpsss.h ../include/dcmtk/dcmrt/seq/drtrcs.h \ + ../include/dcmtk/dcmrt/seq/drtcs.h ../include/dcmtk/dcmrt/seq/drtcis.h \ + ../include/dcmtk/dcmrt/seq/drtsppcs.h \ ../include/dcmtk/dcmrt/seq/drtrros.h \ ../include/dcmtk/dcmrt/seq/drtrpps.h \ ../include/dcmtk/dcmrt/seq/drtrecs.h \ @@ -245,11 +266,29 @@ drttest.o: drttest.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtsptcs.h \ ../include/dcmtk/dcmrt/seq/drtrrs.h \ ../include/dcmtk/dcmrt/seq/drtrrros.h \ - ../include/dcmtk/dcmrt/seq/drtspccs.h ../include/dcmtk/dcmrt/drttreat.h \ + ../include/dcmtk/dcmrt/seq/drtspccs.h \ + ../include/dcmtk/dcmrt/seq/drttrccs.h \ + ../include/dcmtk/dcmrt/seq/drttrtcs.h \ + ../include/dcmtk/dcmrt/seq/drtrfors.h \ + ../include/dcmtk/dcmrt/seq/drtrsts.h \ + ../include/dcmtk/dcmrt/seq/drtrses.h \ + ../include/dcmtk/dcmrt/seq/drtssrs.h \ + ../include/dcmtk/dcmrt/seq/drtcvis.h \ + ../include/dcmtk/dcmrt/seq/drtdcvs.h \ + ../include/dcmtk/dcmrt/seq/drtcvdas.h \ + ../include/dcmtk/dcmrt/seq/drtafcs.h \ + ../include/dcmtk/dcmrt/seq/drtancs.h \ + ../include/dcmtk/dcmrt/seq/drtscvs.h \ + ../include/dcmtk/dcmrt/seq/drtcvcss.h \ + ../include/dcmtk/dcmrt/seq/drtrdsis.h \ + ../include/dcmtk/dcmrt/seq/drtecvs.h \ + ../include/dcmtk/dcmrt/seq/drtecvis.h \ + ../include/dcmtk/dcmrt/seq/drtosirs.h \ + ../include/dcmtk/dcmrt/seq/drtrdais.h ../include/dcmtk/dcmrt/drttreat.h \ ../include/dcmtk/dcmrt/seq/drtfgss.h \ ../include/dcmtk/dcmrt/seq/drtfsss.h \ - ../include/dcmtk/dcmrt/seq/drtrrtps4.h \ - ../include/dcmtk/dcmrt/seq/drtrtrs4.h \ + ../include/dcmtk/dcmrt/seq/drtrtps3.h \ + ../include/dcmtk/dcmrt/seq/drtrtrs2.h \ ../include/dcmtk/dcmrt/seq/drttscds.h \ ../include/dcmtk/dcmrt/seq/drttsmds.h tcontour.o: tcontour.cc ../../config/include/dcmtk/config/osconfig.h \ @@ -271,6 +310,10 @@ tcontour.o: tcontour.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/offile.h \ ../../ofstd/include/dcmtk/ofstd/ofstd.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/oflimits.h \ ../../config/include/dcmtk/config/arith.h \ ../../ofstd/include/dcmtk/ofstd/oferror.h \ @@ -290,7 +333,6 @@ tcontour.o: tcontour.cc ../../config/include/dcmtk/config/osconfig.h \ ../../oflog/include/dcmtk/oflog/appender.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -312,10 +354,7 @@ tcontour.o: tcontour.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -380,14 +419,17 @@ tcontour.o: tcontour.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \ ../include/dcmtk/dcmrt/seq/drtbrs.h \ ../include/dcmtk/dcmrt/seq/drtbrcss.h \ + ../include/dcmtk/dcmrt/seq/drtcttcs.h \ ../include/dcmtk/dcmrt/seq/drtcsis.h \ ../include/dcmtk/dcmrt/seq/drtcsrs.h \ ../include/dcmtk/dcmrt/seq/drtcctus.h \ ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \ + ../include/dcmtk/dcmrt/seq/drtidcs.h \ ../include/dcmtk/dcmrt/seq/drtpics.h \ ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \ ../include/dcmtk/dcmrt/seq/drtois.h \ ../include/dcmtk/dcmrt/seq/drtporcs.h \ + ../include/dcmtk/dcmrt/seq/drtudis.h \ ../include/dcmtk/dcmrt/seq/drtcsas.h \ ../include/dcmtk/dcmrt/seq/drtdimcs.h \ ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \ @@ -404,6 +446,7 @@ tcontour.o: tcontour.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtiseis.h \ ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \ ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \ + ../include/dcmtk/dcmrt/seq/drtnmas.h \ ../include/dcmtk/dcmrt/seq/drtopis.h \ ../include/dcmtk/dcmrt/seq/drtpbcs.h \ ../include/dcmtk/dcmrt/seq/drtpsics.h \ @@ -422,7 +465,11 @@ tcontour.o: tcontour.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtpdeds.h \ ../include/dcmtk/dcmrt/seq/drtpcs.h ../include/dcmtk/dcmrt/seq/drtrcs.h \ ../include/dcmtk/dcmrt/seq/drtcs.h ../include/dcmtk/dcmrt/seq/drtcis.h \ - ../include/dcmtk/dcmrt/seq/drtrros.h \ + ../include/dcmtk/dcmrt/seq/drtsppcs.h \ + ../include/dcmtk/dcmrt/seq/drtrros.h ../include/dcmtk/dcmrt/seq/drtars.h \ + ../include/dcmtk/dcmrt/seq/drtarms.h \ + ../include/dcmtk/dcmrt/seq/drtpass.h \ + ../include/dcmtk/dcmrt/seq/drtpasms.h \ ../include/dcmtk/dcmrt/seq/drtrpps.h \ ../include/dcmtk/dcmrt/seq/drtrecs.h \ ../include/dcmtk/dcmrt/seq/drtrics.h \ @@ -430,7 +477,11 @@ tcontour.o: tcontour.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtrrs.h \ ../include/dcmtk/dcmrt/seq/drtrrros.h \ ../include/dcmtk/dcmrt/seq/drtspccs.h \ + ../include/dcmtk/dcmrt/seq/drttrccs.h \ + ../include/dcmtk/dcmrt/seq/drttrtcs.h \ ../include/dcmtk/dcmrt/seq/drtrppcs.h \ + ../include/dcmtk/dcmrt/seq/drtrvcs.h \ + ../include/dcmtk/dcmrt/seq/drtrdps.h \ ../include/dcmtk/dcmrt/seq/drtrfors.h \ ../include/dcmtk/dcmrt/seq/drtrsts.h \ ../include/dcmtk/dcmrt/seq/drtrses.h \ @@ -442,6 +493,7 @@ tcontour.o: tcontour.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \ ../include/dcmtk/dcmrt/seq/drtrps.h \ ../include/dcmtk/dcmrt/seq/drtrppss.h \ + ../include/dcmtk/dcmrt/seq/drtrpprs.h \ ../include/dcmtk/dcmrt/seq/drtrsers.h \ ../include/dcmtk/dcmrt/seq/drtrss.h ../include/dcmtk/dcmrt/seq/drtrpis.h \ ../include/dcmtk/dcmrt/seq/drtras.h \ @@ -455,8 +507,20 @@ tcontour.o: tcontour.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \ ../include/dcmtk/dcmrt/seq/drtssrcs.h \ ../include/dcmtk/dcmrt/seq/drtssrs.h \ - ../include/dcmtk/dcmrt/seq/drtscris.h \ - ../include/dcmtk/dcmrt/seq/drtudis.h + ../include/dcmtk/dcmrt/seq/drtcvis.h \ + ../include/dcmtk/dcmrt/seq/drtdcvs.h \ + ../include/dcmtk/dcmrt/seq/drtcvdas.h \ + ../include/dcmtk/dcmrt/seq/drtafcs.h \ + ../include/dcmtk/dcmrt/seq/drtancs.h \ + ../include/dcmtk/dcmrt/seq/drtscvs.h \ + ../include/dcmtk/dcmrt/seq/drtcvcss.h \ + ../include/dcmtk/dcmrt/seq/drtrdsis.h \ + ../include/dcmtk/dcmrt/seq/drtecvs.h \ + ../include/dcmtk/dcmrt/seq/drtecvis.h \ + ../include/dcmtk/dcmrt/seq/drtosirs.h \ + ../include/dcmtk/dcmrt/seq/drtdfss.h \ + ../include/dcmtk/dcmrt/seq/drtrdais.h \ + ../include/dcmtk/dcmrt/seq/drtscris.h tests.o: tests.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/oftest.h \ ../../ofstd/include/dcmtk/ofstd/ofconapp.h \ @@ -476,6 +540,10 @@ tests.o: tests.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/offile.h \ ../../ofstd/include/dcmtk/ofstd/ofstd.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/oflimits.h \ ../../config/include/dcmtk/config/arith.h \ ../../ofstd/include/dcmtk/ofstd/oferror.h \ @@ -495,7 +563,6 @@ tests.o: tests.cc ../../config/include/dcmtk/config/osconfig.h \ ../../oflog/include/dcmtk/oflog/appender.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -525,6 +592,10 @@ tsearch.o: tsearch.cc ../../config/include/dcmtk/config/osconfig.h \ ../../ofstd/include/dcmtk/ofstd/offile.h \ ../../ofstd/include/dcmtk/ofstd/ofstd.h \ ../../ofstd/include/dcmtk/ofstd/ofcond.h \ + ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ + ../../ofstd/include/dcmtk/ofstd/diag/push.def \ + ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \ + ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../ofstd/include/dcmtk/ofstd/oflimits.h \ ../../config/include/dcmtk/config/arith.h \ ../../ofstd/include/dcmtk/ofstd/oferror.h \ @@ -544,7 +615,6 @@ tsearch.o: tsearch.cc ../../config/include/dcmtk/config/osconfig.h \ ../../oflog/include/dcmtk/oflog/appender.h \ ../../ofstd/include/dcmtk/ofstd/ofmem.h \ ../../ofstd/include/dcmtk/ofstd/ofutil.h \ - ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \ ../../oflog/include/dcmtk/oflog/layout.h \ ../../oflog/include/dcmtk/oflog/streams.h \ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \ @@ -567,10 +637,7 @@ tsearch.o: tsearch.cc ../../config/include/dcmtk/config/osconfig.h \ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \ - ../../ofstd/include/dcmtk/ofstd/ofdiag.h \ - ../../ofstd/include/dcmtk/ofstd/diag/push.def \ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \ - ../../ofstd/include/dcmtk/ofstd/diag/pop.def \ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \ @@ -637,21 +704,33 @@ tsearch.o: tsearch.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtchs.h ../include/dcmtk/dcmrt/seq/drtbcps.h \ ../include/dcmtk/dcmrt/seq/drtbrdrs.h \ ../include/dcmtk/dcmrt/seq/drtcshs.h \ - ../include/dcmtk/dcmrt/seq/drtrris9.h ../include/dcmtk/dcmrt/seq/drtbs.h \ + ../include/dcmtk/dcmrt/seq/drtrris3.h ../include/dcmtk/dcmrt/seq/drtbs.h \ ../include/dcmtk/dcmrt/seq/drtas1.h ../include/dcmtk/dcmrt/seq/drtags.h \ ../include/dcmtk/dcmrt/seq/drtblds1.h \ - ../include/dcmtk/dcmrt/seq/drtbl2.h ../include/dcmtk/dcmrt/seq/drtcos.h \ + ../include/dcmtk/dcmrt/seq/drtbl1.h ../include/dcmtk/dcmrt/seq/drtcos.h \ ../include/dcmtk/dcmrt/seq/drtcps.h \ ../include/dcmtk/dcmrt/seq/drtbldps.h \ + ../include/dcmtk/dcmrt/seq/drteblos.h \ + ../include/dcmtk/dcmrt/seq/drtrbdgs.h \ ../include/dcmtk/dcmrt/seq/drtrdrs1.h \ ../include/dcmtk/dcmrt/seq/drtbvcps.h \ ../include/dcmtk/dcmrt/seq/drtrds.h ../include/dcmtk/dcmrt/seq/drtwps.h \ - ../include/dcmtk/dcmrt/seq/drtgas.h ../include/dcmtk/dcmrt/seq/drtpvis.h \ + ../include/dcmtk/dcmrt/seq/drtdfss.h \ + ../include/dcmtk/dcmrt/seq/drteblds.h \ + ../include/dcmtk/dcmrt/seq/drtdtcs.h \ + ../include/dcmtk/dcmrt/seq/drtfbdds.h \ + ../include/dcmtk/dcmrt/seq/drtpbdds.h \ + ../include/dcmtk/dcmrt/seq/drtpbdos.h \ + ../include/dcmtk/dcmrt/seq/drtudis.h \ + ../include/dcmtk/dcmrt/seq/drtgas2.h \ + ../include/dcmtk/dcmrt/seq/drtidcs.h \ + ../include/dcmtk/dcmrt/seq/drtpvis.h \ ../include/dcmtk/dcmrt/seq/drtpfms.h \ ../include/dcmtk/dcmrt/seq/drtrbos1.h \ ../include/dcmtk/dcmrt/seq/drtrris1.h ../include/dcmtk/dcmrt/seq/drtws.h \ ../include/dcmtk/dcmrt/seq/drtbrs.h \ ../include/dcmtk/dcmrt/seq/drtbrcss.h \ + ../include/dcmtk/dcmrt/seq/drtcttcs.h \ ../include/dcmtk/dcmrt/seq/drtcsis.h \ ../include/dcmtk/dcmrt/seq/drtcsrs.h \ ../include/dcmtk/dcmrt/seq/drtcctus.h \ @@ -665,9 +744,14 @@ tsearch.o: tsearch.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \ ../include/dcmtk/dcmrt/seq/drtdspcs.h \ ../include/dcmtk/dcmrt/seq/drtdrs.h ../include/dcmtk/dcmrt/seq/drteas.h \ - ../include/dcmtk/dcmrt/seq/drtfgs.h ../include/dcmtk/dcmrt/seq/drtrbs8.h \ - ../include/dcmtk/dcmrt/seq/drtrbas8.h \ - ../include/dcmtk/dcmrt/seq/drtrdrs8.h \ + ../include/dcmtk/dcmrt/seq/drtfgs.h ../include/dcmtk/dcmrt/seq/drtrbs3.h \ + ../include/dcmtk/dcmrt/seq/drtdccs.h \ + ../include/dcmtk/dcmrt/seq/drtrdcks.h \ + ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtcncs.h \ + ../include/dcmtk/dcmrt/seq/drtmucs.h \ + ../include/dcmtk/dcmrt/seq/drtrsos.h \ + ../include/dcmtk/dcmrt/seq/drtrbas2.h \ + ../include/dcmtk/dcmrt/seq/drtrdrs3.h \ ../include/dcmtk/dcmrt/seq/drtgms.h ../include/dcmtk/dcmrt/seq/drtgmcs.h \ ../include/dcmtk/dcmrt/seq/drtgpis.h \ ../include/dcmtk/dcmrt/seq/drtipiqs.h \ @@ -679,6 +763,7 @@ tsearch.o: tsearch.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtiseis.h \ ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \ ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \ + ../include/dcmtk/dcmrt/seq/drtnmas.h \ ../include/dcmtk/dcmrt/seq/drtopis.h \ ../include/dcmtk/dcmrt/seq/drtpbcs.h ../include/dcmtk/dcmrt/seq/drtpss.h \ ../include/dcmtk/dcmrt/seq/drtfds.h ../include/dcmtk/dcmrt/seq/drtmss.h \ @@ -687,11 +772,8 @@ tsearch.o: tsearch.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtpsics.h \ ../include/dcmtk/dcmrt/seq/drtpscs.h \ ../include/dcmtk/dcmrt/seq/drtppcs.h \ - ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \ - ../include/dcmtk/dcmrt/seq/drtcncs.h \ + ../include/dcmtk/dcmrt/seq/drtpcxs.h \ ../include/dcmtk/dcmrt/seq/drtcims.h \ - ../include/dcmtk/dcmrt/seq/drtmucs.h \ - ../include/dcmtk/dcmrt/seq/drtrsos.h \ ../include/dcmtk/dcmrt/seq/drtporis.h \ ../include/dcmtk/dcmrt/seq/drtprsis.h \ ../include/dcmtk/dcmrt/seq/drtpdecs.h \ @@ -699,6 +781,8 @@ tsearch.o: tsearch.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtpdeds.h \ ../include/dcmtk/dcmrt/seq/drtpcs.h \ ../include/dcmtk/dcmrt/seq/drtrppcs.h \ + ../include/dcmtk/dcmrt/seq/drtrvcs.h \ + ../include/dcmtk/dcmrt/seq/drtrdps.h \ ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \ ../include/dcmtk/dcmrt/seq/drtrpphs.h \ ../include/dcmtk/dcmrt/seq/drtdimrs.h \ @@ -707,7 +791,8 @@ tsearch.o: tsearch.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \ ../include/dcmtk/dcmrt/seq/drtrps.h \ ../include/dcmtk/dcmrt/seq/drtrppss.h \ - ../include/dcmtk/dcmrt/seq/drtrrtps3.h \ + ../include/dcmtk/dcmrt/seq/drtrpprs.h \ + ../include/dcmtk/dcmrt/seq/drtrtps2.h \ ../include/dcmtk/dcmrt/seq/drtrsers.h \ ../include/dcmtk/dcmrt/seq/drtrsss.h ../include/dcmtk/dcmrt/seq/drtrss.h \ ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \ @@ -723,5 +808,5 @@ tsearch.o: tsearch.cc ../../config/include/dcmtk/config/osconfig.h \ ../include/dcmtk/dcmrt/seq/drtscris.h \ ../include/dcmtk/dcmrt/seq/drttts.h \ ../include/dcmtk/dcmrt/seq/drtbldts.h \ - ../include/dcmtk/dcmrt/seq/drttms9.h \ - ../include/dcmtk/dcmrt/seq/drtudis.h + ../include/dcmtk/dcmrt/seq/drttms1.h \ + ../include/dcmtk/dcmrt/seq/drttscs.h diff --git a/dcmseg/libsrc/segdoc.cc b/dcmseg/libsrc/segdoc.cc index d6f78625..718daf5e 100644 --- a/dcmseg/libsrc/segdoc.cc +++ b/dcmseg/libsrc/segdoc.cc @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015-2022, Open Connections GmbH + * Copyright (C) 2015-2023, Open Connections GmbH * * All rights reserved. See COPYRIGHT file for details. * @@ -1407,8 +1407,7 @@ OFCondition DcmSegmentation::decompress(DcmDataset& dset) // If the original transfer syntax could have been lossy, print warning if (dset.hasRepresentation(EXS_LittleEndianExplicit, NULL)) { - if (xfer.isEncapsulated() && (xfer.getXfer() != EXS_RLELossless) - && (xfer.getXfer() != EXS_DeflatedLittleEndianExplicit)) + if (xfer.isEncapsulated() && (xfer != EXS_RLELossless) && (xfer != EXS_DeflatedLittleEndianExplicit)) { DCMSEG_WARN("Dataset has been compressed using a (possibly) lossy compression scheme (ignored)"); } @@ -1418,7 +1417,7 @@ OFCondition DcmSegmentation::decompress(DcmDataset& dset) else if (xfer.isEncapsulated()) { // RLE compression is fine (truly lossless). Deflated is handled internally by DCMTK. - if (xfer.getXfer() == EXS_RLELossless) + if (xfer == EXS_RLELossless) { DCMSEG_DEBUG("DICOM file is RLE-compressed, converting to uncompressed transfer syntax first"); result = DcmIODUtil::decompress(dset); diff --git a/dcmseg/tests/troundtrip.cc b/dcmseg/tests/troundtrip.cc index 2056b1c7..1c2542dc 100644 --- a/dcmseg/tests/troundtrip.cc +++ b/dcmseg/tests/troundtrip.cc @@ -316,13 +316,11 @@ static void checkConcatenationInstance(size_t numInstance, DcmSegmentation* srcI FunctionalGroups::const_iterator srcShared = srcInstance->getFunctionalGroups().getShared()->begin(); FunctionalGroups::const_iterator cShared = concat->getFunctionalGroups().getShared()->begin(); - size_t numShared = 0; do { OFCHECK(srcShared->second->compare(*cShared->second) == 0); srcShared++; cShared++; - numShared++; } while ((srcShared != srcInstance->getFunctionalGroups().getShared()->end()) && (cShared != concat->getFunctionalGroups().getShared()->end())); OFCHECK((srcShared == srcInstance->getFunctionalGroups().getShared()->end()) diff --git a/dcmsign/apps/dcmsign.cc b/dcmsign/apps/dcmsign.cc index f7067b73..6334a0fe 100644 --- a/dcmsign/apps/dcmsign.cc +++ b/dcmsign/apps/dcmsign.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2000-2021, OFFIS e.V. + * Copyright (C) 2000-2022, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -124,8 +124,8 @@ int main(int argc, char *argv[]) OFCommandLine cmd; cmd.setOptionColumns(LONGCOL, SHORTCOL); cmd.setParamColumn(LONGCOL + SHORTCOL + 4); - cmd.addParam("dcmfile-in", "DICOM input filename to be processed"); - cmd.addParam("dcmfile-out", "DICOM output filename", OFCmdParam::PM_Optional); + cmd.addParam("dcmfile-in", "DICOM input filename to be processed\n(\"-\" for stdin)"); + cmd.addParam("dcmfile-out", "DICOM output filename\n(\"-\" for stdout)", OFCmdParam::PM_Optional); cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2); cmd.addOption("--help", "-h", "print this help text and exit", OFCommandLine::AF_Exclusive); diff --git a/dcmsign/docs/dcmsign.man b/dcmsign/docs/dcmsign.man index 5cd097d1..e5738880 100644 --- a/dcmsign/docs/dcmsign.man +++ b/dcmsign/docs/dcmsign.man @@ -20,19 +20,19 @@ object to an output file (\e dcmfile-out). Five digital signature operations are supported: -\li verification of all signatures in the DICOM file -\li creation of a new digital signature located in the main dataset, -\li creation of a new digital signature in an item of a sequence embedded - within the dataset, -\li removal of a single digital signature from the DICOM file, and -\li removal of all digital signatures from the DICOM file. +- verification of all signatures in the DICOM file +- creation of a new digital signature located in the main dataset, +- creation of a new digital signature in an item of a sequence embedded within + the dataset, +- removal of a single digital signature from the DICOM file, and +- removal of all digital signatures from the DICOM file. \section dcmsign_parameters PARAMETERS \verbatim -dcmfile-in DICOM input filename to be processed +dcmfile-in DICOM input filename to be processed ("-" for stdin) -dcmfile-out DICOM output filename +dcmfile-out DICOM output filename ("-" for stdout) \endverbatim \section dcmsign_options OPTIONS @@ -582,6 +582,6 @@ It is an error if no data dictionary can be loaded. \section dcmsign_copyright COPYRIGHT -Copyright (C) 2000-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 2000-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmsign/libsrc/dcsignat.cc b/dcmsign/libsrc/dcsignat.cc index 9e81a22d..b104ec1e 100644 --- a/dcmsign/libsrc/dcsignat.cc +++ b/dcmsign/libsrc/dcsignat.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2000-2021, OFFIS e.V. + * Copyright (C) 2000-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -49,6 +49,7 @@ #include "dcmtk/dcmsign/sitsfs.h" BEGIN_EXTERN_C +#include #include #include #include @@ -67,6 +68,7 @@ static OSSL_PROVIDER *defaultProvider = NULL; void DcmSignature::initializeLibrary() { + OPENSSL_no_config(); SSL_library_init(); SSL_load_error_strings(); OpenSSL_add_all_algorithms(); @@ -964,7 +966,7 @@ OFCondition DcmSignature::getCurrentMacXferSyntaxName(OFString& str) if ((((DcmElement *)(stack.top()))->getString(uid)).good() && uid) { DcmXfer xf(uid); - if (xf.getXfer() == EXS_Unknown) str=uid; else + if (xf == EXS_Unknown) str=uid; else { str = "="; str.append(xf.getXferName()); diff --git a/dcmsign/libsrc/simaccon.cc b/dcmsign/libsrc/simaccon.cc index 2f2474a2..c3c9f848 100644 --- a/dcmsign/libsrc/simaccon.cc +++ b/dcmsign/libsrc/simaccon.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1998-2019, OFFIS e.V. + * Copyright (C) 1998-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -143,7 +143,7 @@ OFCondition SiMACConstructor::encodeDigitalSignatureItem( { if (element->isSignable()) { - tagkey = element->getTag().getXTag(); + tagkey = element->getTag().getTagKey(); if ((tagkey != DCM_CertificateOfSigner) && (tagkey != DCM_Signature) && (tagkey != DCM_CertifiedTimestampType) && diff --git a/dcmsr/apps/dsr2html.cc b/dcmsr/apps/dsr2html.cc index 5f483d5a..6f03f92b 100644 --- a/dcmsr/apps/dsr2html.cc +++ b/dcmsr/apps/dsr2html.cc @@ -212,7 +212,7 @@ int main(int argc, char *argv[]) cmd.setOptionColumns(LONGCOL, SHORTCOL); cmd.setParamColumn(LONGCOL + SHORTCOL + 4); - cmd.addParam("dsrfile-in", "DICOM SR input filename to be rendered", OFCmdParam::PM_Mandatory); + cmd.addParam("dsrfile-in", "DICOM SR input filename to be rendered\n(\"-\" for stdin)", OFCmdParam::PM_Mandatory); cmd.addParam("htmlfile-out", "HTML/XHTML output filename (default: stdout)", OFCmdParam::PM_Optional); cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2); diff --git a/dcmsr/apps/dsr2xml.cc b/dcmsr/apps/dsr2xml.cc index 7d6f67a7..5d90813d 100644 --- a/dcmsr/apps/dsr2xml.cc +++ b/dcmsr/apps/dsr2xml.cc @@ -212,7 +212,7 @@ int main(int argc, char *argv[]) cmd.setOptionColumns(LONGCOL, SHORTCOL); cmd.setParamColumn(LONGCOL + SHORTCOL + 4); - cmd.addParam("dsrfile-in", "DICOM SR input filename to be converted", OFCmdParam::PM_Mandatory); + cmd.addParam("dsrfile-in", "DICOM SR input filename to be converted\n(\"-\" for stdin)", OFCmdParam::PM_Mandatory); cmd.addParam("xmlfile-out", "XML output filename (default: stdout)", OFCmdParam::PM_Optional); cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2); diff --git a/dcmsr/apps/dsrdump.cc b/dcmsr/apps/dsrdump.cc index e1f3d23d..e2036820 100644 --- a/dcmsr/apps/dsrdump.cc +++ b/dcmsr/apps/dsrdump.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2000-2022, OFFIS e.V. + * Copyright (C) 2000-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -37,10 +37,6 @@ #include "dcmtk/ofstd/ofchrenc.h" /* for OFCharacterEncoding */ #endif -#ifndef HAVE_WINDOWS_H -#define ANSI_ESCAPE_CODES_AVAILABLE -#endif - #define OFFIS_CONSOLE_APPLICATION "dsrdump" static OFLogger dsrdumpLogger = OFLog::getLogger("dcmtk.apps." OFFIS_CONSOLE_APPLICATION); @@ -117,7 +113,7 @@ int main(int argc, char *argv[]) cmd.setOptionColumns(LONGCOL, SHORTCOL); cmd.setParamColumn(LONGCOL + SHORTCOL + 4); - cmd.addParam("dsrfile-in", "DICOM SR input filename to be dumped", OFCmdParam::PM_MultiMandatory); + cmd.addParam("dsrfile-in", "DICOM SR input filename to be dumped\n(\"-\" for stdin)", OFCmdParam::PM_MultiMandatory); cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2); cmd.addOption("--help", "-h", "print this help text and exit", OFCommandLine::AF_Exclusive); @@ -171,11 +167,9 @@ int main(int argc, char *argv[]) cmd.addSubGroup("enhanced encoding mode:"); cmd.addOption("--indicate-enhanced", "+Pe", "indicate that enhanced mode is used for codes"); cmd.addOption("--no-enhanced-mode", "-Pe", "do not indicate enhanced mode (default)"); -#ifdef ANSI_ESCAPE_CODES_AVAILABLE cmd.addSubGroup("color:"); cmd.addOption("--print-color", "+C", "use ANSI escape codes for colored output"); cmd.addOption("--no-color", "-C", "do not use any ANSI escape codes (default)"); -#endif /* evaluate command line */ prepareCmdLineArgs(argc, argv, OFFIS_CONSOLE_APPLICATION); @@ -309,14 +303,12 @@ int main(int argc, char *argv[]) opt_printFlags &= ~DSRTypes::PF_indicateEnhancedEncodingMode; cmd.endOptionBlock(); -#ifdef ANSI_ESCAPE_CODES_AVAILABLE cmd.beginOptionBlock(); if (cmd.findOption("--print-color")) opt_printFlags |= DSRTypes::PF_useANSIEscapeCodes; if (cmd.findOption("--no-color")) opt_printFlags &= ~DSRTypes::PF_useANSIEscapeCodes; cmd.endOptionBlock(); -#endif } /* print resource identifier */ diff --git a/dcmsr/apps/xml2dsr.cc b/dcmsr/apps/xml2dsr.cc index 9863e822..da5d2c29 100644 --- a/dcmsr/apps/xml2dsr.cc +++ b/dcmsr/apps/xml2dsr.cc @@ -94,8 +94,8 @@ int main(int argc, char *argv[]) cmd.setOptionColumns(LONGCOL, SHORTCOL); cmd.setParamColumn(LONGCOL + SHORTCOL + 4); - cmd.addParam("xmlfile-in", "XML input filename to be converted (stdin: \"-\")", OFCmdParam::PM_Mandatory); - cmd.addParam("dsrfile-out", "DICOM SR output filename", OFCmdParam::PM_Mandatory); + cmd.addParam("xmlfile-in", "XML input filename to be converted\n(\"-\" for stdin)", OFCmdParam::PM_Mandatory); + cmd.addParam("dsrfile-out", "DICOM SR output filename\n(\"-\" for stdout)", OFCmdParam::PM_Mandatory); cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2); cmd.addOption("--help", "-h", "print this help text and exit", OFCommandLine::AF_Exclusive); diff --git a/dcmsr/docs/dsr2html.man b/dcmsr/docs/dsr2html.man index 3dfae037..a99c44f0 100644 --- a/dcmsr/docs/dsr2html.man +++ b/dcmsr/docs/dsr2html.man @@ -30,7 +30,7 @@ with a particular transfer syntax. \section dsr2html_parameters PARAMETERS \verbatim -dsrfile-in DICOM SR input filename to be rendered +dsrfile-in DICOM SR input filename to be rendered ("-" for stdin) htmlfile-out HTML/XHTML output filename (default: stdout) \endverbatim @@ -137,16 +137,17 @@ specific character set: check all data elements with string values (default: only PN, LO, LT, SH, ST, UC and UT) - # this option is only used for the mapping to an appropriate - # HTML/XHTML character encoding, but not for the conversion - # to UTF-8 + # this option is only used for the extended check whether + # the Specific Character Set (0008,0005) attribute should be + # present, but not for the conversion of unaffected element + # values to UTF-8 (e.g. element values with a VR of CS) +U8 --convert-to-utf8 convert all element values that are affected by Specific Character Set (0008,0005) to UTF-8 - # requires support from an underlying character encoding library - # (see output of --version on which one is available) + # requires support from an underlying character encoding + # library (see output of --version on which one is available) \endverbatim \subsection dsr2html_output_options output options @@ -358,6 +359,6 @@ It is an error if no data dictionary can be loaded. \section dsr2html_copyright COPYRIGHT -Copyright (C) 2000-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 2000-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmsr/docs/dsr2xml.man b/dcmsr/docs/dsr2xml.man index 668f9248..67d85dbd 100644 --- a/dcmsr/docs/dsr2xml.man +++ b/dcmsr/docs/dsr2xml.man @@ -32,7 +32,7 @@ with a particular transfer syntax. \section dsr2xml_parameters PARAMETERS \verbatim -dsrfile-in DICOM SR input filename to be converted +dsrfile-in DICOM SR input filename to be converted ("-" for stdin) xmlfile-out XML output filename (default: stdout) \endverbatim @@ -134,15 +134,17 @@ specific character set: check all data elements with string values (default: only PN, LO, LT, SH, ST, UC and UT) - # this option is only used for the mapping to an appropriate - # XML character encoding, but not for the conversion to UTF-8 + # this option is only used for the extended check whether + # the Specific Character Set (0008,0005) attribute should be + # present, but not for the conversion of unaffected element + # values to UTF-8 (e.g. element values with a VR of CS) +U8 --convert-to-utf8 convert all element values that are affected by Specific Character Set (0008,0005) to UTF-8 - # requires support from an underlying character encoding library - # (see output of --version on which one is available) + # requires support from an underlying character encoding + # library (see output of --version on which one is available) \endverbatim \subsection dsr2xml_output_options output options @@ -346,6 +348,6 @@ It is an error if no data dictionary can be loaded. \section dsr2xml_copyright COPYRIGHT -Copyright (C) 2000-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 2000-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmsr/docs/dsrdump.man b/dcmsr/docs/dsrdump.man index 655f4010..67fd5eca 100644 --- a/dcmsr/docs/dsrdump.man +++ b/dcmsr/docs/dsrdump.man @@ -30,7 +30,7 @@ with a particular transfer syntax. \section dsrdump_parameters PARAMETERS \verbatim -dsrfile-in DICOM SR input filename to be dumped +dsrfile-in DICOM SR input filename to be dumped ("-" for stdin) \endverbatim \section dsrdump_options OPTIONS @@ -195,12 +195,8 @@ color: +C --print-color use ANSI escape codes for colored output - # not available on Windows systems - -C --no-color do not use any ANSI escape codes (default) - - # not available on Windows systems \endverbatim \section dsrdump_notes NOTES @@ -294,6 +290,6 @@ It is an error if no data dictionary can be loaded. \section dsrdump_copyright COPYRIGHT -Copyright (C) 2000-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 2000-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmsr/docs/xml2dsr.man b/dcmsr/docs/xml2dsr.man index f5f66c75..e2077a6a 100644 --- a/dcmsr/docs/xml2dsr.man +++ b/dcmsr/docs/xml2dsr.man @@ -27,9 +27,9 @@ An appropriate XML file can be created using the \b dsr2xml tool (option \section xml2dsr_parameters PARAMETERS \verbatim -xmlfile-in XML input filename to be converted (stdin: "-") +xmlfile-in XML input filename to be converted ("-" for stdin) -dsrfile-out DICOM SR output filename +dsrfile-out DICOM SR output filename ("-" for stdout) \endverbatim \section xml2dsr_options OPTIONS @@ -311,6 +311,6 @@ It is an error if no data dictionary can be loaded. \section xml2dsr_copyright COPYRIGHT -Copyright (C) 2003-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 2003-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid100.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid100.h index b92f7630..e537a9ed 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid100.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid100.h @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class CID100_QuantitativeDiagnosticImagingProcedure * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:49:58 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:44 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid10013.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid10013.h index 107ac986..ae991542 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid10013.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid10013.h @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class CID10013_CTAcquisitionType * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:50:11 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:57:00 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid10033.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid10033.h index 9abbe5a9..a28bbabf 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid10033.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid10033.h @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class CID10033_CTReconstructionAlgorithm * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:50:12 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:57:01 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid11.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid11.h index 4bfb430f..fc75b5bc 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid11.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid11.h @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class CID11_AdministrationRoute * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:49:56 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:42 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid218.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid218.h index 317903be..151f4235 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid218.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid218.h @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class CID218_QuantitativeImageFeature * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:49:59 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:46 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid244.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid244.h index dabd7625..4fde4b46 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid244.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid244.h @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class CID244_Laterality * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:50:00 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:47 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid247.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid247.h index 74ae0818..f2a7b947 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid247.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid247.h @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class CID247_LateralityLeftRightOnly * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:50:01 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:48 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid29.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid29.h index 322395d0..ecac6c53 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid29.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid29.h @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class CID29_AcquisitionModality * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:49:57 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:43 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid4020.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid4020.h index 48afde06..6b42b5d6 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid4020.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid4020.h @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class CID4020_PETRadionuclide * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:50:01 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:48 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid4021.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid4021.h index f0ca8e26..cd0e0d68 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid4021.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid4021.h @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class CID4021_PETRadiopharmaceutical * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:50:02 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:49 by J. Riesmeier * */ @@ -28,7 +28,7 @@ /** Implementation of DCMR Context Group: * CID 4021 - PET Radiopharmaceutical. - * (type: extensible, version: 20201116) + * (type: extensible, version: 20221201) */ class DCMTK_CMR_EXPORT CID4021_PETRadiopharmaceutical : public DSRContextGroup @@ -134,7 +134,7 @@ class DCMTK_CMR_EXPORT CID4021_PETRadiopharmaceutical Florbetaben_F18, /// (456995000,SCT,"Florbetapir F^18^") Florbetapir_F18, - /// (C000591008,MSH,"Flortaucipir F^18^") + /// (879808000,SCT,"Flortaucipir F^18^") Flortaucipir_F18, /// (126503,DCM,"Flubatine F^18^") Flubatine_F18, @@ -154,8 +154,8 @@ class DCMTK_CMR_EXPORT CID4021_PETRadiopharmaceutical Fluorocholine_F18, /// (35321007,SCT,"Fluorodeoxyglucose F^18^") Fluorodeoxyglucose_F18, - /// (C1831937,UMLS,"Fluoroestradiol (FES) F^18^") - FluoroestradiolFES_F18, + /// (926372005,SCT,"Fluoroestradiol F^18^") + Fluoroestradiol_F18, /// (C1541539,UMLS,"Fluoroetanidazole F^18^") Fluoroetanidazole_F18, /// (5811000122108,SCT,"Fluoro-L-dopa F^18^") @@ -164,8 +164,8 @@ class DCMTK_CMR_EXPORT CID4021_PETRadiopharmaceutical Fluoromethane_F18, /// (422598008,SCT,"Fluoromisonidazole F^18^") Fluoromisonidazole_F18, - /// (C2934038,UMLS,"Fluoropropyl-dihydrotetrabenazine (DTBZ) F^18^") - FluoropropylDihydrotetrabenazineDTBZ_F18, + /// (C2934038,UMLS,"Fluoropropyl-dihydrotetrabenazine F^18^") + FluoropropylDihydrotetrabenazine_F18, /// (126707,DCM,"Fluorotriopride F^18^") Fluorotriopride_F18, /// (425236000,SCT,"Fluorouracil F^18^") @@ -206,10 +206,10 @@ class DCMTK_CMR_EXPORT CID4021_PETRadiopharmaceutical MK6240_F18, /// (126738,DCM,"Mogamulizumab ^89^Zr") Mogamulizumab_89Zr, - /// (126510,DCM,"Monoclonal Antibody (mAb) ^64^Cu") - MonoclonalAntibodymAb_64Cu, - /// (126511,DCM,"Monoclonal Antibody (mAb) ^89^Zr") - MonoclonalAntibodymAb_89Zr, + /// (126510,DCM,"Monoclonal Antibody ^64^Cu") + MonoclonalAntibody_64Cu, + /// (126511,DCM,"Monoclonal Antibody ^89^Zr") + MonoclonalAntibody_89Zr, /// (423249007,SCT,"Monoclonal antibody I^124^") MonoclonalAntibody_I124, /// (126753,DCM,"Nanocolloidal albumin ^89^Zr") @@ -286,14 +286,14 @@ class DCMTK_CMR_EXPORT CID4021_PETRadiopharmaceutical THK5317_F18, /// (C4279748,UMLS,"THK5351 F^18^") THK5351_F18, - /// (129502002,SCT,"Thymidine (FLT) F^18^") - ThymidineFLT_F18, + /// (129502002,SCT,"Thymidine F^18^") + Thymidine_F18, /// (126512,DCM,"Trastuzumab ^89^Zr") Trastuzumab_89Zr, /// (126749,DCM,"TRC105 ^89^Zr") TRC105_89Zr, - /// (C1742831,UMLS,"tyrosine-3-octreotate Ga^68^") - Tyrosine3Octreotate_Ga68, + /// (724025002,SCT,"Dotatate Ga^68^") + Dotatate_Ga68, /// (126739,DCM,"Ublituximab ^89^Zr") Ublituximab_89Zr, /// (C4506788,UMLS,"UCB-J C^11^") diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid4031.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid4031.h index fff04f14..ac6b04e9 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid4031.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid4031.h @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class CID4031_CommonAnatomicRegion * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:50:03 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:50 by J. Riesmeier * */ @@ -28,7 +28,7 @@ /** Implementation of DCMR Context Group: * CID 4031 - Common Anatomic Region. - * (type: extensible, version: 20220922) + * (type: extensible, version: 20221224) */ class DCMTK_CMR_EXPORT CID4031_CommonAnatomicRegion : public DSRContextGroup @@ -198,7 +198,7 @@ class DCMTK_CMR_EXPORT CID4031_CommonAnatomicRegion Pelvis, /// (1231522001,SCT,"Pelvis and lower extremities") PelvisAndLowerExtremities, - /// (113681,DCM,"Phantom") + /// (706342009,SCT,"Phantom") Phantom, /// (41216001,SCT,"Prostate") Prostate, diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid42.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid42.h index 76689152..43d0529a 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid42.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid42.h @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class CID42_NumericValueQualifier * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:49:57 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:44 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid6147.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid6147.h index a0017011..c87ccef1 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid6147.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid6147.h @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class CID6147_ResponseCriteria * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:50:03 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:51 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid7021.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid7021.h index 706fc3d8..cc230ed8 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid7021.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid7021.h @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class CID7021_MeasurementReportDocumentTitle * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:50:04 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:52 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid7181.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid7181.h index 21774be5..616bc138 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid7181.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid7181.h @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class CID7181_AbstractMultiDimensionalImageModelComponentUnit * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:50:05 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:53 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid7445.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid7445.h index 0648a742..84fdafa7 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid7445.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid7445.h @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class CID7445_DeviceParticipatingRole * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:50:06 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:54 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid7452.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid7452.h index f33e21ba..a572d253 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid7452.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid7452.h @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class CID7452_OrganizationalRole * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:50:06 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:55 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid7453.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid7453.h index fe318cfe..3114a80b 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid7453.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid7453.h @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class CID7453_PerformingRole * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:50:07 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:56 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid7464.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid7464.h index 92ba82c9..13d005b4 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid7464.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid7464.h @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class CID7464_GeneralRegionOfInterestMeasurementModifier * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:50:08 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:57 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid7469.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid7469.h index bc011168..0f335205 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid7469.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid7469.h @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class CID7469_GenericIntensityAndSizeMeasurement * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:50:09 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:58 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid7551.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid7551.h index e7ba5e43..c3fd2704 100644 --- a/dcmsr/include/dcmtk/dcmsr/cmr/cid7551.h +++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid7551.h @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file for class CID7551_GenericPurposeOfReferenceToImagesAndCoordinatesInMeasurement * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:50:10 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:59 by J. Riesmeier * */ diff --git a/dcmsr/include/dcmtk/dcmsr/codes/dcm.h b/dcmsr/include/dcmtk/dcmsr/codes/dcm.h index 0ae8168b..c9ebb30c 100644 --- a/dcmsr/include/dcmtk/dcmsr/codes/dcm.h +++ b/dcmsr/include/dcmtk/dcmsr/codes/dcm.h @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file with DICOM Controlled Terminology Code Definitions (Coding Scheme "DCM", Version "01") * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:36:18 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023c + * File created on 2023-07-14 12:40:27 by J. Riesmeier * */ @@ -34,8 +34,8 @@ * code definitions * *--------------------*/ -// total number of codes: 4658 -// - retired: 201 +// total number of codes: 4706 +// - retired: 202 // - no name: 27 // - not unique: 17 @@ -130,6 +130,7 @@ #define CODE_DCM_OphthalmicVisualField DSRBasicCodedEntry("OPV", "DCM", "Ophthalmic Visual Field") #define CODE_DCM_OpticalSurfaceScanner DSRBasicCodedEntry("OSS", "DCM", "Optical Surface Scanner") #define CODE_DCM_OtherModality DSRBasicCodedEntry("OT", "DCM", "Other Modality") +#define CODE_DCM_Photoacoustic DSRBasicCodedEntry("PA", "DCM", "Photoacoustic") #define CODE_DCM_Plan DSRBasicCodedEntry("PLAN", "DCM", "Plan") #define CODE_DCM_PositionSensor DSRBasicCodedEntry("POS", "DCM", "Position Sensor") #define CODE_DCM_PresentationState DSRBasicCodedEntry("PR", "DCM", "Presentation State") @@ -936,7 +937,7 @@ #define CODE_DCM_VascularityPresentImmediatelyAdjacentToLesion DSRBasicCodedEntry("111376", "DCM", "Vascularity present immediately adjacent to lesion") #define CODE_DCM_DiffuselyIncreasedVascularityInSurroundingTissue DSRBasicCodedEntry("111377", "DCM", "Diffusely increased vascularity in surrounding tissue") #define CODE_DCM_CorrelationToOtherFindings DSRBasicCodedEntry("111380", "DCM", "Correlation to other Findings") -#define CODE_DCM_CorrelatesToPhysicalExamFindings DSRBasicCodedEntry("111381", "DCM", "Correlates to physical exam findings") +#define CODE_DCM_CorrelatesToPhysicalExaminationFindings DSRBasicCodedEntry("111381", "DCM", "Correlates to physical examination findings") #define CODE_DCM_CorrelatesToMammographyFindings DSRBasicCodedEntry("111382", "DCM", "Correlates to mammography findings") #define CODE_DCM_CorrelatesToMRIFindings DSRBasicCodedEntry("111383", "DCM", "Correlates to MRI findings") #define CODE_DCM_CorrelatesToUltrasoundFindings DSRBasicCodedEntry("111384", "DCM", "Correlates to ultrasound findings") @@ -974,11 +975,11 @@ #define CODE_DCM_FollowUpAtShortIntervalFromPriorStudy DSRBasicCodedEntry("111416", "DCM", "Follow-up at short interval from prior study") #define CODE_DCM_HistoryOfBreastAugmentation_asymptomatic DSRBasicCodedEntry("111417", "DCM", "History of breast augmentation, asymptomatic") #define CODE_DCM_ReviewOfAnOutsideStudy DSRBasicCodedEntry("111418", "DCM", "Review of an outside study") -#define CODE_DCM_AdditionalEvaluationRequestedFromAbnormalScreeningExam DSRBasicCodedEntry("111419", "DCM", "Additional evaluation requested from abnormal screening exam") +#define CODE_DCM_AdditionalEvaluationRequestedFromAbnormalScreeningStudy DSRBasicCodedEntry("111419", "DCM", "Additional evaluation requested from abnormal screening study") #define CODE_DCM_HistoryOfBenignBreastBiopsy DSRBasicCodedEntry("111420", "DCM", "History of benign breast biopsy") #define CODE_DCM_PersonalHistoryOfBreastCancerWithBreastConservationTherapy DSRBasicCodedEntry("111421", "DCM", "Personal history of breast cancer with breast conservation therapy") #define CODE_DCM_PhysicalExaminationResults DSRBasicCodedEntry("111423", "DCM", "Physical Examination Results") -#define CODE_DCM_ComparisonToPreviousFindings DSRBasicCodedEntry("111424", "DCM", "Comparison to previous findings") +#define CODE_DCM_ComparisonToPreviousStudies DSRBasicCodedEntry("111424", "DCM", "Comparison to previous studies") #define CODE_DCM_IntraluminalFillingDefect DSRBasicCodedEntry("111425", "DCM", "Intraluminal filling defect") #define CODE_DCM_MultipleFillingDefect DSRBasicCodedEntry("111426", "DCM", "Multiple filling defect") #define CODE_DCM_AbruptDuctTermination DSRBasicCodedEntry("111427", "DCM", "Abrupt duct termination") @@ -1937,7 +1938,7 @@ #define CODE_DCM_OrthogonalLocationArcInnerMargin DSRBasicCodedEntry("113670", "DCM", "Orthogonal location arc inner margin") #define CODE_DCM_OrthogonalLocationArcOuterMargin DSRBasicCodedEntry("113671", "DCM", "Orthogonal location arc outer margin") #define CODE_DCM_QualityControlIntent DSRBasicCodedEntry("113680", "DCM", "Quality Control Intent") -#define CODE_DCM_Phantom DSRBasicCodedEntry("113681", "DCM", "Phantom") +#define CODE_DCM_RETIRED_Phantom DSRBasicCodedEntry("113681", "DCM", "Phantom") #define CODE_DCM_ACRAccreditationPhantom_CT DSRBasicCodedEntry("113682", "DCM", "ACR Accreditation Phantom - CT") #define CODE_DCM_ACRAccreditationPhantom_MR DSRBasicCodedEntry("113683", "DCM", "ACR Accreditation Phantom - MR") #define CODE_DCM_ACRAccreditationPhantom_Mammography DSRBasicCodedEntry("113684", "DCM", "ACR Accreditation Phantom - Mammography") @@ -2147,6 +2148,7 @@ #define CODE_DCM_FilteredBackProjection DSRBasicCodedEntry("113962", "DCM", "Filtered Back Projection") #define CODE_DCM_IterativeReconstruction DSRBasicCodedEntry("113963", "DCM", "Iterative Reconstruction") #define CODE_DCM_AtSurfaceOfPatient DSRBasicCodedEntry("113964", "DCM", "At Surface of Patient") +#define CODE_DCM_100cmFromXRaySource DSRBasicCodedEntry("113965", "DCM", "100cm from X-Ray Source") #define CODE_DCM_ProcedureStepToThisPoint DSRBasicCodedEntry("113970", "DCM", "Procedure Step To This Point") #define CODE_DCM_WaterEquivalentDiameter DSRBasicCodedEntry("113980", "DCM", "Water Equivalent Diameter") #define CODE_DCM_WaterEquivalentDiameterRepresentativeValue DSRBasicCodedEntry("113981", "DCM", "Water Equivalent Diameter Representative Value") @@ -2643,8 +2645,8 @@ #define CODE_DCM_LesionMorphology DSRBasicCodedEntry("122133", "DCM", "Lesion Morphology") #define CODE_DCM_VesselMorphology DSRBasicCodedEntry("122134", "DCM", "Vessel Morphology") #define CODE_DCM_CirculatorySupport DSRBasicCodedEntry("122138", "DCM", "Circulatory Support") -#define CODE_DCM_ReasonForExam DSRBasicCodedEntry("122139", "DCM", "Reason for Exam") -#define CODE_DCM_ComparisonWithPriorExamDone DSRBasicCodedEntry("122140", "DCM", "Comparison with Prior Exam Done") +#define CODE_DCM_ReasonForStudy DSRBasicCodedEntry("122139", "DCM", "Reason for Study") +#define CODE_DCM_ComparisonWithPriorStudyDone DSRBasicCodedEntry("122140", "DCM", "Comparison with Prior Study Done") #define CODE_DCM_ElectrodePlacement DSRBasicCodedEntry("122141", "DCM", "Electrode Placement") #define CODE_DCM_AcquisitionDeviceType DSRBasicCodedEntry("122142", "DCM", "Acquisition Device Type") #define CODE_DCM_AcquisitionDeviceID DSRBasicCodedEntry("122143", "DCM", "Acquisition Device ID") @@ -3206,6 +3208,7 @@ #define CODE_DCM_EndovaginalTransducer DSRBasicCodedEntry("125263", "DCM", "Endovaginal Transducer") #define CODE_DCM_EndorectalTransducer DSRBasicCodedEntry("125264", "DCM", "Endorectal Transducer") #define CODE_DCM_IntravascularTransducer DSRBasicCodedEntry("125265", "DCM", "Intravascular Transducer") +#define CODE_DCM_EndocavitaryTransducer DSRBasicCodedEntry("125266", "DCM", "Endocavitary Transducer") #define CODE_DCM_LeftVentricleMassByAreaLength DSRBasicCodedEntry("125270", "DCM", "Left Ventricle Mass by Area Length") #define CODE_DCM_LeftVentricleMassByMMode_adjustedByHeight DSRBasicCodedEntry("125271", "DCM", "Left Ventricle Mass by M-mode - adjusted by Height") #define CODE_DCM_LeftVentricleMassByTruncatedEllipse_adjustedByHeight DSRBasicCodedEntry("125272", "DCM", "Left Ventricle Mass by Truncated Ellipse - adjusted by Height") @@ -3879,6 +3882,7 @@ #define CODE_DCM_OSLD DSRBasicCodedEntry("128706", "DCM", "OSLD") #define CODE_DCM_IonChamber DSRBasicCodedEntry("128707", "DCM", "Ion Chamber") #define CODE_DCM_DiamondDetector DSRBasicCodedEntry("128708", "DCM", "Diamond Detector") +#define CODE_DCM_RPLGD DSRBasicCodedEntry("128709", "DCM", "RPLGD") #define CODE_DCM_ForTeachingFileExport DSRBasicCodedEntry("128710", "DCM", "For Teaching File Export") #define CODE_DCM_ForClinicalTrialExport DSRBasicCodedEntry("128711", "DCM", "For Clinical Trial Export") #define CODE_DCM_AdditionalTeachingFileInformation DSRBasicCodedEntry("128712", "DCM", "Additional Teaching File Information") @@ -4706,5 +4710,49 @@ #define CODE_DCM_HzNormalized DSRBasicCodedEntry("130774", "DCM", "Hz normalized") #define CODE_DCM_HzAngular DSRBasicCodedEntry("130775", "DCM", "Hz angular") #define CODE_DCM_MagnitudeNormalized DSRBasicCodedEntry("130776", "DCM", "Magnitude normalized") +#define CODE_DCM_SpecificObservationSubjectClass DSRBasicCodedEntry("130780", "DCM", "Specific observation subject class") +#define CODE_DCM_ImageFrame DSRBasicCodedEntry("130781", "DCM", "Image frame") +#define CODE_DCM_RTPatientPositionAcquisition_IntegratedDoseMV DSRBasicCodedEntry("130782", "DCM", "RT Patient Position Acquisition, Integrated Dose MV") +#define CODE_DCM_RTPatientPositionAcquisition_FilmCassetteMV DSRBasicCodedEntry("130783", "DCM", "RT Patient Position Acquisition, Film Cassette MV") +#define CODE_DCM_RTPatientPositionAcquisition_FilmCassetteKV DSRBasicCodedEntry("130784", "DCM", "RT Patient Position Acquisition, Film Cassette kV") +#define CODE_DCM_RTPatientPositionAcquisition_ConeBeamCTKV DSRBasicCodedEntry("130785", "DCM", "RT Patient Position Acquisition, Cone-Beam CT kV") +#define CODE_DCM_RTPatientPositionAcquisition_ConventionalCTKV DSRBasicCodedEntry("130786", "DCM", "RT Patient Position Acquisition, Conventional CT kV") +#define CODE_DCM_RTPatientPositionAcquisition_ConeBeamCTMV DSRBasicCodedEntry("130787", "DCM", "RT Patient Position Acquisition, Cone-Beam CT MV") +#define CODE_DCM_RTPatientPositionAcquisition_ConventionalCTMV DSRBasicCodedEntry("130788", "DCM", "RT Patient Position Acquisition, Conventional CT MV") +#define CODE_DCM_NominalImagingSourceLocation DSRBasicCodedEntry("130789", "DCM", "Nominal Imaging Source Location") +#define CODE_DCM_RTPatientPositioningReferenceImage DSRBasicCodedEntry("130790", "DCM", "RT Patient Positioning Reference Image") +#define CODE_DCM_AcquisitionInitiationType DSRBasicCodedEntry("130791", "DCM", "Acquisition Initiation Type") +#define CODE_DCM_AcquisitionInitiationNotDefined DSRBasicCodedEntry("130792", "DCM", "Acquisition Initiation not defined") +#define CODE_DCM_AcquisitionInitiationBeforeStartOfRadiation DSRBasicCodedEntry("130793", "DCM", "Acquisition Initiation before start of Radiation") +#define CODE_DCM_AcquisitionInitiationAfterEndOfRadiation DSRBasicCodedEntry("130794", "DCM", "Acquisition Initiation after end of Radiation") +#define CODE_DCM_AcquisitionInitiationByTriggeringParameter DSRBasicCodedEntry("130795", "DCM", "Acquisition Initiation by triggering parameter") +#define CODE_DCM_IncrementalAcquisitionTriggering DSRBasicCodedEntry("130796", "DCM", "Incremental Acquisition Triggering") +#define CODE_DCM_Meterset DSRBasicCodedEntry("130797", "DCM", "Meterset") +#define CODE_DCM_SourceContinuousRollAngle DSRBasicCodedEntry("130798", "DCM", "Source Continuous Roll Angle") +#define CODE_DCM_TimeAfterStartOfRadiation DSRBasicCodedEntry("130799", "DCM", "Time after start of Radiation") +#define CODE_DCM_PercentageOfExpectedBeamonTimeOfRadiation DSRBasicCodedEntry("130800", "DCM", "Percentage of expected beam-on time of Radiation") +#define CODE_DCM_IEC61217ImagingSourceToAxisDistance DSRBasicCodedEntry("130801", "DCM", "IEC61217 Imaging Source to Axis Distance") +#define CODE_DCM_IEC61217XRayImageReceptorRadialDisplacementFromIsocenter DSRBasicCodedEntry("130802", "DCM", "IEC61217 X-Ray Image Receptor Radial Displacement from Isocenter") +#define CODE_DCM_IEC61217XRayImageReceptorLongitudinalDisplacement DSRBasicCodedEntry("130803", "DCM", "IEC61217 X-Ray Image Receptor Longitudinal Displacement") +#define CODE_DCM_IEC61217XRayImageReceptorLateralDisplacement DSRBasicCodedEntry("130804", "DCM", "IEC61217 X-Ray Image Receptor Lateral Displacement") +#define CODE_DCM_IEC61217XRayImageReceptorRotation DSRBasicCodedEntry("130805", "DCM", "IEC61217 X-Ray Image Receptor Rotation") +#define CODE_DCM_ConfiguredLowestImagingEnergy DSRBasicCodedEntry("130806", "DCM", "Configured Lowest Imaging Energy") +#define CODE_DCM_ConfiguredDefaultImagingEnergy DSRBasicCodedEntry("130807", "DCM", "Configured Default Imaging Energy") +#define CODE_DCM_PlanarMatrixUltrasoundTransducerGeometry DSRBasicCodedEntry("130808", "DCM", "Planar matrix ultrasound transducer geometry") +#define CODE_DCM_HemisphericalUltrasoundTransducerGeometry DSRBasicCodedEntry("130809", "DCM", "Hemispherical ultrasound transducer geometry") +#define CODE_DCM_SingleSideIllumination DSRBasicCodedEntry("130810", "DCM", "Single-side illumination") +#define CODE_DCM_DualSideIllumination DSRBasicCodedEntry("130811", "DCM", "Dual-side illumination") +#define CODE_DCM_MultiSideIllumination DSRBasicCodedEntry("130812", "DCM", "Multi-side illumination") +#define CODE_DCM_ThroughTransducerIllumination DSRBasicCodedEntry("130813", "DCM", "Through-transducer illumination") +#define CODE_DCM_InterstitialIllumination DSRBasicCodedEntry("130814", "DCM", "Interstitial illumination") +#define CODE_DCM_PiezocompositeTransducer DSRBasicCodedEntry("130815", "DCM", "Piezocomposite Transducer") +#define CODE_DCM_MEMSBasedTransducer DSRBasicCodedEntry("130816", "DCM", "MEMS-based Transducer") +#define CODE_DCM_InterferometricTransducer DSRBasicCodedEntry("130817", "DCM", "Interferometric Transducer") +#define CODE_DCM_UniformSpeedOfSoundCorrection DSRBasicCodedEntry("130818", "DCM", "Uniform Speed of Sound Correction") +#define CODE_DCM_DualSpeedOfSoundCorrection DSRBasicCodedEntry("130819", "DCM", "Dual Speed of Sound Correction") +#define CODE_DCM_SpeedOfSoundMapCorrection DSRBasicCodedEntry("130820", "DCM", "Speed of Sound Map Correction") +#define CODE_DCM_SphericalBackProjection DSRBasicCodedEntry("130821", "DCM", "Spherical Back Projection") +#define CODE_DCM_NumericalAcousticModel DSRBasicCodedEntry("130822", "DCM", "Numerical Acoustic Model") +#define CODE_DCM_BloodDeoxygenationLevel DSRBasicCodedEntry("130823", "DCM", "Blood Deoxygenation Level") #endif diff --git a/dcmsr/include/dcmtk/dcmsr/codes/ncit.h b/dcmsr/include/dcmtk/dcmsr/codes/ncit.h index 75a23a90..2817c5d3 100644 --- a/dcmsr/include/dcmtk/dcmsr/codes/ncit.h +++ b/dcmsr/include/dcmtk/dcmsr/codes/ncit.h @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file with NCI Thesaurus Code Definitions (Coding Scheme "NCIt") * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:36:21 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023c + * File created on 2023-07-14 12:40:31 by J. Riesmeier * */ @@ -34,7 +34,7 @@ * code definitions * *--------------------*/ -// total number of codes: 49 +// total number of codes: 51 // - retired: 0 // - no name: 0 // - not unique: 0 @@ -73,6 +73,7 @@ #define CODE_NCIt_NoEvidenceOfDisease DSRBasicCodedEntry("C40413", "NCIt", "No Evidence of Disease") #define CODE_NCIt_NativeHawaiianOrOtherPacificIslander DSRBasicCodedEntry("C41219", "NCIt", "Native Hawaiian or other Pacific Islander") #define CODE_NCIt_AdverseEvent DSRBasicCodedEntry("C41331", "NCIt", "Adverse Event") +#define CODE_NCIt_Image DSRBasicCodedEntry("C48179", "NCIt", "Image") #define CODE_NCIt_TemperatureSensorDeviceComponent DSRBasicCodedEntry("C50304", "NCIt", "Temperature sensor device component") #define CODE_NCIt_Experience DSRBasicCodedEntry("C54627", "NCIt", "Experience") #define CODE_NCIt_Reviewer DSRBasicCodedEntry("C54634", "NCIt", "Reviewer") @@ -84,6 +85,7 @@ #define CODE_NCIt_MedicalProductExpirationDate DSRBasicCodedEntry("C70854", "NCIt", "Medical Product Expiration Date") #define CODE_NCIt_CardiotonicAgent DSRBasicCodedEntry("C78322", "NCIt", "Cardiotonic agent") #define CODE_NCIt_NonEnhancingLesion DSRBasicCodedEntry("C81175", "NCIt", "Non-Enhancing Lesion") +#define CODE_NCIt_ImagingRegionOfInterest DSRBasicCodedEntry("C85402", "NCIt", "Imaging Region of Interest") #define CODE_NCIt_Erect DSRBasicCodedEntry("C86043", "NCIt", "erect") #define CODE_NCIt_BeddingChange DSRBasicCodedEntry("C90365", "NCIt", "Bedding change") #define CODE_NCIt_BeddingMaterial DSRBasicCodedEntry("C90366", "NCIt", "Bedding material") diff --git a/dcmsr/include/dcmtk/dcmsr/codes/umls.h b/dcmsr/include/dcmtk/dcmsr/codes/umls.h index 09d414e9..6e66ca57 100644 --- a/dcmsr/include/dcmtk/dcmsr/codes/umls.h +++ b/dcmsr/include/dcmtk/dcmsr/codes/umls.h @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Header file with UMLS Code Definitions (Coding Scheme "UMLS") * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:36:21 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023c + * File created on 2023-07-14 12:40:30 by J. Riesmeier * */ @@ -34,7 +34,7 @@ * code definitions * *--------------------*/ -// total number of codes: 51 +// total number of codes: 49 // - retired: 0 // - no name: 0 // - not unique: 0 @@ -81,15 +81,13 @@ #define CODE_UMLS_MedicalPhysicist DSRBasicCodedEntry("C1708969", "UMLS", "Medical Physicist") #define CODE_UMLS_Referring DSRBasicCodedEntry("C1709880", "UMLS", "Referring") #define CODE_UMLS_Variance DSRBasicCodedEntry("C1711260", "UMLS", "Variance") -#define CODE_UMLS_Tyrosine3Octreotate_Ga68 DSRBasicCodedEntry("C1742831", "UMLS", "tyrosine-3-octreotate Ga^68^") -#define CODE_UMLS_Fluoroestradiol_FES_F18 DSRBasicCodedEntry("C1831937", "UMLS", "Fluoroestradiol (FES) F^18^") #define CODE_UMLS_Sonographer DSRBasicCodedEntry("C1954848", "UMLS", "Sonographer") #define CODE_UMLS_Neuroradiology DSRBasicCodedEntry("C2183225", "UMLS", "Neuroradiology") #define CODE_UMLS_InverseRatioVentilation DSRBasicCodedEntry("C2223982", "UMLS", "Inverse ratio ventilation") #define CODE_UMLS_RootMeanSquare DSRBasicCodedEntry("C2347976", "UMLS", "Root Mean Square") #define CODE_UMLS_TimePoint DSRBasicCodedEntry("C2348792", "UMLS", "Time Point") #define CODE_UMLS_Edotreotide_Ga68 DSRBasicCodedEntry("C2713594", "UMLS", "Edotreotide Ga^68^") -#define CODE_UMLS_FluoropropylDihydrotetrabenazine_DTBZ_F18 DSRBasicCodedEntry("C2934038", "UMLS", "Fluoropropyl-dihydrotetrabenazine (DTBZ) F^18^") +#define CODE_UMLS_FluoropropylDihydrotetrabenazine_F18 DSRBasicCodedEntry("C2934038", "UMLS", "Fluoropropyl-dihydrotetrabenazine F^18^") #define CODE_UMLS_ISO1_F18 DSRBasicCodedEntry("C2981788", "UMLS", "ISO-1 F^18^") #define CODE_UMLS_RadiationPhysicist DSRBasicCodedEntry("C2985483", "UMLS", "Radiation Physicist") #define CODE_UMLS_Pretreatment DSRBasicCodedEntry("C3539075", "UMLS", "Pretreatment") diff --git a/dcmsr/include/dcmtk/dcmsr/dsrimgvl.h b/dcmsr/include/dcmtk/dcmsr/dsrimgvl.h index 8ad1cf7b..1c86317d 100644 --- a/dcmsr/include/dcmtk/dcmsr/dsrimgvl.h +++ b/dcmsr/include/dcmtk/dcmsr/dsrimgvl.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2000-2021, OFFIS e.V. + * Copyright (C) 2000-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -441,7 +441,7 @@ class DCMTK_DCMSR_EXPORT DSRImageReferenceValue /** check the specified SOP class UID for validity. * This method further specializes the checks performed in the base class * DSRCompositeReferenceValue. All image and segmentation SOP classes that - * are defined in DICOM PS 3.6-2020c are allowed. + * are defined in DICOM PS 3.6-2023c are allowed. ** @param sopClassUID SOP class UID to be checked * @param reportWarnings if enabled, report warning messages to the logger ** @return status, EC_Normal if value is valid, an error code otherwise diff --git a/dcmsr/include/dcmtk/dcmsr/dsrsc3gr.h b/dcmsr/include/dcmtk/dcmsr/dsrsc3gr.h index f5eab672..f13a02f7 100644 --- a/dcmsr/include/dcmtk/dcmsr/dsrsc3gr.h +++ b/dcmsr/include/dcmtk/dcmsr/dsrsc3gr.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2010-2015, OFFIS e.V. + * Copyright (C) 2010-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -65,7 +65,7 @@ class DCMTK_DCMSR_EXPORT DSRGraphicData3DItem /** comparison operator ** @param item item with which the (x,y,z) triplet should be compared - ** @return true if not equal, false if equal + ** @return OFTrue if not equal, OFFalse if equal */ inline OFBool operator!=(const DSRGraphicData3DItem &item) const { diff --git a/dcmsr/include/dcmtk/dcmsr/dsrscogr.h b/dcmsr/include/dcmtk/dcmsr/dsrscogr.h index 6d28ea66..66c924a5 100644 --- a/dcmsr/include/dcmtk/dcmsr/dsrscogr.h +++ b/dcmsr/include/dcmtk/dcmsr/dsrscogr.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2000-2015, OFFIS e.V. + * Copyright (C) 2000-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -62,7 +62,7 @@ class DCMTK_DCMSR_EXPORT DSRGraphicDataItem /** comparison operator ** @param item item with which the (column,row) pair should be compared - ** @return true if not equal, false if equal + ** @return OFTrue if not equal, OFFalse if equal */ inline OFBool operator!=(const DSRGraphicDataItem &item) const { @@ -71,7 +71,7 @@ class DCMTK_DCMSR_EXPORT DSRGraphicDataItem /** comparison operator ** @param item item with which the (column,row) pair should be compared - ** @return true if smaller. Row takes precedence over column. + ** @return OFTrue if smaller. Row takes precedence over column. */ inline OFBool operator<(const DSRGraphicDataItem &item) const { @@ -80,7 +80,7 @@ class DCMTK_DCMSR_EXPORT DSRGraphicDataItem /** comparison operator ** @param item item with which the (column,row) pair should be compared - ** @return true if greater. Row takes precedence over column. + ** @return OFTrue if greater. Row takes precedence over column. */ inline OFBool operator>(const DSRGraphicDataItem &item) const { diff --git a/dcmsr/include/dcmtk/dcmsr/dsrtypes.h b/dcmsr/include/dcmtk/dcmsr/dsrtypes.h index 9c572465..2394816d 100644 --- a/dcmsr/include/dcmtk/dcmsr/dsrtypes.h +++ b/dcmsr/include/dcmtk/dcmsr/dsrtypes.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2000-2022, OFFIS e.V. + * Copyright (C) 2000-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -72,7 +72,7 @@ extern DCMTK_DCMSR_EXPORT OFLogger DCM_dcmsrLogger; // protocol, hostname and CGI script name used for HTML hyperlinks to composite objects #define HTML_HYPERLINK_PREFIX_FOR_CGI "http://localhost/dicom.cgi" // URL of the DICOM toolkit DCMTK -#define DCMTK_INTERNET_URL "http://dicom.offis.de/dcmtk" +#define DCMTK_INTERNET_URL "https://www.dcmtk.org/" // XML namespace URI for dcmsr module #define DCMSR_XML_NAMESPACE_URI "http://dicom.offis.de/dcmsr" @@ -653,8 +653,10 @@ class DCMTK_DCMSR_EXPORT DSRTypes PT_SegmentedVolumeRendering, /// Multiple Volume Rendering Volumetric Presentation State (MVR-VPS) PT_MultipleVolumeRendering, + /// Variable Modality LUT Softcopy Presentation State (VML-SPS) + PT_VariableModalityLUT, /// internal type used to mark the last entry - PT_last = PT_MultipleVolumeRendering + PT_last = PT_VariableModalityLUT }; /** SR graphic types. Used for content item SCOORD. diff --git a/dcmsr/include/dcmtk/dcmsr/dsrwavch.h b/dcmsr/include/dcmtk/dcmsr/dsrwavch.h index 81a0bdf4..1dafa126 100644 --- a/dcmsr/include/dcmtk/dcmsr/dsrwavch.h +++ b/dcmsr/include/dcmtk/dcmsr/dsrwavch.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2000-2015, OFFIS e.V. + * Copyright (C) 2000-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -62,7 +62,7 @@ class DCMTK_DCMSR_EXPORT DSRWaveformChannelItem /** comparison operator ** @param item item with which the (m,c) pair should be compared - ** @return true if not equal, false if equal + ** @return OFTrue if not equal, OFFalse if equal */ inline OFBool operator!=(const DSRWaveformChannelItem &item) const { @@ -71,7 +71,7 @@ class DCMTK_DCMSR_EXPORT DSRWaveformChannelItem /** comparison operator ** @param item item with which the (m,c) pair should be compared - ** @return true if smaller. ChannelNumber takes precedence over MultiplexGroupNumber. + ** @return OFTrue if smaller. ChannelNumber takes precedence over MultiplexGroupNumber. */ inline OFBool operator<(const DSRWaveformChannelItem &item) const { @@ -80,7 +80,7 @@ class DCMTK_DCMSR_EXPORT DSRWaveformChannelItem /** comparison operator ** @param item item with which the (m,c) pair should be compared - ** @return true if greater. ChannelNumber takes precedence over MultiplexGroupNumber. + ** @return OFTrue if greater. ChannelNumber takes precedence over MultiplexGroupNumber. */ inline OFBool operator>(const DSRWaveformChannelItem &item) const { diff --git a/dcmsr/include/dcmtk/dcmsr/dsrwavvl.h b/dcmsr/include/dcmtk/dcmsr/dsrwavvl.h index f5b21aa0..f28cab59 100644 --- a/dcmsr/include/dcmtk/dcmsr/dsrwavvl.h +++ b/dcmsr/include/dcmtk/dcmsr/dsrwavvl.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2000-2021, OFFIS e.V. + * Copyright (C) 2000-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -216,7 +216,7 @@ class DCMTK_DCMSR_EXPORT DSRWaveformReferenceValue /** check the specified SOP class UID for validity. * This method further specializes the checks performed in the base class * DSRCompositeReferenceValue. All waveform SOP classes that are defined - * in DICOM PS 3.6-2020c are allowed. + * in DICOM PS 3.6-2023c are allowed. ** @param sopClassUID SOP class UID to be checked * @param reportWarnings if enabled, report warning messages to the logger ** @return status, EC_Normal if value is valid, an error code otherwise diff --git a/dcmsr/libcmr/cid100.cc b/dcmsr/libcmr/cid100.cc index 3296bf63..ccd5a891 100644 --- a/dcmsr/libcmr/cid100.cc +++ b/dcmsr/libcmr/cid100.cc @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class CID100_QuantitativeDiagnosticImagingProcedure * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:49:58 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:44 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid10013.cc b/dcmsr/libcmr/cid10013.cc index 0663d1ea..7e2e8330 100644 --- a/dcmsr/libcmr/cid10013.cc +++ b/dcmsr/libcmr/cid10013.cc @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class CID10013_CTAcquisitionType * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:50:11 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:57:00 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid10033.cc b/dcmsr/libcmr/cid10033.cc index 5a9bd331..4ec3ce8b 100644 --- a/dcmsr/libcmr/cid10033.cc +++ b/dcmsr/libcmr/cid10033.cc @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class CID10033_CTReconstructionAlgorithm * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:50:12 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:57:01 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid11.cc b/dcmsr/libcmr/cid11.cc index e1ca5223..db9990ee 100644 --- a/dcmsr/libcmr/cid11.cc +++ b/dcmsr/libcmr/cid11.cc @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class CID11_AdministrationRoute * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:49:56 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:42 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid218.cc b/dcmsr/libcmr/cid218.cc index 2e35940c..bf85a594 100644 --- a/dcmsr/libcmr/cid218.cc +++ b/dcmsr/libcmr/cid218.cc @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class CID218_QuantitativeImageFeature * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:49:59 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:46 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid244.cc b/dcmsr/libcmr/cid244.cc index 1b787b09..ecb61c95 100644 --- a/dcmsr/libcmr/cid244.cc +++ b/dcmsr/libcmr/cid244.cc @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class CID244_Laterality * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:50:00 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:47 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid247.cc b/dcmsr/libcmr/cid247.cc index e63ceba9..4641aaa7 100644 --- a/dcmsr/libcmr/cid247.cc +++ b/dcmsr/libcmr/cid247.cc @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class CID247_LateralityLeftRightOnly * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:50:01 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:48 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid29.cc b/dcmsr/libcmr/cid29.cc index f1eed088..b85ac36c 100644 --- a/dcmsr/libcmr/cid29.cc +++ b/dcmsr/libcmr/cid29.cc @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class CID29_AcquisitionModality * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:49:57 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:43 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid4020.cc b/dcmsr/libcmr/cid4020.cc index 12771ac5..a7eca72c 100644 --- a/dcmsr/libcmr/cid4020.cc +++ b/dcmsr/libcmr/cid4020.cc @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class CID4020_PETRadionuclide * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:50:01 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:48 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid4021.cc b/dcmsr/libcmr/cid4021.cc index c06c55da..f6ee77a5 100644 --- a/dcmsr/libcmr/cid4021.cc +++ b/dcmsr/libcmr/cid4021.cc @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class CID4021_PETRadiopharmaceutical * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:50:02 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:49 by J. Riesmeier * */ @@ -18,7 +18,7 @@ // general information on CID 4021 (PET Radiopharmaceutical) #define CONTEXT_GROUP_NUMBER "4021" -#define CONTEXT_GROUP_VERSION "20201116" +#define CONTEXT_GROUP_VERSION "20221201" #define CONTEXT_GROUP_UID "1.2.840.10008.6.1.305" #define CONTEXT_GROUP_TYPE OFTrue /* extensible */ @@ -196,7 +196,7 @@ CID4021_PETRadiopharmaceutical::CodeList &CID4021_PETRadiopharmaceutical::getCod Codes->insert(OFMake_pair(FLB457_C11, DSRBasicCodedEntry("126706", "DCM", "FLB 457 C^11^"))); Codes->insert(OFMake_pair(Florbetaben_F18, DSRBasicCodedEntry("712736002", "SCT", "Florbetaben F^18^"))); Codes->insert(OFMake_pair(Florbetapir_F18, DSRBasicCodedEntry("456995000", "SCT", "Florbetapir F^18^"))); - Codes->insert(OFMake_pair(Flortaucipir_F18, DSRBasicCodedEntry("C000591008", "MSH", "Flortaucipir F^18^"))); + Codes->insert(OFMake_pair(Flortaucipir_F18, DSRBasicCodedEntry("879808000", "SCT", "Flortaucipir F^18^"))); Codes->insert(OFMake_pair(Flubatine_F18, DSRBasicCodedEntry("126503", "DCM", "Flubatine F^18^"))); Codes->insert(OFMake_pair(Fluciclatide_F18, DSRBasicCodedEntry("456999006", "SCT", "Fluciclatide F^18^"))); Codes->insert(OFMake_pair(Fluciclovine_F18, DSRBasicCodedEntry("457000009", "SCT", "Fluciclovine F^18^"))); @@ -206,12 +206,12 @@ CID4021_PETRadiopharmaceutical::CodeList &CID4021_PETRadiopharmaceutical::getCod Codes->insert(OFMake_pair(Fluorobenzothiazole_F18, DSRBasicCodedEntry("423546004", "SCT", "Fluorobenzothiazole F^18^"))); Codes->insert(OFMake_pair(Fluorocholine_F18, DSRBasicCodedEntry("456992002", "SCT", "Fluorocholine F^18^"))); Codes->insert(OFMake_pair(Fluorodeoxyglucose_F18, DSRBasicCodedEntry("35321007", "SCT", "Fluorodeoxyglucose F^18^"))); - Codes->insert(OFMake_pair(FluoroestradiolFES_F18, DSRBasicCodedEntry("C1831937", "UMLS", "Fluoroestradiol (FES) F^18^"))); + Codes->insert(OFMake_pair(Fluoroestradiol_F18, DSRBasicCodedEntry("926372005", "SCT", "Fluoroestradiol F^18^"))); Codes->insert(OFMake_pair(Fluoroetanidazole_F18, DSRBasicCodedEntry("C1541539", "UMLS", "Fluoroetanidazole F^18^"))); Codes->insert(OFMake_pair(FluoroLDopa_F18, DSRBasicCodedEntry("5811000122108", "SCT", "Fluoro-L-dopa F^18^"))); Codes->insert(OFMake_pair(Fluoromethane_F18, DSRBasicCodedEntry("422763008", "SCT", "Fluoromethane F^18^"))); Codes->insert(OFMake_pair(Fluoromisonidazole_F18, DSRBasicCodedEntry("422598008", "SCT", "Fluoromisonidazole F^18^"))); - Codes->insert(OFMake_pair(FluoropropylDihydrotetrabenazineDTBZ_F18, DSRBasicCodedEntry("C2934038", "UMLS", "Fluoropropyl-dihydrotetrabenazine (DTBZ) F^18^"))); + Codes->insert(OFMake_pair(FluoropropylDihydrotetrabenazine_F18, DSRBasicCodedEntry("C2934038", "UMLS", "Fluoropropyl-dihydrotetrabenazine F^18^"))); Codes->insert(OFMake_pair(Fluorotriopride_F18, DSRBasicCodedEntry("126707", "DCM", "Fluorotriopride F^18^"))); Codes->insert(OFMake_pair(Fluorouracil_F18, DSRBasicCodedEntry("425236000", "SCT", "Fluorouracil F^18^"))); Codes->insert(OFMake_pair(Flurpiridaz_F18, DSRBasicCodedEntry("126718", "DCM", "Flurpiridaz F^18^"))); @@ -232,8 +232,8 @@ CID4021_PETRadiopharmaceutical::CodeList &CID4021_PETRadiopharmaceutical::getCod Codes->insert(OFMake_pair(Methionine_C11, DSRBasicCodedEntry("129510001", "SCT", "Methionine C^11^"))); Codes->insert(OFMake_pair(MK6240_F18, DSRBasicCodedEntry("C4506764", "UMLS", "MK-6240 F^18^"))); Codes->insert(OFMake_pair(Mogamulizumab_89Zr, DSRBasicCodedEntry("126738", "DCM", "Mogamulizumab ^89^Zr"))); - Codes->insert(OFMake_pair(MonoclonalAntibodymAb_64Cu, DSRBasicCodedEntry("126510", "DCM", "Monoclonal Antibody (mAb) ^64^Cu"))); - Codes->insert(OFMake_pair(MonoclonalAntibodymAb_89Zr, DSRBasicCodedEntry("126511", "DCM", "Monoclonal Antibody (mAb) ^89^Zr"))); + Codes->insert(OFMake_pair(MonoclonalAntibody_64Cu, DSRBasicCodedEntry("126510", "DCM", "Monoclonal Antibody ^64^Cu"))); + Codes->insert(OFMake_pair(MonoclonalAntibody_89Zr, DSRBasicCodedEntry("126511", "DCM", "Monoclonal Antibody ^89^Zr"))); Codes->insert(OFMake_pair(MonoclonalAntibody_I124, DSRBasicCodedEntry("423249007", "SCT", "Monoclonal antibody I^124^"))); Codes->insert(OFMake_pair(NanocolloidalAlbumin_89Zr, DSRBasicCodedEntry("126753", "DCM", "Nanocolloidal albumin ^89^Zr"))); Codes->insert(OFMake_pair(Nifene_F18, DSRBasicCodedEntry("126714", "DCM", "Nifene F^18^"))); @@ -272,10 +272,10 @@ CID4021_PETRadiopharmaceutical::CodeList &CID4021_PETRadiopharmaceutical::getCod Codes->insert(OFMake_pair(T807_F18, DSRBasicCodedEntry("126502", "DCM", "T807 F^18^"))); Codes->insert(OFMake_pair(THK5317_F18, DSRBasicCodedEntry("C4550127", "UMLS", "THK5317 F^18^"))); Codes->insert(OFMake_pair(THK5351_F18, DSRBasicCodedEntry("C4279748", "UMLS", "THK5351 F^18^"))); - Codes->insert(OFMake_pair(ThymidineFLT_F18, DSRBasicCodedEntry("129502002", "SCT", "Thymidine (FLT) F^18^"))); + Codes->insert(OFMake_pair(Thymidine_F18, DSRBasicCodedEntry("129502002", "SCT", "Thymidine F^18^"))); Codes->insert(OFMake_pair(Trastuzumab_89Zr, DSRBasicCodedEntry("126512", "DCM", "Trastuzumab ^89^Zr"))); Codes->insert(OFMake_pair(TRC105_89Zr, DSRBasicCodedEntry("126749", "DCM", "TRC105 ^89^Zr"))); - Codes->insert(OFMake_pair(Tyrosine3Octreotate_Ga68, DSRBasicCodedEntry("C1742831", "UMLS", "tyrosine-3-octreotate Ga^68^"))); + Codes->insert(OFMake_pair(Dotatate_Ga68, DSRBasicCodedEntry("724025002", "SCT", "Dotatate Ga^68^"))); Codes->insert(OFMake_pair(Ublituximab_89Zr, DSRBasicCodedEntry("126739", "DCM", "Ublituximab ^89^Zr"))); Codes->insert(OFMake_pair(UCBJ_C11, DSRBasicCodedEntry("C4506788", "UMLS", "UCB-J C^11^"))); Codes->insert(OFMake_pair(XmAb5574_89Zr, DSRBasicCodedEntry("126734", "DCM", "XmAb5574 ^89^Zr"))); diff --git a/dcmsr/libcmr/cid4031.cc b/dcmsr/libcmr/cid4031.cc index 9b3d0de1..49a3d514 100644 --- a/dcmsr/libcmr/cid4031.cc +++ b/dcmsr/libcmr/cid4031.cc @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class CID4031_CommonAnatomicRegion * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:50:03 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:50 by J. Riesmeier * */ @@ -18,7 +18,7 @@ // general information on CID 4031 (Common Anatomic Region) #define CONTEXT_GROUP_NUMBER "4031" -#define CONTEXT_GROUP_VERSION "20220922" +#define CONTEXT_GROUP_VERSION "20221224" #define CONTEXT_GROUP_UID "1.2.840.10008.6.1.308" #define CONTEXT_GROUP_TYPE OFTrue /* extensible */ @@ -228,7 +228,7 @@ CID4031_CommonAnatomicRegion::CodeList &CID4031_CommonAnatomicRegion::getCodes() Codes->insert(OFMake_pair(Patella, DSRBasicCodedEntry("64234005", "SCT", "Patella"))); Codes->insert(OFMake_pair(Pelvis, DSRBasicCodedEntry("816092008", "SCT", "Pelvis"))); Codes->insert(OFMake_pair(PelvisAndLowerExtremities, DSRBasicCodedEntry("1231522001", "SCT", "Pelvis and lower extremities"))); - Codes->insert(OFMake_pair(Phantom, DSRBasicCodedEntry("113681", "DCM", "Phantom"))); + Codes->insert(OFMake_pair(Phantom, DSRBasicCodedEntry("706342009", "SCT", "Phantom"))); Codes->insert(OFMake_pair(Prostate, DSRBasicCodedEntry("41216001", "SCT", "Prostate"))); Codes->insert(OFMake_pair(Rectum, DSRBasicCodedEntry("34402009", "SCT", "Rectum"))); Codes->insert(OFMake_pair(Rib, DSRBasicCodedEntry("113197003", "SCT", "Rib"))); diff --git a/dcmsr/libcmr/cid4031e.cc b/dcmsr/libcmr/cid4031e.cc index 2a080128..7183af20 100644 --- a/dcmsr/libcmr/cid4031e.cc +++ b/dcmsr/libcmr/cid4031e.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class CID4031e_CommonAnatomicRegion @@ -30,7 +30,7 @@ struct DefinedTermTypeMapStruct * constant definitions * *------------------------*/ -// mapping extracted from DICOM PS 3.16-2020c Table L-1 +// mapping extracted manually from DICOM PS 3.16-2023b Table L-1 static const DefinedTermTypeMapStruct DefinedTermTypeMap[] = { @@ -39,6 +39,7 @@ static const DefinedTermTypeMapStruct DefinedTermTypeMap[] = {"ACJOINT", CID4031_CommonAnatomicRegion::AcromioclavicularJoint}, {"ANKLE", CID4031_CommonAnatomicRegion::AnkleJoint}, {"BILEDUCT", CID4031_CommonAnatomicRegion::BileDuct}, + {"BILIARYTRACT​", CID4031_CommonAnatomicRegion::BiliaryTract}, {"BLADDER", CID4031_CommonAnatomicRegion::Bladder}, {"BREAST", CID4031_CommonAnatomicRegion::Breast}, {"BRONCHUS", CID4031_CommonAnatomicRegion::Bronchus}, @@ -50,8 +51,8 @@ static const DefinedTermTypeMapStruct DefinedTermTypeMap[] = {"CHESTABDPELVIS", CID4031_CommonAnatomicRegion::ChestAbdomenAndPelvis}, {"CLAVICLE", CID4031_CommonAnatomicRegion::Clavicle}, {"COCCYX", CID4031_CommonAnatomicRegion::Coccyx}, - {"COMMONBILEDUCT", CID4031_CommonAnatomicRegion::CommonBileDuct}, {"COLON", CID4031_CommonAnatomicRegion::Colon}, + {"COMMONBILEDUCT", CID4031_CommonAnatomicRegion::CommonBileDuct}, {"DUODENUM", CID4031_CommonAnatomicRegion::Duodenum}, {"ELBOW", CID4031_CommonAnatomicRegion::ElbowJoint}, {"WHOLEBODY", CID4031_CommonAnatomicRegion::EntireBody}, @@ -78,10 +79,11 @@ static const DefinedTermTypeMapStruct DefinedTermTypeMap[] = {"KNEE", CID4031_CommonAnatomicRegion::Knee}, {"LARGEINTESTINE", CID4031_CommonAnatomicRegion::LargeIntestine}, {"LARYNX", CID4031_CommonAnatomicRegion::Larynx}, - {"LEG", CID4031_CommonAnatomicRegion::LowerLeg}, + {"LOWERLEG", CID4031_CommonAnatomicRegion::LowerLeg}, + {"LOWERLIMB", CID4031_CommonAnatomicRegion::LowerLimb}, {"LSPINE", CID4031_CommonAnatomicRegion::LumbarSpine}, {"LSSPINE", CID4031_CommonAnatomicRegion::LumboSacralSpine}, - {"JAW", CID4031_CommonAnatomicRegion::Mandible}, // same Defined Term as for (T-D1213,SRT,"Jaw region") + {"MANDIBLE", CID4031_CommonAnatomicRegion::Mandible}, {"MASTOID", CID4031_CommonAnatomicRegion::MastoidBone}, {"MAXILLA", CID4031_CommonAnatomicRegion::Maxilla}, {"MEDIASTINUM", CID4031_CommonAnatomicRegion::Mediastinum}, @@ -93,9 +95,12 @@ static const DefinedTermTypeMapStruct DefinedTermTypeMap[] = {"ORBIT", CID4031_CommonAnatomicRegion::OrbitalStructure}, {"PANCREAS", CID4031_CommonAnatomicRegion::Pancreas}, {"PANCREATICDUCT", CID4031_CommonAnatomicRegion::PancreaticDuct}, + {"PANCBILEDUCT​", CID4031_CommonAnatomicRegion::PancreaticDuctAndBileDuctSystems}, {"PAROTID", CID4031_CommonAnatomicRegion::ParotidGland}, {"PATELLA", CID4031_CommonAnatomicRegion::Patella}, {"PELVIS", CID4031_CommonAnatomicRegion::Pelvis}, + {"PELVISLOWEXTREMT​", CID4031_CommonAnatomicRegion::PelvisAndLowerExtremities}, + {"PHANTOM", CID4031_CommonAnatomicRegion::Phantom}, {"PROSTATE", CID4031_CommonAnatomicRegion::Prostate}, {"RECTUM", CID4031_CommonAnatomicRegion::Rectum}, {"RIB", CID4031_CommonAnatomicRegion::Rib}, @@ -119,7 +124,8 @@ static const DefinedTermTypeMapStruct DefinedTermTypeMap[] = {"THUMB", CID4031_CommonAnatomicRegion::Thumb}, {"TOE", CID4031_CommonAnatomicRegion::Toe}, {"TRACHEA", CID4031_CommonAnatomicRegion::Trachea}, - {"ARM", CID4031_CommonAnatomicRegion::UpperArm}, + {"UPPERARM", CID4031_CommonAnatomicRegion::UpperArm}, + {"UPPERLIMB", CID4031_CommonAnatomicRegion::UpperLimb}, {"UPRURINARYTRACT", CID4031_CommonAnatomicRegion::UpperUrinaryTract}, {"URETER", CID4031_CommonAnatomicRegion::Ureter}, {"URETHRA", CID4031_CommonAnatomicRegion::Urethra}, diff --git a/dcmsr/libcmr/cid42.cc b/dcmsr/libcmr/cid42.cc index c2ca133a..a94557a9 100644 --- a/dcmsr/libcmr/cid42.cc +++ b/dcmsr/libcmr/cid42.cc @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class CID42_NumericValueQualifier * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:49:57 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:44 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid6147.cc b/dcmsr/libcmr/cid6147.cc index be67b826..0ddde5cb 100644 --- a/dcmsr/libcmr/cid6147.cc +++ b/dcmsr/libcmr/cid6147.cc @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class CID6147_ResponseCriteria * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:50:03 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:51 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid7021.cc b/dcmsr/libcmr/cid7021.cc index 3527fc3f..107c2ba6 100644 --- a/dcmsr/libcmr/cid7021.cc +++ b/dcmsr/libcmr/cid7021.cc @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class CID7021_MeasurementReportDocumentTitle * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:50:04 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:52 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid7181.cc b/dcmsr/libcmr/cid7181.cc index 75975410..5467a1d3 100644 --- a/dcmsr/libcmr/cid7181.cc +++ b/dcmsr/libcmr/cid7181.cc @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class CID7181_AbstractMultiDimensionalImageModelComponentUnit * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:50:05 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:53 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid7445.cc b/dcmsr/libcmr/cid7445.cc index f78b5f96..712c53e2 100644 --- a/dcmsr/libcmr/cid7445.cc +++ b/dcmsr/libcmr/cid7445.cc @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class CID7445_DeviceParticipatingRole * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:50:06 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:54 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid7452.cc b/dcmsr/libcmr/cid7452.cc index 5e96fa68..6963fedc 100644 --- a/dcmsr/libcmr/cid7452.cc +++ b/dcmsr/libcmr/cid7452.cc @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class CID7452_OrganizationalRole * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:50:06 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:55 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid7453.cc b/dcmsr/libcmr/cid7453.cc index c6b0ed3c..840f595f 100644 --- a/dcmsr/libcmr/cid7453.cc +++ b/dcmsr/libcmr/cid7453.cc @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class CID7453_PerformingRole * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:50:07 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:56 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid7464.cc b/dcmsr/libcmr/cid7464.cc index 468c0148..66c3c246 100644 --- a/dcmsr/libcmr/cid7464.cc +++ b/dcmsr/libcmr/cid7464.cc @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class CID7464_GeneralRegionOfInterestMeasurementModifier * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:50:08 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:57 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid7469.cc b/dcmsr/libcmr/cid7469.cc index 93603705..8aefba8f 100644 --- a/dcmsr/libcmr/cid7469.cc +++ b/dcmsr/libcmr/cid7469.cc @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class CID7469_GenericIntensityAndSizeMeasurement * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:50:09 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:58 by J. Riesmeier * */ diff --git a/dcmsr/libcmr/cid7551.cc b/dcmsr/libcmr/cid7551.cc index 66f34c7f..a6d8ac14 100644 --- a/dcmsr/libcmr/cid7551.cc +++ b/dcmsr/libcmr/cid7551.cc @@ -1,12 +1,12 @@ /* * - * Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany + * Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany * All rights reserved. See COPYRIGHT file for details. * * Source file for class CID7551_GenericPurposeOfReferenceToImagesAndCoordinatesInMeasurement * - * Generated automatically from DICOM PS 3.16-2022d - * File created on 2022-10-24 17:50:10 by J. Riesmeier + * Generated automatically from DICOM PS 3.16-2023a + * File created on 2023-02-02 17:56:59 by J. Riesmeier * */ diff --git a/dcmsr/libsrc/dsrimgvl.cc b/dcmsr/libsrc/dsrimgvl.cc index 99b7d24b..1b173b58 100644 --- a/dcmsr/libsrc/dsrimgvl.cc +++ b/dcmsr/libsrc/dsrimgvl.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2000-2021, OFFIS e.V. + * Copyright (C) 2000-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -688,7 +688,7 @@ OFBool DSRImageReferenceValue::appliesToSegment(const Uint16 segmentNumber) cons OFBool DSRImageReferenceValue::isSegmentationObject(const OFString &sopClassUID) const { - /* check for all segmentation SOP classes (according to DICOM PS 3.6-2020c) */ + /* check for all segmentation SOP classes (according to DICOM PS 3.6-2023c) */ return (sopClassUID == UID_SegmentationStorage) || (sopClassUID == UID_SurfaceSegmentationStorage); } diff --git a/dcmsr/libsrc/dsrtypes.cc b/dcmsr/libsrc/dsrtypes.cc index c952f1b2..08414ad9 100644 --- a/dcmsr/libsrc/dsrtypes.cc +++ b/dcmsr/libsrc/dsrtypes.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2000-2022, OFFIS e.V. + * Copyright (C) 2000-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -397,7 +397,8 @@ static const S_PresentationStateTypeNameMap PresentationStateTypeNameMap[] = {DSRTypes::PT_AdvancedBlending, UID_AdvancedBlendingPresentationStateStorage, "ABPS"}, {DSRTypes::PT_VolumeRendering, UID_VolumeRenderingVolumetricPresentationStateStorage, "VR-VPS"}, {DSRTypes::PT_SegmentedVolumeRendering, UID_SegmentedVolumeRenderingVolumetricPresentationStateStorage, "SVR-VPS"}, - {DSRTypes::PT_MultipleVolumeRendering, UID_MultipleVolumeRenderingVolumetricPresentationStateStorage, "MVR-VPS"} + {DSRTypes::PT_MultipleVolumeRendering, UID_MultipleVolumeRenderingVolumetricPresentationStateStorage, "MVR-VPS"}, + {DSRTypes::PT_VariableModalityLUT, UID_VariableModalityLUTSoftcopyPresentationStateStorage, "VML-SPS"} }; diff --git a/dcmsr/libsrc/dsrwavvl.cc b/dcmsr/libsrc/dsrwavvl.cc index c96e1681..b89bf2ab 100644 --- a/dcmsr/libsrc/dsrwavvl.cc +++ b/dcmsr/libsrc/dsrwavvl.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2000-2021, OFFIS e.V. + * Copyright (C) 2000-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -271,7 +271,7 @@ OFCondition DSRWaveformReferenceValue::checkSOPClassUID(const OFString &sopClass OFCondition result = DSRCompositeReferenceValue::checkSOPClassUID(sopClassUID); if (result.good()) { - /* check for all valid/known SOP classes (according to DICOM PS 3.6-2021c) */ + /* check for all valid/known SOP classes (according to DICOM PS 3.6-2023c) */ if ((sopClassUID != UID_TwelveLeadECGWaveformStorage) && (sopClassUID != UID_GeneralECGWaveformStorage) && (sopClassUID != UID_AmbulatoryECGWaveformStorage) && @@ -286,7 +286,8 @@ OFCondition DSRWaveformReferenceValue::checkSOPClassUID(const OFString &sopClass (sopClassUID != UID_ElectromyogramWaveformStorage) && (sopClassUID != UID_ElectrooculogramWaveformStorage) && (sopClassUID != UID_SleepElectroencephalogramWaveformStorage) && - (sopClassUID != UID_BodyPositionWaveformStorage)) + (sopClassUID != UID_BodyPositionWaveformStorage) && + (sopClassUID != UID_General32BitECGWaveformStorage)) { REPORT_WARNING("Invalid or unknown waveform SOP class referenced from WAVEFORM content item") result = SR_EC_InvalidValue; diff --git a/dcmtls/docs/certstor.dox b/dcmtls/docs/certstor.dox index 6533028f..8c464e2f 100644 --- a/dcmtls/docs/certstor.dox +++ b/dcmtls/docs/certstor.dox @@ -64,31 +64,54 @@ The DICOM standard defines a number of security profiles for the use of the DICOM network protocol over TLS. DCMTK supports the following profiles: \verbatim + +pg --profile-8996 + BCP 195 RFC 8996 TLS Profile (default) + + +pm --profile-8996-mod + Modified BCP 195 RFC 8996 TLS Profile + + # only available if underlying TLS library supports + # all TLS features required for this profile + +py --profile-bcp195-nd - Non-downgrading BCP 195 TLS Profile (default) + Non-downgrading BCP 195 TLS Profile (retired) +px --profile-bcp195 - BCP 195 TLS Profile + BCP 195 TLS Profile (retired) +pz --profile-bcp195-ex - Extended BCP 195 TLS Profile - - +pa --profile-aes - AES TLS Secure Transport Connection Profile (retired) + Extended BCP 195 TLS Profile (retired) +pb --profile-basic Basic TLS Secure Transport Connection Profile (retired) + # only available if underlying TLS library supports 3DES + + +pa --profile-aes + AES TLS Secure Transport Connection Profile (retired) + +pn --profile-null Authenticated unencrypted communication (retired, was used in IHE ATNA) \endverbatim -The Non-downgrading BCP 195 TLS Profile, which is selected by default, is -currently the most secure choice, as older protocol versions and cipher suites -are explicitly disabled. It does not support backward compatibility with the -older profiles. It uses either TLS version 1.2 or 1.3 and will default to TLS -1.3 when possible. +The BCP 195 RFC 8996 TLS Profile, which is selected by default, is a secure +choice while providing backward compatibility with the earlier BCP 195 profiles. +It does not support backward compatibility with the older profiles. +It uses either TLS version 1.2 or 1.3 and will default to TLS 1.3 when possible. + +The Modified BCP 195 RFC 8996 TLS Profile, which adds further constraints +compared to the BCP 195 RFC 8996 TLS Profile, cannot be implemented with +OpenSSL 1.0.2 to 3.0.x because it requires support for the TLS 1.2 Camellia +ciphersuites in GCM mode, which is not available in OpenSSL. Should future +OpenSSL releases add support for these ciphersuites, then this option will +automatically be enabled when compiling DCMTK. + +The Non-downgrading BCP 195 TLS Profile, which was the default in DCMTK 3.6.7, +also disables older protocol versions and cipher suites. It does, however, +support DHE ciphersuites, whereas RFC 9325 recommends that these should not +be used. It uses either TLS version 1.2 or 1.3 and will default to TLS 1.3 +when possible. The BCP 195 TLS Profile, which was the default up to DCMTK 3.6.6, will try to negotiate cryptographic algorithms that are currently considered secure, but @@ -128,13 +151,17 @@ using the following option: add ciphersuite to list of negotiated suites \endverbatim -The list of supported ciphersuites can be printed using the following option: +The list of supported TLS 1.0-1.2 ciphersuites can be printed +using the following option: \verbatim +cc --list-ciphers show list of supported TLS ciphersuites and exit \endverbatim +Option \c \--cipher can be specified more than once to add multiple +ciphersuites. + \section dcmtls_certstore_peer_authentication Peer authentication By default, the TLS implementation in dcmtls will require both client and server @@ -197,6 +224,8 @@ line options for this purpose: add certificates in d to list of certificates \endverbatim +Both options can be specified more than once, also in combination. + \subsection dcmtls_certstore_certification_authority_file File-based management of trusted root certificates The file-based option loads a file and adds all the certificates or CRLs present @@ -276,8 +305,7 @@ The following CRL options are available starting with DCMTK 3.6.7: \verbatim +crl --add-crl-file [f]ilename: string - add certificate revocation list file - (implies --enable-crl-vfy) + add certificate revocation list file (implies --enable-crl-vfy) +crv --enable-crl-vfy enable leaf CRL verification diff --git a/dcmtls/docs/ciphers.txt b/dcmtls/docs/ciphers.txt index c8cc48c3..03bf75b3 100644 --- a/dcmtls/docs/ciphers.txt +++ b/dcmtls/docs/ciphers.txt @@ -31,14 +31,56 @@ on their own priorities, e.g. by always selecting the most secure ciphersuite. In DCMTK, the selection of ciphersuites is based on "TLS profiles", which follow the secure profiles define in DICOM Part 15: -- BCP 195 TLS Profile (default) +- BCP 195 RFC 8996 TLS Profile (default) + This profile proposes the following set of ciphersuites: + + - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (only TLS 1.2) + - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (only TLS 1.2) + - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (only TLS 1.2) + - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (only TLS 1.2) + + This profile will support TLS 1.3 when compiled against OpenSSL 1.1.1 + or newer. In this case, the following TLS 1.3 ciphersuites will be + proposed additionally: + + - TLS_AES_256_GCM_SHA384 (only TLS 1.3) + - TLS_CHACHA20_POLY1305_SHA256 (only TLS 1.3) + - TLS_AES_128_GCM_SHA256 (only TLS 1.3) + - TLS_AES_128_CCM_SHA256 (only TLS 1.3) + - TLS_AES_128_CCM_8_SHA256 (only TLS 1.3) + +- Modified BCP 195 RFC 8996 TLS Profile + This profile proposes the following set of ciphersuites: + + - TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 (only TLS 1.2) + - TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 (only TLS 1.2) + - TLS_ECDHE_ECDSA_WITH_AES_128_CCM (only TLS 1.2) + - TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 (only TLS 1.2) + - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (only TLS 1.2) + - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (only TLS 1.2) + - TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 (only TLS 1.2) + - TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 (only TLS 1.2) + - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (only TLS 1.2) + - TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 (only TLS 1.2) + - TLS_ECDHE_ECDSA_WITH_AES_256_CCM (only TLS 1.2) + - TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8 (only TLS 1.2) + - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (only TLS 1.2) + - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (only TLS 1.2) + + - TLS_AES_256_GCM_SHA384 (only TLS 1.3) + - TLS_CHACHA20_POLY1305_SHA256 (only TLS 1.3) + - TLS_AES_128_GCM_SHA256 (only TLS 1.3) + - TLS_AES_128_CCM_SHA256 (only TLS 1.3) + - TLS_AES_128_CCM_8_SHA256 (only TLS 1.3) + +- BCP 195 TLS Profile (retired) This profile proposes the following set of ciphersuites: - TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (only TLS 1.2) - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (only TLS 1.2) - TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (only TLS 1.2) - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (only TLS 1.2) - - TLS_RSA_WITH_AES_128_CBC_SHA - - TLS_RSA_WITH_3DES_EDE_CBC_SHA + - TLS_RSA_WITH_AES_128_CBC_SHA (TLS 1.0 - 1.2) + - TLS_RSA_WITH_3DES_EDE_CBC_SHA (TLS 1.0 - 1.2) The first four ciphersuites are modern, state-of the art ciphersuites but only work with TLS version 1.2 (or newer). The other two ciphersuites @@ -47,7 +89,17 @@ follow the secure profiles define in DICOM Part 15: Transport Connection Profile (e.g. DCMTK versions older than 3.6.4) and can be used with TLS version 1.0 (or newer). -- Non-downgrading BCP 195 TLS Profile + This profile will support TLS 1.3 when compiled against OpenSSL 1.1.1 + or newer. In this case, the following TLS 1.3 ciphersuites will be + proposed additionally: + + - TLS_AES_256_GCM_SHA384 (only TLS 1.3) + - TLS_CHACHA20_POLY1305_SHA256 (only TLS 1.3) + - TLS_AES_128_GCM_SHA256 (only TLS 1.3) + - TLS_AES_128_CCM_SHA256 (only TLS 1.3) + - TLS_AES_128_CCM_8_SHA256 (only TLS 1.3) + +- Non-downgrading BCP 195 TLS Profile (retired) This profile proposes the following set of ciphersuites: - TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (only TLS 1.2) - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (only TLS 1.2) @@ -57,7 +109,17 @@ follow the secure profiles define in DICOM Part 15: Furthermore, when this profile is active, only TLS version 1.2 or newer will be negotiated. -- Extended BCP 195 TLS Profile + This profile will support TLS 1.3 when compiled against OpenSSL 1.1.1 + or newer. In this case, the following TLS 1.3 ciphersuites will be + proposed additionally: + + - TLS_AES_256_GCM_SHA384 (only TLS 1.3) + - TLS_CHACHA20_POLY1305_SHA256 (only TLS 1.3) + - TLS_AES_128_GCM_SHA256 (only TLS 1.3) + - TLS_AES_128_CCM_SHA256 (only TLS 1.3) + - TLS_AES_128_CCM_8_SHA256 (only TLS 1.3) + +- Extended BCP 195 TLS Profile (retired) This profile proposes the following set of ciphersuites: - TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (only TLS 1.2) - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (only TLS 1.2) @@ -123,11 +185,13 @@ may also depend on the OpenSSL library with which DCMTK is compiled: Connection Profile will not offer backwards compatibility with the Basic TLS profile. -OpenSSL versions older than 1.0.1 are not supported anymore, and -we recommend the use of OpenSSL 1.0.2 or newer since some optional -features recommended by RFC 7525 (BCP 195) are only available starting -with this release. +- The TLS 1.3 ciphersuites are only available when compiled against + OpenSSL 1.1.1 or newer. +OpenSSL versions older than 1.0.2 are not supported anymore, and +we recommend the use of OpenSSL 1.1.1 or newer since because the +considerably improved TLS 1.3 protocol is only available starting +with this release. ============================== NOTES ON CIPHERSUITE SELECTION @@ -201,54 +265,64 @@ OpenSSL has been compiled (see above for details). - TLS_RSA_WITH_NULL_SHA - TLS_RSA_WITH_3DES_EDE_CBC_SHA - - TLS_RSA_WITH_AES_128_GCM_SHA256 - TLS_RSA_WITH_AES_128_CBC_SHA + - TLS_RSA_WITH_CAMELLIA_128_CBC_SHA - TLS_RSA_WITH_AES_128_CBC_SHA256 - - TLS_RSA_WITH_AES_256_GCM_SHA384 + - TLS_RSA_WITH_AES_128_GCM_SHA256 + - TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA + - TLS_ECDH_RSA_WITH_AES_128_CBC_SHA + - TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 + - TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 + - TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 + - TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 + - TLS_RSA_WITH_CAMELLIA_256_CBC_SHA - TLS_RSA_WITH_AES_256_CBC_SHA - TLS_RSA_WITH_AES_256_CBC_SHA256 - - TLS_RSA_WITH_CAMELLIA_128_CBC_SHA - - TLS_RSA_WITH_CAMELLIA_256_CBC_SHA - - TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 + - TLS_RSA_WITH_AES_256_GCM_SHA384 + - TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA + - TLS_ECDH_RSA_WITH_AES_256_CBC_SHA + - TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 + - TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 + - TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 + - TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 - TLS_DHE_DSS_WITH_AES_128_CBC_SHA - - TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 - - TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 - - TLS_DHE_DSS_WITH_AES_256_CBC_SHA - - TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 - TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA - - TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA - - TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 - TLS_DHE_RSA_WITH_AES_128_CBC_SHA - - TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 - - TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 - - TLS_DHE_RSA_WITH_AES_256_CBC_SHA - - TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 - TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA - - TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA - - TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 - - TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA - - TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 - - TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 - - TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA - - TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 - - TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 - - TLS_ECDH_RSA_WITH_AES_128_CBC_SHA - - TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 - - TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 - - TLS_ECDH_RSA_WITH_AES_256_CBC_SHA - - TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 - - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 + - TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 + - TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 + - TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 + - TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 - TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA - - TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 - - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 - - TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA - - TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 - - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA + - TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 - - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 + - TLS_ECDHE_ECDSA_WITH_AES_128_CCM + - TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 + - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 + - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 + - TLS_DHE_DSS_WITH_AES_256_CBC_SHA + - TLS_DHE_RSA_WITH_AES_256_CBC_SHA + - TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 + - TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 + - TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 + - TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 + - TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 + - TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA - TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA + - TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 - TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 - - TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 - TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 + - TLS_ECDHE_ECDSA_WITH_AES_256_CCM + - TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8 + - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 + - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 + +TLS 1.3 ciphersuites: + + - TLS_AES_128_CCM_SHA256 + - TLS_AES_128_CCM_8_SHA256 + - TLS_AES_128_GCM_SHA256 + - TLS_CHACHA20_POLY1305_SHA256 + - TLS_AES_256_GCM_SHA384 diff --git a/dcmtls/docs/dcmtls.dox b/dcmtls/docs/dcmtls.dox index c235acea..3c49363c 100644 --- a/dcmtls/docs/dcmtls.dox +++ b/dcmtls/docs/dcmtls.dox @@ -46,8 +46,8 @@ if (tLayer->setCertificateFile("certificate.pem", SSL_FILETYPE_PEM).bad()) return; } -// enable the ciphersuites for the BCP 195 secure transport profile -tLayer->setTLSProfile(TSP_Profile_BCP195); +// enable the ciphersuites for the BCP 195 RFC 8996 secure transport profile +tLayer->setTLSProfile(TSP_Profile_BCP_195_RFC_8996); tLayer->activateCipherSuites(); // accept any certificate from the remote site (not recommended) diff --git a/dcmtls/include/dcmtk/dcmtls/tlsciphr.h b/dcmtls/include/dcmtk/dcmtls/tlsciphr.h index eb55d22e..ebb07eee 100644 --- a/dcmtls/include/dcmtk/dcmtls/tlsciphr.h +++ b/dcmtls/include/dcmtk/dcmtls/tlsciphr.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2018-2021, OFFIS e.V. + * Copyright (C) 2018-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -51,12 +51,14 @@ enum DcmTLSSecurityProfile /** DICOM Basic TLS Secure Transport Connection Profile (retired), * using the ciphersuite TLS_RSA_WITH_3DES_EDE_CBC_SHA and TLS 1.0 or newer. + * This profile is retired. */ TSP_Profile_Basic, /** DICOM AES TLS Secure Transport Connection Profile (retired), * using the ciphersuites TLS_RSA_WITH_AES_128_CBC_SHA and TLS_RSA_WITH_3DES_EDE_CBC_SHA, * and TLS 1.0 or newer. + * This profile is retired. */ TSP_Profile_AES, @@ -69,6 +71,7 @@ enum DcmTLSSecurityProfile * backward compatibility with older implementations while offering much * better security when used with implementations also supporting one of the * BCP 195 profiles. + * This profile is retired. */ TSP_Profile_BCP195, @@ -79,6 +82,7 @@ enum DcmTLSSecurityProfile * TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384. * It does not provide backwards compatibility with the older Basic and AES profiles, * and thus guarantees the higher security level of BCP 195. + * This profile is retired. */ TSP_Profile_BCP195_ND, @@ -92,9 +96,25 @@ enum DcmTLSSecurityProfile * This profile requires DHE keys of at least 2048 bits and ECDHE keys of at least 256 bits. * It does not provide backwards compatibility with the older Basic and AES profiles, * and thus guarantees the higher security level of BCP 195. + * This profile is retired. */ TSP_Profile_BCP195_Extended, + /** DICOM BCP 195 RFC 8996 TLS Profile, based on RFC 8996 and RFC 9325. + * This profile only negotiates TLS 1.2 or newer, and will not fall back to + * previous TLS versions. It provides the higher security level offered by the + * 2021 revised edition of BCP 195. + */ + TSP_Profile_BCP_195_RFC_8996, + + /** DICOM Modified BCP 195 RFC 8996 TLS Profile, based on RFC 8996 and RFC 9325. + * This profile only negotiates TLS 1.2 or newer, and will not fall back to + * previous TLS versions. It provides the higher security level offered by the + * 2021 revised edition of BCP 195 and implements various additional restrictions + * defined in the DICOM Standard. + */ + TSP_Profile_BCP_195_RFC_8996_Modified, + /** IHE ATNA Profile for Unencrypted In-house Communication (retired). * This profile uses the ciphersuite SSL_RSA_WITH_NULL_SHA and TLS 1.0 or newer. * This ciphersuite offers peer authentication and integrity of communication, @@ -118,7 +138,9 @@ enum DcmTLSCipherProtocolVersion /// Secure Socket Layer (SSL) version 3 or newer TPV_SSLv3, /// Transport Layer Security (TLS) version 1.2 or newer - TPV_TLSv12 + TPV_TLSv12, + /// Transport Layer Security (TLS) version 1.3 + TPV_TLSv13 }; @@ -142,8 +164,10 @@ enum DcmTLSCipherKeyExchange TKE_ECDH_RSA, /// Diffie-Hellman key exchange - TKE_DH + TKE_DH, + /// TLS 1.3 key exchange (always based on Diffie-Hellman) + TKE_TLSv13 }; @@ -164,7 +188,11 @@ enum DcmTLSCipherAuthentication TCA_ECDSA, /// RSA - TCA_RSA + TCA_RSA, + + /// TLS 1.3 authentication, supports ECDH and RSA + TCA_TLSv13 + }; @@ -212,7 +240,31 @@ enum DcmTLSCipherMAC TCM_SHA384, /// Authenticated Encryption with Associated Data (AEAD) - TCM_AEAD + TCM_AEAD, + + /// Cipher Block Chaining Message Authentication Code (CBC-MAC) + TCM_CBC_MAC + +}; + +/** This enum describes the block cipher mode of operation used in a certain + * TLS ciphersuite. + * @remark this enum is only available if DCMTK is compiled with + * OpenSSL support enabled. + */ +enum DcmTLSCipherMode +{ + /// Not applicable, e.g. stream cipher + TKM_NA, + + /// Cipher block chaining mode + TKM_CBC, + + /// Galois/Counter mode + TKM_GCM, + + /// Counter and CBC-MAC Mode + TKM_CCM }; @@ -279,7 +331,7 @@ public: */ void clearTLSProfile(); - /** adds a ciphersuite to the list of ciphersuites for TLS negotiation. + /** adds a TLS 1.0-1.2 ciphersuite to the list of ciphersuites for TLS negotiation. * It is the responsibility of the user to ensure that the added ciphersuite * does not break the rules of the selected profile. Use with care! * @param suite TLS ciphersuite name, in the official TLS name form. @@ -288,7 +340,7 @@ public: OFCondition addCipherSuite(const char *suite); /** returns a string in OpenSSL syntax that contains the currently defined - * list of TLS ciphersuites. + * list of TLS 1.0-1.2 ciphersuites. * @param cslist The list of ciphersuites in OpenSSL syntax is written to this string. * @param isServer true if the list of cipher suites is intended for * a TLS server. In this case, the list of ciphersuites will be reordered @@ -296,6 +348,15 @@ public: */ void getListOfCipherSuitesForOpenSSL(OFString& cslist, OFBool isServer) const; + /** returns a string in OpenSSL syntax that contains the currently defined + * list of TLS 1.3 ciphersuites. + * @param cslist The list of ciphersuites in OpenSSL syntax is written to this string. + * @param isServer true if the list of cipher suites is intended for + * a TLS server. In this case, the list of ciphersuites will be reordered + * from strongest to weakest, as recommended by BCP 195. + */ + void getListOfTLS13CipherSuitesForOpenSSL(OFString& cslist, OFBool isServer) const; + /** returns the set of flags that need to be activated in OpenSSL * depending on the selected TLS profile. * @return flags for openssl @@ -323,83 +384,172 @@ public: */ OFBool isTLS13Enabled() const; - /** print a list of supported ciphersuites to the given output stream + /** print a list of supported TLS 1.0-1.2 ciphersuites to the given output stream * @param os output stream */ void printSupportedCiphersuites(STD_NAMESPACE ostream& os) const; - /** returns the number of known ciphersuites. + /** print a list of supported TLS 1.3 ciphersuites to the given output stream + * @param os output stream + */ + void printSupportedTLS13Ciphersuites(STD_NAMESPACE ostream& os) const; + + /** returns the number of known TLS 1.0-1.2 ciphersuites. * @return number of known ciphersuites */ static size_t getNumberOfCipherSuites(); - /** looks up the index of the given ciphersuite by name + /** returns the number of known TLS 1.3 ciphersuites. + * @return number of known ciphersuites + */ + static size_t getNumberOfTLS13CipherSuites(); + + /** looks up the index of the given TLS 1.0-1.2 ciphersuite by name * @param tlsCipherSuiteName ciphersuite name in RFC 2246 form * @returns index into list of ciphersuites, DcmTLSCiphersuiteHandler::unknownCipherSuiteIndex if ciphersuite unknown */ static size_t lookupCiphersuite(const char *tlsCipherSuiteName); - /** looks up the index of the given ciphersuite by OpenSSL name + /** looks up the index of the given TLS 1.3 ciphersuite by name + * @param tlsCipherSuiteName ciphersuite name in RFC 2246 form + * @returns index into list of ciphersuites, DcmTLSCiphersuiteHandler::unknownCipherSuiteIndex if ciphersuite unknown + */ + static size_t lookupTLS13Ciphersuite(const char *tlsCipherSuiteName); + + /** looks up the index of the given TLS 1.0-1.2 ciphersuite by OpenSSL name * @param opensslCipherSuiteName ciphersuite name in the form used by OpenSSL * @returns index into list of ciphersuites, DcmTLSCiphersuiteHandler::unknownCipherSuiteIndex if ciphersuite unknown */ static size_t lookupCiphersuiteByOpenSSLName(const char *opensslCipherSuiteName); - /** returns a ciphersuite name in RFC 2246 (TLS) form + /** looks up the index of the given TLS 1.3 ciphersuite by OpenSSL name + * @param opensslCipherSuiteName ciphersuite name in the form used by OpenSSL + * @returns index into list of ciphersuites, DcmTLSCiphersuiteHandler::unknownCipherSuiteIndex if ciphersuite unknown + */ + static size_t lookupTLS13CiphersuiteByOpenSSLName(const char *opensslCipherSuiteName); + + /** returns a TLS 1.0-1.2 ciphersuite name in RFC 2246 (TLS) form * @param idx index, must be < getNumberOfCipherSuites() * @return ciphersuite name */ static const char *getTLSCipherSuiteName(size_t idx); - /** returns a ciphersuite name in OpenSSL form + /** returns a TLS 1.3 ciphersuite name in RFC 2246 (TLS) form + * @param idx index, must be < getNumberOfCipherSuites() + * @return ciphersuite name + */ + static const char *getTLS13CipherSuiteName(size_t idx); + + /** returns a TLS 1.0-1.2 ciphersuite name in OpenSSL form * @param idx index, must be < getNumberOfCipherSuites() * @return ciphersuite name */ static const char *getOpenSSLCipherSuiteName(size_t idx); - /** returns the minimum SSL/TLS version required for the ciphersuite with the given index + /** returns a TLS 1.3 ciphersuite name in OpenSSL form + * @param idx index, must be < getNumberOfCipherSuites() + * @return ciphersuite name + */ + static const char *getOpenSSLTLS13CipherSuiteName(size_t idx); + + /** returns the minimum SSL/TLS version required for the TLS 1.0-1.2 ciphersuite with the given index * @param idx index, must be < getNumberOfCipherSuites() * @return minimum SSL/TLS version required */ static DcmTLSCipherProtocolVersion getCipherSuiteProtocolVersion(size_t idx); - /** returns the key exchange protocol used by the ciphersuite with the given index + /** returns the minimum SSL/TLS version required for the TLS 1.3 ciphersuite with the given index + * @param idx index, must be < getNumberOfCipherSuites() + * @return minimum SSL/TLS version required + */ + static DcmTLSCipherProtocolVersion getTLS13CipherSuiteProtocolVersion(size_t idx); + + /** returns the key exchange protocol used by the TLS 1.0-1.2 ciphersuite with the given index * @param idx index, must be < getNumberOfCipherSuites() * @return key exchange protocol */ static DcmTLSCipherKeyExchange getCipherSuiteKeyExchange(size_t idx); - /** returns the authentication algorithm used by the ciphersuite with the given index + /** returns the key exchange protocol used by the TLS 1.3 ciphersuite with the given index + * @param idx index, must be < getNumberOfCipherSuites() + * @return key exchange protocol + */ + static DcmTLSCipherKeyExchange getTLS13CipherSuiteKeyExchange(size_t idx); + + /** returns the authentication algorithm used by the TLS 1.0-1.2 ciphersuite with the given index * @param idx index, must be < getNumberOfCipherSuites() * @return authentication algorithm */ static DcmTLSCipherAuthentication getCipherSuiteAuthentication(size_t idx); - /** returns the encryption algorithm used by the ciphersuite with the given index + /** returns the authentication algorithm used by the TLS 1.3 ciphersuite with the given index + * @param idx index, must be < getNumberOfCipherSuites() + * @return authentication algorithm + */ + static DcmTLSCipherAuthentication getTLS13CipherSuiteAuthentication(size_t idx); + + /** returns the encryption algorithm used by the TLS 1.0-1.2 ciphersuite with the given index * @param idx index, must be < getNumberOfCipherSuites() * @return minimum SSL/TLS version required */ static DcmTLSCipherEncryption getCipherSuiteEncryption(size_t idx); - /** returns the message authentication code (MAC) algorithm used by the ciphersuite with the given index + /** returns the encryption algorithm used by the TLS 1.3 ciphersuite with the given index + * @param idx index, must be < getNumberOfCipherSuites() + * @return minimum SSL/TLS version required + */ + static DcmTLSCipherEncryption getTLS13CipherSuiteEncryption(size_t idx); + + /** returns the message authentication code (MAC) algorithm used by the TLS 1.0-1.2 ciphersuite with the given index * @param idx index, must be < getNumberOfCipherSuites() * @return message authentication code (MAC) algorithm */ static DcmTLSCipherMAC getCipherSuiteMAC(size_t idx); - /** returns the symmetric key size used by the ciphersuite with the given index + /** returns the message authentication code (MAC) algorithm used by the TLS 1.3 ciphersuite with the given index + * @param idx index, must be < getNumberOfCipherSuites() + * @return message authentication code (MAC) algorithm + */ + static DcmTLSCipherMAC getTLS13CipherSuiteMAC(size_t idx); + + /** returns the mode of operation used by the TLS 1.0-1.2 ciphersuite with the given index + * @param idx index, must be < getNumberOfCipherSuites() + * @return mode of operation for block ciphers, TKM_NA otherwise + */ + static DcmTLSCipherMode getCipherSuiteMode(size_t idx); + + /** returns the mode of operation used by the TLS 1.3 ciphersuite with the given index + * @param idx index, must be < getNumberOfCipherSuites() + * @return mode of operation for block ciphers, TKM_NA otherwise + */ + static DcmTLSCipherMode getTLS13CipherSuiteMode(size_t idx); + + /** returns the symmetric key size used by the TLS 1.0-1.2 ciphersuite with the given index * @param idx index, must be < getNumberOfCipherSuites() * @return symmetric key size, in bits */ static size_t getCipherSuiteKeySize(size_t idx); - /** returns the effective symmetric key size (i.e. security level) of the ciphersuite with the given index. + /** returns the symmetric key size used by the TLS 1.3 ciphersuite with the given index + * @param idx index, must be < getNumberOfCipherSuites() + * @return symmetric key size, in bits + */ + static size_t getTLS13CipherSuiteKeySize(size_t idx); + + /** returns the effective symmetric key size (i.e. security level) of the TLS 1.0-1.2 ciphersuite with the given index. * BCP 195 (2015) recommends that no ciphersuites with an effective key size of less than 112 bits should be used anymore with TLS. * @param idx index, must be < getNumberOfCipherSuites() * @return effective symmetric key size, in bits */ static size_t getCipherSuiteEffectiveKeySize(size_t idx); + /** returns the effective symmetric key size (i.e. security level) of the TLS 1.3 ciphersuite with the given index. + * BCP 195 (2015) recommends that no ciphersuites with an effective key size of less than 112 bits should be used anymore with TLS. + * @param idx index, must be < getNumberOfCipherSuites() + * @return effective symmetric key size, in bits + */ + static size_t getTLS13CipherSuiteEffectiveKeySize(size_t idx); + /** look up the name of the given security profile * @param profile the given security profile * @return name of security profile, never NULL. @@ -417,24 +567,33 @@ private: /// private undefined assignment operator DcmTLSCiphersuiteHandler& operator=(const DcmTLSCiphersuiteHandler&); - /** determine the set of ciphersuites that are supported both by DCMTK + /** determine the set of TLS 1.0-1.2 ciphersuites that are supported both by DCMTK * and the OpenSSL library we are currently using */ void determineSupportedCiphers(); - /** add ciphersuite by name, print error if unsupported + /** add TLS 1.0-1.2 ciphersuite by name, print error if unsupported * @param name ciphersuite name in RFC 2246 form * @return EC_Normal if successful, an error code otherwise */ OFCondition addRequiredCipherSuite(const char *name); + /** add TLS 1.3 ciphersuite by name, print error if unsupported + * @param name ciphersuite name in RFC 2246 form + * @return EC_Normal if successful, an error code otherwise + */ + OFCondition addRequiredTLS13CipherSuite(const char *name); + /** add 3DES ciphersuite, print warning if unsupported */ void addOptional3DESCipherSuite(); - /// current list of ciphersuites + /// current list of ciphersuites for TLS 1.0-1.2 OFVector ciphersuiteList; + /// current list of ciphersuites for TLS 1.3 + OFVector tls13ciphersuiteList; + /// currently selected DICOM TLS security profile DcmTLSSecurityProfile currentProfile; diff --git a/dcmtls/include/dcmtk/dcmtls/tlscond.h b/dcmtls/include/dcmtk/dcmtls/tlscond.h index 8a23d3a9..fe32dd90 100644 --- a/dcmtls/include/dcmtk/dcmtls/tlscond.h +++ b/dcmtls/include/dcmtk/dcmtls/tlscond.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2017-2021, OFFIS e.V. + * Copyright (C) 2017-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -233,6 +233,9 @@ extern DCMTK_DCMTLS_EXPORT const DcmTLSECGenericOpenSSLError DCMTLS_EC_GenericOp /// condition constant: OpenSSL I/O error, not further specified (SSL_ERROR_SYSCALL) extern DCMTK_DCMTLS_EXPORT const OFConditionConst DCMTLS_EC_OpenSSLIOError; +/// condition constant: DICOM TLS Secure Transport Connection Profile not supported +extern DCMTK_DCMTLS_EXPORT const OFConditionConst DCMTLS_EC_TLSProfileNotSupported; + // X.509 Verification Errors. These use condition codes > DCMTLS_EC_X509Verify_Offset. /// condition constant: X.509 certificate verification error - unspecified diff --git a/dcmtls/include/dcmtk/dcmtls/tlslayer.h b/dcmtls/include/dcmtk/dcmtls/tlslayer.h index 6781575d..91e17567 100644 --- a/dcmtls/include/dcmtk/dcmtls/tlslayer.h +++ b/dcmtls/include/dcmtk/dcmtls/tlslayer.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1998-2021, OFFIS e.V. + * Copyright (C) 1998-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -197,9 +197,13 @@ public: /** loads the certificate (public key) used for authentication of this application from a file. * @param fileName path to the certificate file * @param fileType, must be SSL_FILETYPE_PEM or SSL_FILETYPE_ASN1 + * @param profile the currently active TLS profile * @return EC_Normal if successful, an error code otherwise */ - OFCondition setCertificateFile(const char *fileName, DcmKeyFileFormat fileType); + OFCondition setCertificateFile( + const char *fileName, + DcmKeyFileFormat fileType, + DcmTLSSecurityProfile profile); /** checks if the private key and the certificate set using setPrivateKeyFile() * and setCertificateFile() match, i.e. if they establish a private/public key pair. @@ -279,6 +283,11 @@ public: */ OFCondition setTLSProfile(DcmTLSSecurityProfile profile); + /** return the currently selected TLS profile + * @return currently selected TLS profile + */ + DcmTLSSecurityProfile getTLSProfile() const; + /** clear the current list of ciphersuites. Equivalent to * calling setTLSProfile(TSP_Profile_None). */ @@ -326,6 +335,29 @@ public: */ OFBool writeRandomSeed(const char *randFile); + /** set SNI server name to be used in outgoing connections + * @param s server name, NULL to disable SNI + */ + void setClientSNI(const char *s) { clientSNI = s; } + + /** set SNI server name to be expected and checked in incoming connections + * if the ClientHello message contains an SNI field + * @param s server name, NULL to disable SNI + */ + void setServerSNI(const char *s) { serverSNI = s; } + + /** check if the requested SNI server name s matches the + * SNI server name defined by a prior call to setServerSNI(). + * @param s requested SNI server name + * @return OFTrue if server names matches, OFFalse otherwise + */ + OFBool checkServerSNI(const char *s) const; + + /** get the SNI server name + * @return SNI server name. Never returns NULL. + */ + const char *getServerSNI() const; + /** adds the contents of a file to the seed for the cryptographic * pseudo-random number generator. The file should contain real * random entropy data gathered from keystrokes, system events, @@ -397,15 +429,22 @@ public: */ static int getRSAKeySize(X509 *certificate); - /** checks the BCP 195 recommendations that RSA certificates - * should use SHA-256 hash keys. We also accept better SHA-2 - * hash keys (SHA-384 and SHA-512). + /** checks for the use of hash keys that are broken and too insecure to permit. + * Currently MD2, MD4 and MD5 are on our "blacklist". * @param certificate X.509 certificate - * @return NULL if everything is OK (i.e. the certificate is - * not RSA, or it is RSA and uses SHA-256 or better), + * @return NULL if the hash key algorithm is not on the blacklist, * the name of the hash key algorithm used otherwise. */ - static const char *checkRSAHashKeyIsSHA2(X509 *certificate); + static const char *checkHashKeyIsTooInSecure(X509 *certificate); + + /** checks the RFC 8325 recommendations that certificates + * should use SHA-256 (or better) hash keys. + * We accept the SHA-2 and SHA-3 family with 256 or more bits. + * @param certificate X.509 certificate + * @return NULL if the hash key algorithm is considered secure, + * the name of the hash key algorithm used otherwise. + */ + static const char *checkHashKeyIsSecure(X509 *certificate); /** returns the version name of the OpenSSL version used. * @return OpenSSL version name, never NULL. @@ -465,6 +504,11 @@ public: */ native_handle_type getNativeHandle(); + /// global variable populated in initializeOpenSSL(). + /// It contains an index number that is unique for the program lifetime + /// and can be used to store application specific data in an SSL structure. + static int contextStoreIndex; + private: /// private undefined copy constructor @@ -493,6 +537,22 @@ private: /// network role for this TLS layer T_ASC_NetworkRole role; + + /// SNI server name to be requested in outgoing connections + /// @remark this member is only available if DCMTK is compiled with + /// OpenSSL support enabled. + const char* clientSNI; + + /// SNI server name to be expected in incoming connections + /// @remark this member is only available if DCMTK is compiled with + /// OpenSSL support enabled. + const char* serverSNI; + + /// flag indicating whether a DSA certificate has been loaded. + /// In this case, TLS 1.3 cannot be used because it does not support + /// DSA certificates. + OFBool certificateTypeIsDSA; + }; #endif /* WITH_OPENSSL */ diff --git a/dcmtls/include/dcmtk/dcmtls/tlsopt.h b/dcmtls/include/dcmtk/dcmtls/tlsopt.h index ee97113c..b9b702b8 100644 --- a/dcmtls/include/dcmtk/dcmtls/tlsopt.h +++ b/dcmtls/include/dcmtk/dcmtls/tlsopt.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2017-2021, OFFIS e.V. + * Copyright (C) 2017-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -33,61 +33,21 @@ class DcmTLSTransportLayer; struct T_ASC_Network; struct T_ASC_Parameters; -/** A class that handles the command line arguments used by applications - * that support TLS. - * DcmTLSOptions handles storing the relevant options, printing the associated - * help text an information (e.g. OpenSSL library version), parsing and - * evaluating the given command line arguments and creating a - * DcmTLSTransportLayer object based on the collected information. +/** A class that handles the TLS options for DCMTK applications. + * DcmTLSOptionsBase allows a derived class to store the relevant options + * and to create a DcmTLSTransportLayer object based on the collected information. */ -class DCMTK_DCMTLS_EXPORT DcmTLSOptions +class DCMTK_DCMTLS_EXPORT DcmTLSOptionsBase { public: /** Constructor. * @param networkRole the network role to create a transport layer for */ - DcmTLSOptions(T_ASC_NetworkRole networkRole); + DcmTLSOptionsBase(T_ASC_NetworkRole networkRole); /// Destructor - virtual ~DcmTLSOptions(); - - /** Add TLS specific command line options to the OFCommandLine object - * passed to the constructor. - * @param cmd a reference to an OFCommandLine object used to parse - * the command line argument give to the calling application. - */ - void addTLSCommandlineOptions(OFCommandLine& cmd); - - /** Parse and evaluate the given command line arguments. - * @param app a reference to an OFConsoleApplication object used in the - * calling application. - * @param cmd a reference to an OFCommandLine object used to parse - * the command line argument give to the calling application. - */ - void parseArguments(OFConsoleApplication& app, OFCommandLine& cmd); - - /** Create a DcmTLSTransportLayer object based on the collected command - * line arguments. - * @param net pointer to network object in which the transport layer - * should be registered. May be NULL, in which case the caller - * must activate the transport layer manually using ASC_setTransportLayer(). - * @param params pointer to the association negotiation parameters object. - * For an association acceptor, this parameter is passed as NULL. - * If NULL is passed and the caller in an association requestor, - * then it is the responsibility of the caller to call ASC_setTransportLayerType() - * and set the right transport layer type for the association parameters. - * @param app a reference to an OFConsoleApplication object used in the - * calling application. - * @param cmd a reference to an OFCommandLine object used to parse - * the command line argument give to the calling application. - * @return EC_Normal if successful, an error code otherwise - */ - OFCondition createTransportLayer( - T_ASC_Network *net, - T_ASC_Parameters *params, - OFConsoleApplication& app, - OFCommandLine& cmd); + virtual ~DcmTLSOptionsBase(); /** Update the random seed file if this was requested by the given command * line arguments. @@ -96,26 +56,26 @@ public: * error condition indicating what went wrong in case the random seed * file could not be updated. */ - OFCondition writeRandomSeed(); + virtual OFCondition writeRandomSeed(); /** Returns true if a secure connection was requested, false otherwise. * Caller must ensure that parseArguments() has been run before this method. * @return true if secure connection requested, false otherwise */ - OFBool secureConnectionRequested() const; + virtual OFBool secureConnectionRequested() const; /** Returns a pointer to the transport layer object, or NULL if the object * has not yet been created by a call to createTransportLayer(). * @return pointer to transport layer object, may be NULL. */ - DcmTransportLayer *getTransportLayer(); + virtual DcmTransportLayer *getTransportLayer(); /** loads a certificate or certificate chain from a file and checks whether * it can be verified against the current settings of the trust store. * @param fileName path to the certificate file * @return EC_Normal if verification succeeded, an error code otherwise */ - OFCondition verifyClientCertificate(const char *fileName); + virtual OFCondition verifyClientCertificate(const char *fileName); /** loads a certificate file and checks whether it is a * valid (e.g. non-expired), self-signed root certificate that @@ -123,7 +83,7 @@ public: * @param fileName path to the certificate file * @return EC_Normal if certificate is a root certificate, an error code otherwise */ - OFCondition isRootCertificate(const char *fileName); + virtual OFCondition isRootCertificate(const char *fileName); /** checks if the command line option --list-ciphers was given. * In this case the list of supported TLS ciphersuites should be @@ -145,7 +105,7 @@ public: */ static void printLibraryVersion(); -private: +protected: #ifdef WITH_OPENSSL /// flag indicating the file format of certificates and private keys: PEM or ASN.1 /// @remark this member is only available if DCMTK is compiled with @@ -207,6 +167,21 @@ private: /// indicates whether we act as client, server or both T_ASC_NetworkRole opt_networkRole; + /// SNI server name to be requested in outgoing connections + /// @remark this member is only available if DCMTK is compiled with + /// OpenSSL support enabled. + const char* opt_clientSNI; + + /// SNI server name to be expected in incoming connections + /// @remark this member is only available if DCMTK is compiled with + /// OpenSSL support enabled. + const char* opt_serverSNI; + + /// CRL verification mode + /// @remark this member is only available if DCMTK is compiled with + /// OpenSSL support enabled. + DcmTLSCRLVerification opt_crlMode; + /// pointer to the secure transport layer managed by this object /// @remark this member is only available if DCMTK is compiled with /// OpenSSL support enabled. @@ -214,4 +189,65 @@ private: #endif // WITH_OPENSSL }; + +/** A class that handles the command line arguments used by applications + * that support TLS. + * DcmTLSOptions handles storing the relevant options, printing the associated + * help text an information (e.g. OpenSSL library version), parsing and + * evaluating the given command line arguments and creating a + * DcmTLSTransportLayer object based on the collected information. + */ +class DCMTK_DCMTLS_EXPORT DcmTLSOptions: public DcmTLSOptionsBase +{ +public: + + /** Constructor. + * @param networkRole the network role to create a transport layer for + */ + DcmTLSOptions(T_ASC_NetworkRole networkRole); + + /// Destructor + virtual ~DcmTLSOptions(); + + /** Add TLS specific command line options to the OFCommandLine object + * passed to the constructor. + * @param cmd a reference to an OFCommandLine object used to parse + * the command line argument give to the calling application. + */ + virtual void addTLSCommandlineOptions(OFCommandLine& cmd); + + /** Parse and evaluate the given command line arguments. + * @param app a reference to an OFConsoleApplication object used in the + * calling application. + * @param cmd a reference to an OFCommandLine object used to parse + * the command line argument give to the calling application. + */ + virtual void parseArguments(OFConsoleApplication& app, OFCommandLine& cmd); + + /** Create a DcmTLSTransportLayer object based on the collected command + * line arguments. + * @param net pointer to network object in which the transport layer + * should be registered. May be NULL, in which case the caller + * must activate the transport layer manually using ASC_setTransportLayer(). + * @param params pointer to the association negotiation parameters object. + * For an association acceptor, this parameter is passed as NULL. + * If NULL is passed and the caller in an association requestor, + * then it is the responsibility of the caller to call ASC_setTransportLayerType() + * and set the right transport layer type for the association parameters. + * @param app a reference to an OFConsoleApplication object used in the + * calling application. + * @param cmd a reference to an OFCommandLine object used to parse + * the command line argument give to the calling application. + * @return EC_Normal if successful, an error code otherwise + */ + virtual OFCondition createTransportLayer( + T_ASC_Network *net, + T_ASC_Parameters *params, + OFConsoleApplication& app, + OFCommandLine& cmd); + +private: + +}; + #endif // TLSOPT_H diff --git a/dcmtls/include/dcmtk/dcmtls/tlsscu.h b/dcmtls/include/dcmtk/dcmtls/tlsscu.h index 77415062..32fbda46 100644 --- a/dcmtls/include/dcmtk/dcmtls/tlsscu.h +++ b/dcmtls/include/dcmtk/dcmtls/tlsscu.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2010-2022, OFFIS e.V. + * Copyright (C) 2010-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -34,8 +34,9 @@ * class is derived from the general DcmSCU class and just adds the corresponding TLS * capabilities. * @remark This class is only available if DCMTK is compiled with OpenSSL support enabled. - * @warning This class is EXPERIMENTAL. Be careful to use it in production environment. - * API changes in the future are possible and likely to happen. + * @warning This class is DEPRECATED and will be removed from future DCMTK releases. + * Instead of using this class, directly use class DcmSCU, which offers the method + * DcmSCU::useSecureConnection() to enable a TLS connection. */ class DCMTK_DCMTLS_EXPORT DcmTLSSCU : public DcmSCU { diff --git a/dcmtls/libsrc/tlsciphr.cc b/dcmtls/libsrc/tlsciphr.cc index 4729fd51..da281330 100644 --- a/dcmtls/libsrc/tlsciphr.cc +++ b/dcmtls/libsrc/tlsciphr.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2018-2021, OFFIS e.V. + * Copyright (C) 2018-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -25,6 +25,7 @@ #include "dcmtk/dcmtls/tlsdefin.h" #include "dcmtk/dcmtls/tlscond.h" #include "dcmtk/dcmtls/tlslayer.h" /* for TLS_ERROR macro */ +#include "tlsfmacr.h" /* for OpenSSL feature macros */ #ifdef WITH_OPENSSL @@ -48,6 +49,7 @@ struct DcmCipherSuiteList DcmTLSCipherAuthentication authentication; DcmTLSCipherEncryption encryption; DcmTLSCipherMAC mac; + DcmTLSCipherMode mode; size_t keySize; size_t effectiveKeySize; }; @@ -70,93 +72,139 @@ static const DcmCipherSuiteList globalCipherSuiteList[] = // -- first all ciphersuites without forward secrecy -- // historic ciphersuites - {"TLS_RSA_WITH_NULL_SHA", SSL3_TXT_RSA_NULL_SHA, TPV_SSLv3, TKE_RSA, TCA_RSA, TCE_None, TCM_SHA1, 0, 0}, - {"TLS_RSA_WITH_3DES_EDE_CBC_SHA", SSL3_TXT_RSA_DES_192_CBC3_SHA, TPV_SSLv3, TKE_RSA, TCA_RSA, TCE_3DES, TCM_SHA1, 168, 112}, + {"TLS_RSA_WITH_NULL_SHA", SSL3_TXT_RSA_NULL_SHA, TPV_SSLv3, TKE_RSA, TCA_RSA, TCE_None, TCM_SHA1, TKM_NA, 0, 0}, + {"TLS_RSA_WITH_3DES_EDE_CBC_SHA", SSL3_TXT_RSA_DES_192_CBC3_SHA, TPV_SSLv3, TKE_RSA, TCA_RSA, TCE_3DES, TCM_SHA1, TKM_CBC, 168, 112}, // 128 bit encryption with static RSA - {"TLS_RSA_WITH_AES_128_CBC_SHA", TLS1_TXT_RSA_WITH_AES_128_SHA, TPV_SSLv3, TKE_RSA, TCA_RSA, TCE_AES, TCM_SHA1, 128, 128}, - {"TLS_RSA_WITH_CAMELLIA_128_CBC_SHA", TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA, TPV_SSLv3, TKE_RSA, TCA_RSA, TCE_Camellia, TCM_SHA1, 128, 128}, - {"TLS_RSA_WITH_AES_128_CBC_SHA256", TLS1_TXT_RSA_WITH_AES_128_SHA256, TPV_TLSv12, TKE_RSA, TCA_RSA, TCE_AES, TCM_SHA256, 128, 128}, - {"TLS_RSA_WITH_AES_128_GCM_SHA256", TLS1_TXT_RSA_WITH_AES_128_GCM_SHA256, TPV_TLSv12, TKE_RSA, TCA_RSA, TCE_AESGCM, TCM_AEAD, 128, 128}, + {"TLS_RSA_WITH_AES_128_CBC_SHA", TLS1_TXT_RSA_WITH_AES_128_SHA, TPV_SSLv3, TKE_RSA, TCA_RSA, TCE_AES, TCM_SHA1, TKM_CBC, 128, 128}, + {"TLS_RSA_WITH_CAMELLIA_128_CBC_SHA", TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA, TPV_SSLv3, TKE_RSA, TCA_RSA, TCE_Camellia, TCM_SHA1, TKM_CBC, 128, 128}, + {"TLS_RSA_WITH_AES_128_CBC_SHA256", TLS1_TXT_RSA_WITH_AES_128_SHA256, TPV_TLSv12, TKE_RSA, TCA_RSA, TCE_AES, TCM_SHA256, TKM_CBC, 128, 128}, + {"TLS_RSA_WITH_AES_128_GCM_SHA256", TLS1_TXT_RSA_WITH_AES_128_GCM_SHA256, TPV_TLSv12, TKE_RSA, TCA_RSA, TCE_AESGCM, TCM_AEAD, TKM_GCM, 128, 128}, // 128 bit encryption with ECDH - {"TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA", TLS1_TXT_ECDH_ECDSA_WITH_AES_128_CBC_SHA, TPV_SSLv3, TKE_ECDH_ECDSA, TCA_ECDH, TCE_AES, TCM_SHA1, 128, 128}, - {"TLS_ECDH_RSA_WITH_AES_128_CBC_SHA", TLS1_TXT_ECDH_RSA_WITH_AES_128_CBC_SHA, TPV_SSLv3, TKE_ECDH_RSA, TCA_ECDH, TCE_AES, TCM_SHA1, 128, 128}, - {"TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256", TLS1_TXT_ECDH_ECDSA_WITH_AES_128_SHA256, TPV_TLSv12, TKE_ECDH_ECDSA, TCA_ECDH, TCE_AES, TCM_SHA256, 128, 128}, - {"TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256", TLS1_TXT_ECDH_RSA_WITH_AES_128_SHA256, TPV_TLSv12, TKE_ECDH_RSA, TCA_ECDH, TCE_AES, TCM_SHA256, 128, 128}, - {"TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256", TLS1_TXT_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, TPV_TLSv12, TKE_ECDH_ECDSA, TCA_ECDH, TCE_AESGCM, TCM_AEAD, 128, 128}, - {"TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256", TLS1_TXT_ECDH_RSA_WITH_AES_128_GCM_SHA256, TPV_TLSv12, TKE_ECDH_RSA, TCA_ECDH, TCE_AESGCM, TCM_AEAD, 128, 128}, + {"TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA", TLS1_TXT_ECDH_ECDSA_WITH_AES_128_CBC_SHA, TPV_SSLv3, TKE_ECDH_ECDSA, TCA_ECDH, TCE_AES, TCM_SHA1, TKM_CBC, 128, 128}, + {"TLS_ECDH_RSA_WITH_AES_128_CBC_SHA", TLS1_TXT_ECDH_RSA_WITH_AES_128_CBC_SHA, TPV_SSLv3, TKE_ECDH_RSA, TCA_ECDH, TCE_AES, TCM_SHA1, TKM_CBC, 128, 128}, + {"TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256", TLS1_TXT_ECDH_ECDSA_WITH_AES_128_SHA256, TPV_TLSv12, TKE_ECDH_ECDSA, TCA_ECDH, TCE_AES, TCM_SHA256, TKM_CBC, 128, 128}, + {"TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256", TLS1_TXT_ECDH_RSA_WITH_AES_128_SHA256, TPV_TLSv12, TKE_ECDH_RSA, TCA_ECDH, TCE_AES, TCM_SHA256, TKM_CBC, 128, 128}, + {"TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256", TLS1_TXT_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, TPV_TLSv12, TKE_ECDH_ECDSA, TCA_ECDH, TCE_AESGCM, TCM_AEAD, TKM_GCM, 128, 128}, + {"TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256", TLS1_TXT_ECDH_RSA_WITH_AES_128_GCM_SHA256, TPV_TLSv12, TKE_ECDH_RSA, TCA_ECDH, TCE_AESGCM, TCM_AEAD, TKM_GCM, 128, 128}, // 256 bit encryption with static RSA - {"TLS_RSA_WITH_CAMELLIA_256_CBC_SHA", TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA, TPV_SSLv3, TKE_RSA, TCA_RSA, TCE_Camellia, TCM_SHA1, 256, 256}, - {"TLS_RSA_WITH_AES_256_CBC_SHA", TLS1_TXT_RSA_WITH_AES_256_SHA, TPV_SSLv3, TKE_RSA, TCA_RSA, TCE_AES, TCM_SHA1, 256, 256}, - {"TLS_RSA_WITH_AES_256_CBC_SHA256", TLS1_TXT_RSA_WITH_AES_256_SHA256, TPV_TLSv12, TKE_RSA, TCA_RSA, TCE_AES, TCM_SHA256, 256, 256}, - {"TLS_RSA_WITH_AES_256_GCM_SHA384", TLS1_TXT_RSA_WITH_AES_256_GCM_SHA384, TPV_TLSv12, TKE_RSA, TCA_RSA, TCE_AESGCM, TCM_AEAD, 256, 256}, + {"TLS_RSA_WITH_CAMELLIA_256_CBC_SHA", TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA, TPV_SSLv3, TKE_RSA, TCA_RSA, TCE_Camellia, TCM_SHA1, TKM_CBC, 256, 256}, + {"TLS_RSA_WITH_AES_256_CBC_SHA", TLS1_TXT_RSA_WITH_AES_256_SHA, TPV_SSLv3, TKE_RSA, TCA_RSA, TCE_AES, TCM_SHA1, TKM_CBC, 256, 256}, + {"TLS_RSA_WITH_AES_256_CBC_SHA256", TLS1_TXT_RSA_WITH_AES_256_SHA256, TPV_TLSv12, TKE_RSA, TCA_RSA, TCE_AES, TCM_SHA256, TKM_CBC, 256, 256}, + {"TLS_RSA_WITH_AES_256_GCM_SHA384", TLS1_TXT_RSA_WITH_AES_256_GCM_SHA384, TPV_TLSv12, TKE_RSA, TCA_RSA, TCE_AESGCM, TCM_AEAD, TKM_GCM, 256, 256}, // 256 bit encryption with static ECDH - {"TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA", TLS1_TXT_ECDH_ECDSA_WITH_AES_256_CBC_SHA, TPV_SSLv3, TKE_ECDH_ECDSA, TCA_ECDH, TCE_AES, TCM_SHA1, 256, 256}, - {"TLS_ECDH_RSA_WITH_AES_256_CBC_SHA", TLS1_TXT_ECDH_RSA_WITH_AES_256_CBC_SHA, TPV_SSLv3, TKE_ECDH_RSA, TCA_ECDH, TCE_AES, TCM_SHA1, 256, 256}, - {"TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384", TLS1_TXT_ECDH_ECDSA_WITH_AES_256_SHA384, TPV_TLSv12, TKE_ECDH_ECDSA, TCA_ECDH, TCE_AES, TCM_SHA384, 256, 256}, - {"TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384", TLS1_TXT_ECDH_RSA_WITH_AES_256_SHA384, TPV_TLSv12, TKE_ECDH_RSA, TCA_ECDH, TCE_AES, TCM_SHA384, 256, 256}, - {"TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384", TLS1_TXT_ECDH_ECDSA_WITH_AES_256_GCM_SHA384, TPV_TLSv12, TKE_ECDH_ECDSA, TCA_ECDH, TCE_AESGCM, TCM_AEAD, 256, 256}, - {"TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384", TLS1_TXT_ECDH_RSA_WITH_AES_256_GCM_SHA384, TPV_TLSv12, TKE_ECDH_RSA, TCA_ECDH, TCE_AESGCM, TCM_AEAD, 256, 256}, + {"TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA", TLS1_TXT_ECDH_ECDSA_WITH_AES_256_CBC_SHA, TPV_SSLv3, TKE_ECDH_ECDSA, TCA_ECDH, TCE_AES, TCM_SHA1, TKM_CBC, 256, 256}, + {"TLS_ECDH_RSA_WITH_AES_256_CBC_SHA", TLS1_TXT_ECDH_RSA_WITH_AES_256_CBC_SHA, TPV_SSLv3, TKE_ECDH_RSA, TCA_ECDH, TCE_AES, TCM_SHA1, TKM_CBC, 256, 256}, + {"TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384", TLS1_TXT_ECDH_ECDSA_WITH_AES_256_SHA384, TPV_TLSv12, TKE_ECDH_ECDSA, TCA_ECDH, TCE_AES, TCM_SHA384, TKM_CBC, 256, 256}, + {"TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384", TLS1_TXT_ECDH_RSA_WITH_AES_256_SHA384, TPV_TLSv12, TKE_ECDH_RSA, TCA_ECDH, TCE_AES, TCM_SHA384, TKM_CBC, 256, 256}, + {"TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384", TLS1_TXT_ECDH_ECDSA_WITH_AES_256_GCM_SHA384, TPV_TLSv12, TKE_ECDH_ECDSA, TCA_ECDH, TCE_AESGCM, TCM_AEAD, TKM_GCM, 256, 256}, + {"TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384", TLS1_TXT_ECDH_RSA_WITH_AES_256_GCM_SHA384, TPV_TLSv12, TKE_ECDH_RSA, TCA_ECDH, TCE_AESGCM, TCM_AEAD, TKM_GCM, 256, 256}, // -- then all ciphersuites with forward secrecy -- - // 128 bit encryption with ECDHE - {"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TPV_SSLv3, TKE_ECDH, TCA_ECDSA, TCE_AES, TCM_SHA1, 128, 128}, - {"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", TLS1_TXT_ECDHE_RSA_WITH_AES_128_CBC_SHA, TPV_SSLv3, TKE_ECDH, TCA_RSA, TCE_AES, TCM_SHA1, 128, 128}, - {"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256", TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_SHA256, TPV_TLSv12, TKE_ECDH, TCA_ECDSA, TCE_AES, TCM_SHA256, 128, 128}, - {"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256", TLS1_TXT_ECDHE_RSA_WITH_AES_128_SHA256, TPV_TLSv12, TKE_ECDH, TCA_RSA, TCE_AES, TCM_SHA256, 128, 128}, - {"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TPV_TLSv12, TKE_ECDH, TCA_ECDSA, TCE_AESGCM, TCM_AEAD, 128, 128}, - {"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256", TLS1_TXT_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TPV_TLSv12, TKE_ECDH, TCA_RSA, TCE_AESGCM, TCM_AEAD, 128, 128}, - // 128 bit encryption with DHE - {"TLS_DHE_DSS_WITH_AES_128_CBC_SHA", TLS1_TXT_DHE_DSS_WITH_AES_128_SHA, TPV_SSLv3, TKE_DH, TCA_DSS, TCE_AES, TCM_SHA1, 128, 128}, - {"TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA", TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA, TPV_SSLv3, TKE_DH, TCA_DSS, TCE_Camellia, TCM_SHA1, 128, 128}, - {"TLS_DHE_RSA_WITH_AES_128_CBC_SHA", TLS1_TXT_DHE_RSA_WITH_AES_128_SHA, TPV_SSLv3, TKE_DH, TCA_RSA, TCE_AES, TCM_SHA1, 128, 128}, - {"TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA", TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA, TPV_SSLv3, TKE_DH, TCA_RSA, TCE_Camellia, TCM_SHA1, 128, 128}, - {"TLS_DHE_DSS_WITH_AES_128_CBC_SHA256", TLS1_TXT_DHE_DSS_WITH_AES_128_SHA256, TPV_TLSv12, TKE_DH, TCA_DSS, TCE_AES, TCM_SHA256, 128, 128}, - {"TLS_DHE_RSA_WITH_AES_128_CBC_SHA256", TLS1_TXT_DHE_RSA_WITH_AES_128_SHA256, TPV_TLSv12, TKE_DH, TCA_RSA, TCE_AES, TCM_SHA256, 128, 128}, - {"TLS_DHE_DSS_WITH_AES_128_GCM_SHA256", TLS1_TXT_DHE_DSS_WITH_AES_128_GCM_SHA256, TPV_TLSv12, TKE_DH, TCA_DSS, TCE_AESGCM, TCM_AEAD, 128, 128}, - {"TLS_DHE_RSA_WITH_AES_128_GCM_SHA256", TLS1_TXT_DHE_RSA_WITH_AES_128_GCM_SHA256, TPV_TLSv12, TKE_DH, TCA_RSA, TCE_AESGCM, TCM_AEAD, 128, 128}, + {"TLS_DHE_DSS_WITH_AES_128_CBC_SHA", TLS1_TXT_DHE_DSS_WITH_AES_128_SHA, TPV_SSLv3, TKE_DH, TCA_DSS, TCE_AES, TCM_SHA1, TKM_CBC, 128, 128}, + {"TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA", TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA, TPV_SSLv3, TKE_DH, TCA_DSS, TCE_Camellia, TCM_SHA1, TKM_CBC, 128, 128}, + {"TLS_DHE_RSA_WITH_AES_128_CBC_SHA", TLS1_TXT_DHE_RSA_WITH_AES_128_SHA, TPV_SSLv3, TKE_DH, TCA_RSA, TCE_AES, TCM_SHA1, TKM_CBC, 128, 128}, + {"TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA", TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA, TPV_SSLv3, TKE_DH, TCA_RSA, TCE_Camellia, TCM_SHA1, TKM_CBC, 128, 128}, + {"TLS_DHE_DSS_WITH_AES_128_CBC_SHA256", TLS1_TXT_DHE_DSS_WITH_AES_128_SHA256, TPV_TLSv12, TKE_DH, TCA_DSS, TCE_AES, TCM_SHA256, TKM_CBC, 128, 128}, + {"TLS_DHE_RSA_WITH_AES_128_CBC_SHA256", TLS1_TXT_DHE_RSA_WITH_AES_128_SHA256, TPV_TLSv12, TKE_DH, TCA_RSA, TCE_AES, TCM_SHA256, TKM_CBC, 128, 128}, + {"TLS_DHE_DSS_WITH_AES_128_GCM_SHA256", TLS1_TXT_DHE_DSS_WITH_AES_128_GCM_SHA256, TPV_TLSv12, TKE_DH, TCA_DSS, TCE_AESGCM, TCM_AEAD, TKM_GCM, 128, 128}, + {"TLS_DHE_RSA_WITH_AES_128_GCM_SHA256", TLS1_TXT_DHE_RSA_WITH_AES_128_GCM_SHA256, TPV_TLSv12, TKE_DH, TCA_RSA, TCE_AESGCM, TCM_AEAD, TKM_GCM, 128, 128}, - // 256 bit encryption with ECDHE - {"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA", TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TPV_SSLv3, TKE_ECDH, TCA_ECDSA, TCE_AES, TCM_SHA1, 256, 256}, - {"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA", TLS1_TXT_ECDHE_RSA_WITH_AES_256_CBC_SHA, TPV_SSLv3, TKE_ECDH, TCA_RSA, TCE_AES, TCM_SHA1, 256, 256}, - {"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384", TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_SHA384, TPV_TLSv12, TKE_ECDH, TCA_ECDSA, TCE_AES, TCM_SHA384, 256, 256}, - {"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384", TLS1_TXT_ECDHE_RSA_WITH_AES_256_SHA384, TPV_TLSv12, TKE_ECDH, TCA_RSA, TCE_AES, TCM_SHA384, 256, 256}, + // 128 bit encryption with ECDHE + {"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TPV_SSLv3, TKE_ECDH, TCA_ECDSA, TCE_AES, TCM_SHA1, TKM_CBC, 128, 128}, + {"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", TLS1_TXT_ECDHE_RSA_WITH_AES_128_CBC_SHA, TPV_SSLv3, TKE_ECDH, TCA_RSA, TCE_AES, TCM_SHA1, TKM_CBC, 128, 128}, + {"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256", TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_SHA256, TPV_TLSv12, TKE_ECDH, TCA_ECDSA, TCE_AES, TCM_SHA256, TKM_CBC, 128, 128}, + {"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256", TLS1_TXT_ECDHE_RSA_WITH_AES_128_SHA256, TPV_TLSv12, TKE_ECDH, TCA_RSA, TCE_AES, TCM_SHA256, TKM_CBC, 128, 128}, +#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 + /* Apparently we support the CAMELLIA ciphersuites in Galois/counter mode defined in RFC 6367 */ + {"TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256", TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA384, TPV_TLSv12, TKE_ECDH, TCA_ECDSA, TCE_Camellia, TCM_SHA256, TKM_GCM, 128, 128}, + {"TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256", TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA384, TPV_TLSv12, TKE_ECDH, TCA_RSA, TCE_Camellia, TCM_SHA256, TKM_GCM, 128, 128}, +#endif +#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8 + /* OpenSSL 1.1.1 supports the AES-CCM Elliptic Curve Cryptography (ECC) ciphersuites defined in RFC 7251 */ + {"TLS_ECDHE_ECDSA_WITH_AES_128_CCM", TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CCM, TPV_TLSv12, TKE_ECDH, TCA_ECDSA, TCE_AES, TCM_CBC_MAC, TKM_CCM, 128, 128}, + {"TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8", TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CCM_8, TPV_TLSv12, TKE_ECDH, TCA_ECDSA, TCE_AES, TCM_CBC_MAC, TKM_CCM, 128, 128}, +#endif + {"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TPV_TLSv12, TKE_ECDH, TCA_ECDSA, TCE_AESGCM, TCM_AEAD, TKM_GCM, 128, 128}, + {"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256", TLS1_TXT_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TPV_TLSv12, TKE_ECDH, TCA_RSA, TCE_AESGCM, TCM_AEAD, TKM_GCM, 128, 128}, + // 256 bit encryption with DHE + {"TLS_DHE_DSS_WITH_AES_256_CBC_SHA", TLS1_TXT_DHE_DSS_WITH_AES_256_SHA, TPV_SSLv3, TKE_DH, TCA_DSS, TCE_AES, TCM_SHA1, TKM_CBC, 256, 256}, + {"TLS_DHE_RSA_WITH_AES_256_CBC_SHA", TLS1_TXT_DHE_RSA_WITH_AES_256_SHA, TPV_SSLv3, TKE_DH, TCA_RSA, TCE_AES, TCM_SHA1, TKM_CBC, 256, 256}, + {"TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA", TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA, TPV_SSLv3, TKE_DH, TCA_DSS, TCE_Camellia, TCM_SHA1, TKM_CBC, 256, 256}, + {"TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA", TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA, TPV_SSLv3, TKE_DH, TCA_RSA, TCE_Camellia, TCM_SHA1, TKM_CBC, 256, 256}, #ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305 /* OpenSSL 1.1.0 supports the ChaCha20-Poly1305 ciphersuites defined in RFC 7905 */ - {"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256", TLS1_TXT_ECDHE_ECDSA_WITH_CHACHA20_POLY1305, TPV_TLSv12, TKE_ECDH, TCA_ECDSA, TCE_ChaCha20, TCM_AEAD, 256, 256}, - {"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256", TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305, TPV_TLSv12, TKE_ECDH, TCA_RSA, TCE_ChaCha20, TCM_AEAD, 256, 256}, + {"TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256", TLS1_TXT_DHE_RSA_WITH_CHACHA20_POLY1305, TPV_TLSv12, TKE_DH, TCA_RSA, TCE_ChaCha20, TCM_AEAD, TKM_NA, 256, 256}, #endif - {"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TPV_TLSv12, TKE_ECDH, TCA_ECDSA, TCE_AESGCM, TCM_AEAD, 256, 256}, - {"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", TLS1_TXT_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TPV_TLSv12, TKE_ECDH, TCA_RSA, TCE_AESGCM, TCM_AEAD, 256, 256}, + {"TLS_DHE_DSS_WITH_AES_256_CBC_SHA256", TLS1_TXT_DHE_DSS_WITH_AES_256_SHA256, TPV_TLSv12, TKE_DH, TCA_DSS, TCE_AES, TCM_SHA256, TKM_CBC, 256, 256}, + {"TLS_DHE_RSA_WITH_AES_256_CBC_SHA256", TLS1_TXT_DHE_RSA_WITH_AES_256_SHA256, TPV_TLSv12, TKE_DH, TCA_RSA, TCE_AES, TCM_SHA256, TKM_CBC, 256, 256}, + {"TLS_DHE_DSS_WITH_AES_256_GCM_SHA384", TLS1_TXT_DHE_DSS_WITH_AES_256_GCM_SHA384, TPV_TLSv12, TKE_DH, TCA_DSS, TCE_AESGCM, TCM_AEAD, TKM_GCM, 256, 256}, + {"TLS_DHE_RSA_WITH_AES_256_GCM_SHA384", TLS1_TXT_DHE_RSA_WITH_AES_256_GCM_SHA384, TPV_TLSv12, TKE_DH, TCA_RSA, TCE_AESGCM, TCM_AEAD, TKM_GCM, 256, 256}, - // 256 bit encryption with DHE - {"TLS_DHE_DSS_WITH_AES_256_CBC_SHA", TLS1_TXT_DHE_DSS_WITH_AES_256_SHA, TPV_SSLv3, TKE_DH, TCA_DSS, TCE_AES, TCM_SHA1, 256, 256}, - {"TLS_DHE_RSA_WITH_AES_256_CBC_SHA", TLS1_TXT_DHE_RSA_WITH_AES_256_SHA, TPV_SSLv3, TKE_DH, TCA_RSA, TCE_AES, TCM_SHA1, 256, 256}, - {"TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA", TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA, TPV_SSLv3, TKE_DH, TCA_DSS, TCE_Camellia, TCM_SHA1, 256, 256}, - {"TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA", TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA, TPV_SSLv3, TKE_DH, TCA_RSA, TCE_Camellia, TCM_SHA1, 256, 256}, - {"TLS_DHE_DSS_WITH_AES_256_CBC_SHA256", TLS1_TXT_DHE_DSS_WITH_AES_256_SHA256, TPV_TLSv12, TKE_DH, TCA_DSS, TCE_AES, TCM_SHA256, 256, 256}, - {"TLS_DHE_RSA_WITH_AES_256_CBC_SHA256", TLS1_TXT_DHE_RSA_WITH_AES_256_SHA256, TPV_TLSv12, TKE_DH, TCA_RSA, TCE_AES, TCM_SHA256, 256, 256}, + // 256 bit encryption with ECDHE + {"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA", TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TPV_SSLv3, TKE_ECDH, TCA_ECDSA, TCE_AES, TCM_SHA1, TKM_CBC, 256, 256}, + {"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA", TLS1_TXT_ECDHE_RSA_WITH_AES_256_CBC_SHA, TPV_SSLv3, TKE_ECDH, TCA_RSA, TCE_AES, TCM_SHA1, TKM_CBC, 256, 256}, + {"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384", TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_SHA384, TPV_TLSv12, TKE_ECDH, TCA_ECDSA, TCE_AES, TCM_SHA384, TKM_CBC, 256, 256}, + {"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384", TLS1_TXT_ECDHE_RSA_WITH_AES_256_SHA384, TPV_TLSv12, TKE_ECDH, TCA_RSA, TCE_AES, TCM_SHA384, TKM_CBC, 256, 256}, + +#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 + /* Apparently we support the CAMELLIA ciphersuites in Galois/counter mode defined in RFC 6367 */ + {"TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384", TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384, TPV_TLSv12, TKE_ECDH, TCA_ECDSA, TCE_Camellia, TCM_SHA384, TKM_GCM, 256, 256}, + {"TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384", TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384, TPV_TLSv12, TKE_ECDH, TCA_RSA, TCE_Camellia, TCM_SHA384, TKM_GCM, 256, 256}, +#endif #ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305 /* OpenSSL 1.1.0 supports the ChaCha20-Poly1305 ciphersuites defined in RFC 7905 */ - {"TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256", TLS1_TXT_DHE_RSA_WITH_CHACHA20_POLY1305, TPV_TLSv12, TKE_DH, TCA_RSA, TCE_ChaCha20, TCM_AEAD, 256, 256}, + {"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256", TLS1_TXT_ECDHE_ECDSA_WITH_CHACHA20_POLY1305, TPV_TLSv12, TKE_ECDH, TCA_ECDSA, TCE_ChaCha20, TCM_AEAD, TKM_NA, 256, 256}, + {"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256", TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305, TPV_TLSv12, TKE_ECDH, TCA_RSA, TCE_ChaCha20, TCM_AEAD, TKM_NA, 256, 256}, #endif - {"TLS_DHE_DSS_WITH_AES_256_GCM_SHA384", TLS1_TXT_DHE_DSS_WITH_AES_256_GCM_SHA384, TPV_TLSv12, TKE_DH, TCA_DSS, TCE_AESGCM, TCM_AEAD, 256, 256}, - {"TLS_DHE_RSA_WITH_AES_256_GCM_SHA384", TLS1_TXT_DHE_RSA_WITH_AES_256_GCM_SHA384, TPV_TLSv12, TKE_DH, TCA_RSA, TCE_AESGCM, TCM_AEAD, 256, 256} - +#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8 + /* OpenSSL 1.1.1 supports the AES-CCM Elliptic Curve Cryptography (ECC) ciphersuites defined in RFC 7251 */ + {"TLS_ECDHE_ECDSA_WITH_AES_256_CCM", TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM, TPV_TLSv12, TKE_ECDH, TCA_ECDSA, TCE_AES, TCM_CBC_MAC, TKM_CCM, 256, 256}, + {"TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8", TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8, TPV_TLSv12, TKE_ECDH, TCA_ECDSA, TCE_AES, TCM_CBC_MAC, TKM_CCM, 256, 256}, +#endif + {"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TPV_TLSv12, TKE_ECDH, TCA_ECDSA, TCE_AESGCM, TCM_AEAD, TKM_GCM, 256, 256}, + {"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", TLS1_TXT_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TPV_TLSv12, TKE_ECDH, TCA_RSA, TCE_AESGCM, TCM_AEAD, TKM_GCM, 256, 256} }; #define GLOBAL_NUM_CIPHERSUITES (sizeof(globalCipherSuiteList)/sizeof(DcmCipherSuiteList)) +/* This is the list of TLS 1.3 ciphersuites supported by OpenSSL 1.1.1 and newer. + * + * IMPORTANT: This list must be sorted from the weakest to the strongest ciphersuite. + * - first sort by effective key size + * - then sort by hash key algorithm (SHA-256 < SHA-384) + */ + +#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384 +static const DcmCipherSuiteList globalTLS13CipherSuiteList[] = +{ +#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_128_CCM_8_SHA256 + {"TLS_AES_128_CCM_SHA256", TLS1_3_RFC_AES_128_CCM_SHA256, TPV_TLSv13, TKE_TLSv13, TCA_TLSv13, TCE_AES, TCM_SHA256, TKM_CCM, 128, 128}, + {"TLS_AES_128_CCM_8_SHA256", TLS1_3_RFC_AES_128_CCM_8_SHA256, TPV_TLSv13, TKE_TLSv13, TCA_TLSv13, TCE_AES, TCM_SHA256, TKM_CCM, 128, 128}, +#endif + {"TLS_AES_128_GCM_SHA256", TLS1_3_RFC_AES_128_GCM_SHA256, TPV_TLSv13, TKE_TLSv13, TCA_TLSv13, TCE_AES, TCM_SHA256, TKM_GCM, 128, 128}, +#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_CHACHA20_POLY1305_SHA256 + {"TLS_CHACHA20_POLY1305_SHA256", TLS1_3_RFC_CHACHA20_POLY1305_SHA256, TPV_TLSv13, TKE_TLSv13, TCA_TLSv13, TCE_ChaCha20, TCM_SHA256, TKM_NA, 256, 256}, +#endif + {"TLS_AES_256_GCM_SHA384", TLS1_3_RFC_AES_256_GCM_SHA384, TPV_TLSv13, TKE_TLSv13, TCA_TLSv13, TCE_AES, TCM_SHA384, TKM_GCM, 256, 256}, +}; + +#define GLOBAL_NUM_TLS13_CIPHERSUITES (sizeof(globalCipherSuiteList)/sizeof(DcmCipherSuiteList)) + +#endif + + const size_t DcmTLSCiphersuiteHandler::unknownCipherSuiteIndex = (size_t) -1; DcmTLSCiphersuiteHandler::DcmTLSCiphersuiteHandler() : ciphersuiteList() +, tls13ciphersuiteList() , currentProfile(TSP_Profile_None) , tls13_enabled(OFTrue) , ciphersuiteSupported(new OFBool[GLOBAL_NUM_CIPHERSUITES]) @@ -227,6 +275,25 @@ OFCondition DcmTLSCiphersuiteHandler::addRequiredCipherSuite(const char *name) } +OFCondition DcmTLSCiphersuiteHandler::addRequiredTLS13CipherSuite(const char *name) +{ + if (NULL == name) return EC_IllegalCall; +#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384 + size_t idx = lookupTLS13Ciphersuite(name); + if (idx < GLOBAL_NUM_TLS13_CIPHERSUITES) tls13ciphersuiteList.push_back(idx); + else + { + DCMTLS_FATAL("Ciphersuite '" << name << "' not supported by the OpenSSL library used to compile this application."); + return DCMTLS_EC_UnknownCiphersuite(name); + } + return EC_Normal; +#else + DCMTLS_FATAL("TLS 1.3, and therefore, ciphersuite '" << name << "' not supported by the OpenSSL library used to compile this application."); + return DCMTLS_EC_UnknownCiphersuite(name); +#endif +} + + void DcmTLSCiphersuiteHandler::addOptional3DESCipherSuite() { size_t idx = lookupCiphersuite("TLS_RSA_WITH_3DES_EDE_CBC_SHA"); @@ -250,20 +317,27 @@ OFCondition DcmTLSCiphersuiteHandler::setTLSProfile(DcmTLSSecurityProfile profil case TSP_Profile_None: tls13_enabled = OFTrue; ciphersuiteList.clear(); + tls13ciphersuiteList.clear(); break; case TSP_Profile_Basic: tls13_enabled = OFFalse; + ciphersuiteList.clear(); + tls13ciphersuiteList.clear(); result = addRequiredCipherSuite("TLS_RSA_WITH_3DES_EDE_CBC_SHA"); if (result.bad()) return result; break; case TSP_Profile_AES: tls13_enabled = OFFalse; + ciphersuiteList.clear(); + tls13ciphersuiteList.clear(); result = addRequiredCipherSuite("TLS_RSA_WITH_AES_128_CBC_SHA"); if (result.bad()) return result; addOptional3DESCipherSuite(); break; case TSP_Profile_BCP195: tls13_enabled = OFTrue; + ciphersuiteList.clear(); + tls13ciphersuiteList.clear(); // recommended ciphersuites as defined in the DICOM profile, plus backwards compatibility result = addRequiredCipherSuite("TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"); if (result.bad()) return result; @@ -279,6 +353,8 @@ OFCondition DcmTLSCiphersuiteHandler::setTLSProfile(DcmTLSSecurityProfile profil break; case TSP_Profile_BCP195_ND: tls13_enabled = OFTrue; + ciphersuiteList.clear(); + tls13ciphersuiteList.clear(); // required ciphersuites as defined in the DICOM profile result = addRequiredCipherSuite("TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"); if (result.bad()) return result; @@ -291,6 +367,8 @@ OFCondition DcmTLSCiphersuiteHandler::setTLSProfile(DcmTLSSecurityProfile profil break; case TSP_Profile_BCP195_Extended: tls13_enabled = OFFalse; + ciphersuiteList.clear(); + tls13ciphersuiteList.clear(); // required ciphersuites as defined in the DICOM profile result = addRequiredCipherSuite("TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"); if (result.bad()) return result; @@ -305,8 +383,79 @@ OFCondition DcmTLSCiphersuiteHandler::setTLSProfile(DcmTLSSecurityProfile profil result = addRequiredCipherSuite("TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256"); if (result.bad()) return result; break; + case TSP_Profile_BCP_195_RFC_8996: + tls13_enabled = OFTrue; + ciphersuiteList.clear(); + tls13ciphersuiteList.clear(); + // recommended ciphersuites as defined in RFC 9325 + result = addRequiredCipherSuite("TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"); + if (result.bad()) return result; + result = addRequiredCipherSuite("TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256"); + if (result.bad()) return result; + result = addRequiredCipherSuite("TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"); + if (result.bad()) return result; + result = addRequiredCipherSuite("TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"); + if (result.bad()) return result; + break; + case TSP_Profile_BCP_195_RFC_8996_Modified: +#ifdef DCMTK_Modified_BCP195_RFC8996_TLS_Profile_Supported + tls13_enabled = OFTrue; + ciphersuiteList.clear(); + tls13ciphersuiteList.clear(); + // required TLS 1.0-1.2 ciphersuites as defined in the DICOM profile +#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 + result = addRequiredCipherSuite("TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256"); + if (result.bad()) return result; + result = addRequiredCipherSuite("TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256"); + if (result.bad()) return result; +#endif + result = addRequiredCipherSuite("TLS_ECDHE_ECDSA_WITH_AES_128_CCM"); + if (result.bad()) return result; + result = addRequiredCipherSuite("TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8"); + if (result.bad()) return result; + result = addRequiredCipherSuite("TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"); + if (result.bad()) return result; + result = addRequiredCipherSuite("TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256"); + if (result.bad()) return result; +#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 + result = addRequiredCipherSuite("TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384"); + if (result.bad()) return result; + result = addRequiredCipherSuite("TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384"); + if (result.bad()) return result; +#endif + result = addRequiredCipherSuite("TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256"); + if (result.bad()) return result; + result = addRequiredCipherSuite("TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256"); + if (result.bad()) return result; + result = addRequiredCipherSuite("TLS_ECDHE_ECDSA_WITH_AES_256_CCM"); + if (result.bad()) return result; + result = addRequiredCipherSuite("TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8"); + if (result.bad()) return result; + result = addRequiredCipherSuite("TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"); + if (result.bad()) return result; + result = addRequiredCipherSuite("TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"); + if (result.bad()) return result; + + // required TLS 1.3 ciphersuites as defined in the DICOM profile + result = addRequiredTLS13CipherSuite("TLS_AES_256_GCM_SHA384"); + if (result.bad()) return result; + result = addRequiredTLS13CipherSuite("TLS_CHACHA20_POLY1305_SHA256"); + if (result.bad()) return result; + result = addRequiredTLS13CipherSuite("TLS_AES_128_GCM_SHA256"); + if (result.bad()) return result; + result = addRequiredTLS13CipherSuite("TLS_AES_128_CCM_SHA256"); + if (result.bad()) return result; + result = addRequiredTLS13CipherSuite("TLS_AES_128_CCM_8_SHA256"); + if (result.bad()) return result; +#else + return DCMTLS_EC_TLSProfileNotSupported; +#endif + break; + case TSP_Profile_IHE_ATNA_Unencrypted: tls13_enabled = OFFalse; + ciphersuiteList.clear(); + tls13ciphersuiteList.clear(); result = addRequiredCipherSuite("TLS_RSA_WITH_NULL_SHA"); if (result.bad()) return result; break; @@ -321,6 +470,7 @@ void DcmTLSCiphersuiteHandler::clearTLSProfile() tls13_enabled = OFTrue; currentProfile = TSP_Profile_None; ciphersuiteList.clear(); + tls13ciphersuiteList.clear(); } OFCondition DcmTLSCiphersuiteHandler::addCipherSuite(const char *suite) @@ -338,6 +488,8 @@ OFCondition DcmTLSCiphersuiteHandler::addCipherSuite(const char *suite) } size_t keySize = 0; + size_t effectiveSize = 0; + OFString suiteName; switch (currentProfile) { case TSP_Profile_Basic: @@ -354,17 +506,63 @@ OFCondition DcmTLSCiphersuiteHandler::addCipherSuite(const char *suite) DCMTLS_FATAL("Unencrypted ciphersuite '" << suite << "' not permitted with security profile '" << lookupProfileName(currentProfile) << "'"); return DCMTLS_EC_CiphersuiteNotAllowed; } + // static RSA should not be used if (TKE_RSA == getCipherSuiteKeyExchange(idx)) { DCMTLS_WARN("Ciphersuite '" << suite << "' uses RSA key transport. RFC 7525 recommends that such cipher suites should not be used."); } - else + break; + + case TSP_Profile_BCP_195_RFC_8996: + // make sure that we don't add a NULL ciphersuite (i.e. a ciphersuite without encryption) + keySize = getCipherSuiteKeySize(idx); + if (keySize == 0) + { + DCMTLS_FATAL("Unencrypted ciphersuite '" << suite << "' not permitted with security profile '" << lookupProfileName(currentProfile) << "'"); + return DCMTLS_EC_CiphersuiteNotAllowed; + } + // SHA-1 MUST NOT be used. This also applies to MD5, but we don't support any MD5 ciphersuites anyway + if (TCM_SHA1 == getCipherSuiteMAC(idx)) + { + DCMTLS_FATAL("Ciphersuite '" << suite << "' using SHA-1 MAC not permitted with security profile '" << lookupProfileName(currentProfile) << "'"); + return DCMTLS_EC_CiphersuiteNotAllowed; + } + // print a warning if the TLS_RSA_WITH_AES_128_CBC_SHA ciphersuite is added + suiteName = suite; + if (suiteName == "TLS_RSA_WITH_AES_128_CBC_SHA") + { + DCMTLS_WARN("RFC 9325 recommends that ciphersuite 'TLS_RSA_WITH_AES_128_CBC_SHA' should not be used."); + } + else + { + // print a warning if a static RSA ciphersuite is added + if (TKE_RSA == getCipherSuiteKeyExchange(idx)) + { + DCMTLS_WARN("Ciphersuite '" << suite << "' uses RSA key transport. RFC 9325 recommends that such cipher suites should not be used."); + } + // print a warning if a DHE ciphersuite is added + if (TKE_DH == getCipherSuiteKeyExchange(idx)) + { + DCMTLS_WARN("Ciphersuite '" << suite << "' uses ephemeral finite-field Diffie-Hellman key agreement. RFC 9325 recommends that such cipher suites should not be used."); + } + } + // print a warning if a block cipher in CBC mode is added + if (TKM_CBC == getCipherSuiteMode(idx)) { - DCMTLS_WARN("Ciphersuite '" << suite << "' uses NO RSA key transport. RFC 7525 recommends that such cipher suites should not be used."); + DCMTLS_WARN("Ciphersuite '" << suite << "' uses CBC mode of operation. RFC 9325 recommends that such cipher suites should not be used, unless both sides support the encrypt_then_mac extension (we do)."); + } + // print a warning if cipher with less than 128 bits of effective key length is added. + // Actually this should never happen because 3DES is the only cipher suite with less than 128 bits supported in DCMTK, + // and that one is already blocked by the test for SHA-1. Nevertheless, make sure we remain on the safe side. + effectiveSize = getCipherSuiteEffectiveKeySize(idx); + if (effectiveSize < 128) + { + DCMTLS_WARN("Ciphersuite '" << suite << "' only offers ' << effectiveSize << ' bits of effective key length. RFC 9325 recommends that cipher suites offering less than 128 bits should not be used."); } break; case TSP_Profile_BCP195_Extended: + case TSP_Profile_BCP_195_RFC_8996_Modified: DCMTLS_FATAL("Additional ciphersuites not permitted with security profile '" << lookupProfileName(currentProfile) << "'"); return DCMTLS_EC_CiphersuiteNotAllowed; break; @@ -379,7 +577,7 @@ OFCondition DcmTLSCiphersuiteHandler::addCipherSuite(const char *suite) return EC_Normal; } // invalid/unknown cipher suite name - return EC_IllegalCall; + return DCMTLS_EC_UnknownCiphersuite( suite ? suite : "(NULL)" ); } // Static helper function for the qsort() call in @@ -423,65 +621,189 @@ void DcmTLSCiphersuiteHandler::getListOfCipherSuitesForOpenSSL(OFString& cslist, } } +void DcmTLSCiphersuiteHandler::getListOfTLS13CipherSuitesForOpenSSL(OFString& cslist, OFBool isServer) const +{ + cslist.clear(); + const char *c = NULL; + OFVector tempList = tls13ciphersuiteList; + + if (isServer) + { + // When acting as a TLS server, we follow the recommendation of BCP 195 + // to select the strongest ciphersuite offered by the client. We do this by + // ignoring the order of preference proposed by the client; instead we select the first + // matching ciphersuite from our own (server-side) list of supported ciphersuites. + // We sort this list with the strongest ciphersuite first. Since the global list + // of ciphersuites (globalCipherSuiteList) is already sorted by strength (weakest + // ciphersuite first), we only have to sort the ciphersuite IDs in decreasing order. + qsort(&tempList[0], tempList.size(), sizeof(size_t), cipherSuiteComparison); + } + + for (OFVector::const_iterator it = tempList.begin(); it != tempList.end(); ++it) + { + c = getOpenSSLTLS13CipherSuiteName(*it); + if (c) + { + if (! cslist.empty()) cslist += ":"; + cslist += c; + } + } +} + size_t DcmTLSCiphersuiteHandler::getNumberOfCipherSuites() { return GLOBAL_NUM_CIPHERSUITES; } +size_t DcmTLSCiphersuiteHandler::getNumberOfTLS13CipherSuites() +{ +#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384 + return GLOBAL_NUM_TLS13_CIPHERSUITES; +#else + return 0; +#endif +} + const char *DcmTLSCiphersuiteHandler::getTLSCipherSuiteName(size_t idx) { if (idx < GLOBAL_NUM_CIPHERSUITES) return globalCipherSuiteList[idx].TLSname; return NULL; } +const char *DcmTLSCiphersuiteHandler::getTLS13CipherSuiteName(size_t idx) +{ +#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384 + if (idx < GLOBAL_NUM_TLS13_CIPHERSUITES) return globalTLS13CipherSuiteList[idx].TLSname; +#endif + return NULL; +} + const char *DcmTLSCiphersuiteHandler::getOpenSSLCipherSuiteName(size_t idx) { if (idx < GLOBAL_NUM_CIPHERSUITES) return globalCipherSuiteList[idx].openSSLName; return NULL; } +const char *DcmTLSCiphersuiteHandler::getOpenSSLTLS13CipherSuiteName(size_t idx) +{ +#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384 + if (idx < GLOBAL_NUM_TLS13_CIPHERSUITES) return globalTLS13CipherSuiteList[idx].openSSLName; +#endif + return NULL; +} + DcmTLSCipherProtocolVersion DcmTLSCiphersuiteHandler::getCipherSuiteProtocolVersion(size_t idx) { if (idx < GLOBAL_NUM_CIPHERSUITES) return globalCipherSuiteList[idx].protocolVersion; return TPV_TLSv12; // invalid index, return a (rather arbitrary) default } +DcmTLSCipherProtocolVersion DcmTLSCiphersuiteHandler::getTLS13CipherSuiteProtocolVersion(size_t idx) +{ +#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384 + if (idx < GLOBAL_NUM_TLS13_CIPHERSUITES) return globalTLS13CipherSuiteList[idx].protocolVersion; +#endif + return TPV_TLSv12; // invalid index, return a (rather arbitrary) default +} + DcmTLSCipherKeyExchange DcmTLSCiphersuiteHandler::getCipherSuiteKeyExchange(size_t idx) { if (idx < GLOBAL_NUM_CIPHERSUITES) return globalCipherSuiteList[idx].keyExchange; return TKE_RSA; // invalid index, return a (rather arbitrary) default } +DcmTLSCipherKeyExchange DcmTLSCiphersuiteHandler::getTLS13CipherSuiteKeyExchange(size_t idx) +{ +#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384 + if (idx < GLOBAL_NUM_TLS13_CIPHERSUITES) return globalTLS13CipherSuiteList[idx].keyExchange; +#endif + return TKE_RSA; // invalid index, return a (rather arbitrary) default +} + DcmTLSCipherAuthentication DcmTLSCiphersuiteHandler::getCipherSuiteAuthentication(size_t idx) { if (idx < GLOBAL_NUM_CIPHERSUITES) return globalCipherSuiteList[idx].authentication; return TCA_RSA; // invalid index, return a (rather arbitrary) default } +DcmTLSCipherAuthentication DcmTLSCiphersuiteHandler::getTLS13CipherSuiteAuthentication(size_t idx) +{ +#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384 + if (idx < GLOBAL_NUM_TLS13_CIPHERSUITES) return globalTLS13CipherSuiteList[idx].authentication; +#endif + return TCA_RSA; // invalid index, return a (rather arbitrary) default +} + DcmTLSCipherEncryption DcmTLSCiphersuiteHandler::getCipherSuiteEncryption(size_t idx) { if (idx < GLOBAL_NUM_CIPHERSUITES) return globalCipherSuiteList[idx].encryption; return TCE_None; // invalid index, return a (rather arbitrary) default } +DcmTLSCipherEncryption DcmTLSCiphersuiteHandler::getTLS13CipherSuiteEncryption(size_t idx) +{ +#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384 + if (idx < GLOBAL_NUM_TLS13_CIPHERSUITES) return globalTLS13CipherSuiteList[idx].encryption; +#endif + return TCE_None; // invalid index, return a (rather arbitrary) default +} + DcmTLSCipherMAC DcmTLSCiphersuiteHandler::getCipherSuiteMAC(size_t idx) { if (idx < GLOBAL_NUM_CIPHERSUITES) return globalCipherSuiteList[idx].mac; return TCM_AEAD; } +DcmTLSCipherMAC DcmTLSCiphersuiteHandler::getTLS13CipherSuiteMAC(size_t idx) +{ +#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384 + if (idx < GLOBAL_NUM_TLS13_CIPHERSUITES) return globalTLS13CipherSuiteList[idx].mac; +#endif + return TCM_AEAD; +} + +DcmTLSCipherMode DcmTLSCiphersuiteHandler::getCipherSuiteMode(size_t idx) +{ + if (idx < GLOBAL_NUM_CIPHERSUITES) return globalCipherSuiteList[idx].mode; + return TKM_NA; +} + +DcmTLSCipherMode DcmTLSCiphersuiteHandler::getTLS13CipherSuiteMode(size_t idx) +{ +#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384 + if (idx < GLOBAL_NUM_TLS13_CIPHERSUITES) return globalTLS13CipherSuiteList[idx].mode; +#endif + return TKM_NA; +} + size_t DcmTLSCiphersuiteHandler::getCipherSuiteKeySize(size_t idx) { if (idx < GLOBAL_NUM_CIPHERSUITES) return globalCipherSuiteList[idx].keySize; return 0; } +size_t DcmTLSCiphersuiteHandler::getTLS13CipherSuiteKeySize(size_t idx) +{ +#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384 + if (idx < GLOBAL_NUM_TLS13_CIPHERSUITES) return globalTLS13CipherSuiteList[idx].keySize; +#endif + return 0; +} + size_t DcmTLSCiphersuiteHandler::getCipherSuiteEffectiveKeySize(size_t idx) { if (idx < GLOBAL_NUM_CIPHERSUITES) return globalCipherSuiteList[idx].effectiveKeySize; return 0; } +size_t DcmTLSCiphersuiteHandler::getTLS13CipherSuiteEffectiveKeySize(size_t idx) +{ +#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384 + if (idx < GLOBAL_NUM_TLS13_CIPHERSUITES) return globalTLS13CipherSuiteList[idx].effectiveKeySize; +#endif + return 0; +} + size_t DcmTLSCiphersuiteHandler::lookupCiphersuite(const char *tlsCipherSuiteName) { if (tlsCipherSuiteName) @@ -497,6 +819,24 @@ size_t DcmTLSCiphersuiteHandler::lookupCiphersuite(const char *tlsCipherSuiteNam return unknownCipherSuiteIndex; } +size_t DcmTLSCiphersuiteHandler::lookupTLS13Ciphersuite(const char *tlsCipherSuiteName) +{ +#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384 + if (tlsCipherSuiteName) + { + OFString aString(tlsCipherSuiteName); + size_t numEntries = GLOBAL_NUM_TLS13_CIPHERSUITES; + for (size_t i = 0; i < numEntries; i++) + { + if (aString == globalTLS13CipherSuiteList[i].TLSname) return i; + } + } +#endif + + // ciphersuite not found + return unknownCipherSuiteIndex; +} + size_t DcmTLSCiphersuiteHandler::lookupCiphersuiteByOpenSSLName(const char *opensslCipherSuiteName) { if (opensslCipherSuiteName) @@ -512,6 +852,24 @@ size_t DcmTLSCiphersuiteHandler::lookupCiphersuiteByOpenSSLName(const char *open return unknownCipherSuiteIndex; } +size_t DcmTLSCiphersuiteHandler::lookupTLS13CiphersuiteByOpenSSLName(const char *opensslCipherSuiteName) +{ +#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384 + if (opensslCipherSuiteName) + { + OFString aString(opensslCipherSuiteName); + size_t numEntries = GLOBAL_NUM_TLS13_CIPHERSUITES; + for (size_t i = 0; i < numEntries; i++) + { + if (aString == globalTLS13CipherSuiteList[i].openSSLName) return i; + } + } +#endif + + // ciphersuite not found + return unknownCipherSuiteIndex; +} + void DcmTLSCiphersuiteHandler::printSupportedCiphersuites(STD_NAMESPACE ostream& os) const { size_t numEntries = GLOBAL_NUM_CIPHERSUITES; @@ -522,6 +880,18 @@ void DcmTLSCiphersuiteHandler::printSupportedCiphersuites(STD_NAMESPACE ostream& } } +void DcmTLSCiphersuiteHandler::printSupportedTLS13Ciphersuites(STD_NAMESPACE ostream& os) const +{ +#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384 + size_t numEntries = GLOBAL_NUM_TLS13_CIPHERSUITES; + for (size_t i = 0; i < numEntries; i++) + { + if (ciphersuiteSupported[i]) + os << " " << globalTLS13CipherSuiteList[i].TLSname << OFendl; + } +#endif +} + const char *DcmTLSCiphersuiteHandler::lookupProfileName(DcmTLSSecurityProfile profile) { switch (profile) @@ -544,6 +914,12 @@ const char *DcmTLSCiphersuiteHandler::lookupProfileName(DcmTLSSecurityProfile pr case TSP_Profile_None: return "None"; break; + case TSP_Profile_BCP_195_RFC_8996: + return "BCP 195 RFC 8996 TLS Profile"; + break; + case TSP_Profile_BCP_195_RFC_8996_Modified: + return "Modified BCP 195 RFC 8996 TLS Profile"; + break; case TSP_Profile_IHE_ATNA_Unencrypted: return "Authenticated unencrypted communication"; break; diff --git a/dcmtls/libsrc/tlscond.cc b/dcmtls/libsrc/tlscond.cc index df68b949..74149aab 100644 --- a/dcmtls/libsrc/tlscond.cc +++ b/dcmtls/libsrc/tlscond.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2017-2021, OFFIS e.V. + * Copyright (C) 2017-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -52,6 +52,7 @@ makeOFConditionConst( DCMTLS_EC_OtherSSLError, OFM_dcmtls makeOFConditionConst( DCMTLS_EC_FailedToSetVerificationMode, OFM_dcmtls, 21, OF_error, "Setting of the X.509 verification mode failed" ); makeOFConditionConst( DCMTLS_EC_CertStoreCtxInitFailed, OFM_dcmtls, 22, OF_error, "Certificate store context initialization failed" ); makeOFConditionConst( DCMTLS_EC_OpenSSLIOError, OFM_dcmtls, 23, OF_error, "OpenSSL I/O error (SSL_ERROR_SYSCALL)" ); +makeOFConditionConst( DCMTLS_EC_TLSProfileNotSupported, OFM_dcmtls, 24, OF_error, "DICOM TLS Secure Transport Connection Profile not supported" ); // implementation of specializable error codes diff --git a/dcmtls/libsrc/tlsfmacr.h b/dcmtls/libsrc/tlsfmacr.h new file mode 100644 index 00000000..a461221f --- /dev/null +++ b/dcmtls/libsrc/tlsfmacr.h @@ -0,0 +1,56 @@ +/* + * + * Copyright (C) 2018-2023, OFFIS e.V. + * All rights reserved. See COPYRIGHT file for details. + * + * This software and supporting documentation were developed by + * + * OFFIS e.V. + * R&D Division Health + * Escherweg 2 + * D-26121 Oldenburg, Germany + * + * + * Module: dcmtls + * + * Author: Marco Eichelberg + * + * Purpose: + * OpenSSL feature test macros + * + */ + +#ifndef TLSFMAC_H +#define TLSFMAC_H + +#include "dcmtk/config/osconfig.h" /* make sure OS specific configuration is included first */ + +#ifdef WITH_OPENSSL + +BEGIN_EXTERN_C +#include +#include +END_EXTERN_C + +/* check if we fulfil all requirements for implementing the + * Modified BCP 195 RFC 8996 TLS Profile + */ +#if defined(HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305) \ + && defined(HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8) \ + && defined(HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384) \ + && defined(HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_CHACHA20_POLY1305_SHA256) \ + && defined(HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_128_CCM_8_SHA256) + +/* all feature tests except Camellia in GCM mode are successful + * We now check if we either have Camellia in GCM more or have been + * instructed to ignore this requirement + */ +#if defined(HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384) \ + || defined(DCMTK_IGNORE_BCP195M_CAMELLIA_GCM_REQUIREMENT) + +#define DCMTK_Modified_BCP195_RFC8996_TLS_Profile_Supported +#endif +#endif + +#endif /* WITH_OPENSSL */ +#endif /* TLSFMAC_H */ diff --git a/dcmtls/libsrc/tlslayer.cc b/dcmtls/libsrc/tlslayer.cc index 134aae60..bd2413ef 100644 --- a/dcmtls/libsrc/tlslayer.cc +++ b/dcmtls/libsrc/tlslayer.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1998-2021, OFFIS e.V. + * Copyright (C) 1998-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -76,6 +76,12 @@ END_EXTERN_C #define X509_STORE_get0_param(A) (A)->param; #endif +#ifndef HAVE_OPENSSL_PROTOTYPE_X509_STORE_CTX_GET0_CERT +#define X509_STORE_CTX_get0_cert(ctx) ((ctx)->cert) +#endif + +int DcmTLSTransportLayer::contextStoreIndex = -1; + extern "C" int DcmTLSTransportLayer_certificateValidationCallback(int ok, X509_STORE_CTX *storeContext); OFLogger DCM_dcmtlsLogger = OFLog::getLogger("dcmtk.dcmtls"); @@ -85,21 +91,19 @@ OFLogger DCM_dcmtlsLogger = OFLog::getLogger("dcmtk.dcmtls"); * (DHE_) ciphersuites unless the user replaces the parameter set * by calling DcmTLSTransportLayer::setTempDHParameters(). * Using a hard-coded DH parameter set is safe because the DH key exchange - * does not require these parameters to be secret. It is, however, still - * preferable to use a user-generated set of parameters. - * - * Generated by calling "openssl dhparam 2048". + * does not require these parameters to be secret. + * We use the 2048 bit Diffie-Hellman MODP group defined in RFC 7919. */ OFBool DcmTLSTransportLayer::setBuiltInDHParameters() { static char dh2048_p[] = "-----BEGIN DH PARAMETERS-----\n" - "MIIBCAKCAQEAzEaoIXpuyK2D+If94J2iSxYqi1Ot+HD7FKvszu7Bxlh8izm1nyzk\n" - "b0zUJfcXOaxnSsqmfGxLfPRm5+vD3aeD6mugrR1zZSemXUiq6CsONZZQ1MxStJvk\n" - "Ems+9qRrbj9tA+/b2dZvUCc1pZAQTkbf7+CcbZnh21jExmDhf5QFZye/y4Arvj+a\n" - "CZP/2Hd0veWUv2HzFRm52v0B69Y7I4BEWwGMDkvRREzc05fRAZiDftRLJGSkohLq\n" - "65jDLNz4ZgiCvNH5SnixzuUBlys+78XEfWYu6k0FclBEFq+9rVaqugodK/SN0BOA\n" - "pOEPHZJ77TwWvHEXA9ShsNjmBkqWK/tnKwIBAg==\n" + "MIIBCAKCAQEA//////////+t+FRYortKmq/cViAnPTzx2LnFg84tNpWp4TZBFGQz\n" + "+8yTnc4kmz75fS/jY2MMddj2gbICrsRhetPfHtXV/WVhJDP1H18GbtCFY2VVPe0a\n" + "87VXE15/V8k1mE8McODmi3fipona8+/och3xWKE2rec1MKzKT0g6eXq8CrGCsyT7\n" + "YdEIqUuyyOP7uWrat2DX9GgdT0Kj3jlN9K5W7edjcrsZCwenyO4KbXCeAvzhzffi\n" + "7MA0BM0oNC9hkXL+nOmFg/+OTxIy7vKBg8P+OxtMb61zO7X8vC7CIAXFjvGDfRaD\n" + "ssbzSibBsu/6iGtCOGEoXJf//////////wIBAg==\n" "-----END DH PARAMETERS-----\n"; if (transportLayerContext==NULL) return OFFalse; @@ -129,14 +133,151 @@ OFBool DcmTLSTransportLayer::setBuiltInDHParameters() return OFFalse; } -int DcmTLSTransportLayer_certificateValidationCallback(int ok, X509_STORE_CTX * /* storeContext */) +int DcmTLSTransportLayer_certificateValidationCallback(int ok, X509_STORE_CTX *storeContext) { // this callback is called whenever OpenSSL has validated a X.509 certificate. - // we could for example print it: - // DcmTLSTransportLayer::printX509Certificate(cout, storeContext->cert); + // The result of OpenSSL's pre-validation is passed as parameter "ok". + if (ok) // prevalidation has passed, perform additional checks + { + // this call will return a pointer to the certificate in the chain + // that is currently being checked, starting with the root CA certificate, + // and working upwards from there. + X509 *cert = X509_STORE_CTX_get_current_cert(storeContext); + if (cert) + { + int rsabits = 0; + int ecdsabits = 0; + EVP_PKEY *pubkey = X509_get_pubkey(cert); // creates a copy of the public key + if (pubkey) + { + if (EVP_PKEY_base_id(pubkey) == EVP_PKEY_RSA) + { + rsabits = EVP_PKEY_bits(pubkey); // RSA public key size, in bits + } + if (EVP_PKEY_base_id(pubkey) == EVP_PKEY_EC) + { + ecdsabits = EVP_PKEY_bits(pubkey); // ECDSA public key size, in bits + } + EVP_PKEY_free(pubkey); + } + + // get a pointer to the SSL structure of the current connection + SSL *ssl = OFreinterpret_cast(SSL *, X509_STORE_CTX_get_ex_data(storeContext, SSL_get_ex_data_X509_STORE_CTX_idx())); + if (ssl) + { + DcmTLSTransportLayer *tlayer = OFreinterpret_cast(DcmTLSTransportLayer *, SSL_get_ex_data(ssl, DcmTLSTransportLayer::contextStoreIndex)); + if (tlayer) + { + // check if the hash key used in the peer certificate is on our "blacklist" of weak hash key algorithms + const char *hash = tlayer->checkHashKeyIsTooInSecure(cert); + if (hash) + { + DCMTLS_ERROR("Weak certificate hash key: peer provided certificate with '" << hash << "'. Refusing TLS connection."); + return 0; + } + + // check if the hash key used in the peer certificate is on our "whitelist" of strong hash key algorithms + hash = tlayer->checkHashKeyIsSecure(cert); + DcmTLSSecurityProfile profile = tlayer->getTLSProfile(); + switch (profile) + { + case TSP_Profile_BCP_195_RFC_8996_Modified: + if ((rsabits > 0) && (rsabits < 2048)) + { + DCMTLS_ERROR("RSA key length too short: the DICOM TLS profile requires at least 2048 bits, but peer provided RSA certificate with " << rsabits << " bits. Refusing TLS connection."); + return 0; + } + if ((ecdsabits > 0) && (ecdsabits < 256)) + { + DCMTLS_ERROR("ECDSA key length too short: the DICOM TLS profile requires at least 256 bits, but peer provided ECDSA certificate with " << ecdsabits << " bits. Refusing TLS connection."); + return 0; + } + if (hash) + { + DCMTLS_ERROR("Weak certificate hash key: the DICOM TLS profile requires SHA-256 (or better) for certificates, but peer provided certificate with '" << hash << "'. Refusing TLS connection."); + return 0; + } + break; + + case TSP_Profile_BCP_195_RFC_8996: + if ((rsabits > 0) && (rsabits < 2048)) + { + if (! SSL_is_server(ssl)) + { + DCMTLS_ERROR("Server RSA key length too short: RFC 9325 requires at least 2048 bits, but server provided RSA certificate with " << rsabits << " bits. Refusing TLS connection."); + return 0; + } + } + /* fallthrough */ + + default: + if ((rsabits > 0) && (rsabits < 2048)) + { + DCMTLS_WARN("RSA key length too short: RFC 9325 recommends at least 2048 bits, but peer provided RSA certificate with " << rsabits << " bits."); + } + if ((ecdsabits > 0) && (ecdsabits < 224)) + { + DCMTLS_WARN("ECDSA key length too short: RFC 9325 recommends at least 224 bits, but peer provided ECDSA certificate with " << ecdsabits << " bits."); + } + if (hash) + { + DCMTLS_WARN("Weak certificate hash key: RFC 9325 recommends SHA-256 (or better, but peer provided certificate with '" << hash << "'."); + } + break; + } + } + } + } + } return ok; } +// The 'dicom' protocol identifier for DICOM in network format +// (string length, followed by a sequence of characters, no terminating zero, +// as defined in https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids + +static const unsigned char alpn_dicom_protocol[] = { + 5, 0x64, 0x69, 0x63, 0x6f, 0x6d +}; + +static const unsigned char alpn_dicom_protocol_len = OFstatic_cast(unsigned char, sizeof(alpn_dicom_protocol)); + +extern "C" int DcmTLSTransportLayer_ALPNCallback(SSL *ssl, const unsigned char **out, unsigned char *outlen, const unsigned char *in, unsigned int inlen, void *arg); + +int DcmTLSTransportLayer_ALPNCallback(SSL * /*ssl*/, const unsigned char **out, unsigned char *outlen, const unsigned char *in, unsigned int inlen, void * /*arg*/ ) +{ + // check if the list of protocols proposed by the client contains DICOM + unsigned char *npout = NULL; + if (OPENSSL_NPN_NEGOTIATED == SSL_select_next_proto(&npout, outlen, alpn_dicom_protocol, alpn_dicom_protocol_len, in, inlen)) + { + // client has proposed the DICOM protocol. We accept this. + *out = npout; + return SSL_TLSEXT_ERR_OK; + } + + // client has proposed a protocol other than DICOM. Reject this. + DCMTLS_ERROR("TLS ALPN negotiation failure: Client has proposed protocol(s) other than 'dicom'"); + return SSL_TLSEXT_ERR_ALERT_FATAL; +} + +extern "C" int DcmTLSTransportLayer_SNICallback(SSL *s, int *al, void *arg); + +int DcmTLSTransportLayer_SNICallback(SSL *s, int * /* al */, void *arg) +{ + const char *called_name = SSL_get_servername(s, TLSEXT_NAMETYPE_host_name); + if (called_name) + { + DcmTLSTransportLayer *tlayer = OFreinterpret_cast(DcmTLSTransportLayer *, arg); + if (! tlayer->checkServerSNI(called_name)) + { + DCMTLS_ERROR("SNI failure: client requested server '" << called_name << "', my name is '" << tlayer->getServerSNI() << "'."); + return SSL_TLSEXT_ERR_ALERT_FATAL; + } + } + return SSL_TLSEXT_ERR_OK; +} + + /* buf : buffer to write password into * size : length of buffer in bytes * rwflag : nonzero if the password will be used as a new password, i.e. user should be asked to repeat the password @@ -167,8 +308,9 @@ int DcmTLSTransportLayer_passwordCallback(char *buf, int size, int /* rwflag */, */ static void computeEllipticCurveList(OFVector& ecvector) { - // BCP 195: Curves of less than 192 bits SHOULD NOT be used. - // Actually we only enable curves with at least 256 bits in DCMTK, following NIST and BSI recommendations. + // RFC 9325: Curves of less than 224 bits MUST NOT be used. + // Actually we only enable curves with at least 256 bits in DCMTK, + // following NIST and BSI recommendations. const int eclist[] = { // The list of elliptic curves actually supported by OpenSSL 1.0.2 // seems to be undocumented. See implementation of tls1_ec_nid2curve_id() @@ -224,6 +366,9 @@ DcmTLSTransportLayer::DcmTLSTransportLayer() , canWriteRandseed(OFFalse) , privateKeyPasswd() , role(NET_ACCEPTORREQUESTOR) +, clientSNI(NULL) +, serverSNI(NULL) +, certificateTypeIsDSA(OFFalse) { } @@ -237,6 +382,9 @@ DcmTLSTransportLayer::DcmTLSTransportLayer(T_ASC_NetworkRole networkRole, const , canWriteRandseed(OFFalse) , privateKeyPasswd() , role(networkRole) +, clientSNI(NULL) +, serverSNI(NULL) +, certificateTypeIsDSA(OFFalse) { if (initOpenSSL) initializeOpenSSL(); if (randFile) seedPRNG(randFile); @@ -338,7 +486,6 @@ DcmTLSTransportLayer::DcmTLSTransportLayer(T_ASC_NetworkRole networkRole, const #if HAVE_OPENSSL_PROTOTYPE_SSL_CTX_SET1_SIGALGS // The TLS 1.2 Signature Algorithms extension is only supported in OpenSSL 1.0.2 and newer. - if (networkRole != NET_ACCEPTOR) { // BCP 195: Clients SHOULD indicate to servers that they request SHA-256, @@ -346,6 +493,9 @@ DcmTLSTransportLayer::DcmTLSTransportLayer(T_ASC_NetworkRole networkRole, const // We implement this by requesting SHA-256 OR BETTER, i.e. we also indicate // support for SHA-384 and SHA-512. + // RFC 9325 has strengthened this requirement to a MUST condition: + // Clients MUST indicate to servers that they request SHA-256... + const int slist[] = {NID_sha256, EVP_PKEY_RSA, NID_sha384, EVP_PKEY_RSA, NID_sha512, EVP_PKEY_RSA, #ifdef HAVE_OPENSSL_PROTOTYPE_EVP_PKEY_RSA_PSS // Connections between a client and a server that both use OpenSSL 1.1.1 @@ -381,6 +531,26 @@ DcmTLSTransportLayer::DcmTLSTransportLayer(T_ASC_NetworkRole networkRole, const } #endif /* HAVE_OPENSSL_PROTOTYPE_SSL_CTX_SET1_CURVES */ + if (networkRole != NET_ACCEPTOR) + { + if (0 != SSL_CTX_set_alpn_protos(transportLayerContext, alpn_dicom_protocol, alpn_dicom_protocol_len)) + { + DCMTLS_ERROR("unable to configure the TLS Application-Layer Protocol Negotiation extension."); + } + } + + if (networkRole != NET_REQUESTOR) + { + SSL_CTX_set_alpn_select_cb(transportLayerContext, DcmTLSTransportLayer_ALPNCallback, NULL); + } + + // activate the callback for incoming connections using SNI + if (networkRole != NET_REQUESTOR) + { + SSL_CTX_set_tlsext_servername_callback(transportLayerContext, DcmTLSTransportLayer_SNICallback); + SSL_CTX_set_tlsext_servername_arg(transportLayerContext, this); + } + if (NET_REQUESTOR != networkRole) { // BCP 195: Servers MUST prefer TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 over weaker cipher suites whenever it is proposed, even if it is not the first proposal. @@ -442,6 +612,26 @@ OFBool DcmTLSTransportLayer::operator!() const return !transportLayerContext; } +OFBool DcmTLSTransportLayer::checkServerSNI(const char *s) const +{ + if (s && serverSNI) + { + OFString requestedSNI(s); + + // if a server name is set and a server name is requested, only succeed if these two match + return (requestedSNI == serverSNI); + } + + // if either name is NULL, we succeed + return OFTrue; +} + +const char *DcmTLSTransportLayer::getServerSNI() const +{ + if (serverSNI) return serverSNI; + return ""; +} + OFBool DcmTLSTransportLayer::setTempDHParameters(const char *filename) { if ((filename==NULL)||(transportLayerContext==NULL)) return OFFalse; @@ -458,7 +648,7 @@ OFBool DcmTLSTransportLayer::setTempDHParameters(const char *filename) // DH key lengths of at least 2048 bits are RECOMMENDED. if (EVP_PKEY_bits(dh) < 2048) { - DCMTLS_WARN("Key length of Diffie-Hellman parameter file too short: RFC 7525 recommends at least 2048 bits, but the key in file '" + DCMTLS_WARN("Key length of Diffie-Hellman parameter file too short: RFC 9325 recommends at least 2048 bits, but the key in file '" << filename << "' is only " << EVP_PKEY_bits(dh) << " bits."); if (ciphersuites.getTLSProfile() == TSP_Profile_BCP195_Extended) { @@ -482,7 +672,7 @@ OFBool DcmTLSTransportLayer::setTempDHParameters(const char *filename) // DH key lengths of at least 2048 bits are RECOMMENDED. if (DH_bits(dh) < 2048) { - DCMTLS_WARN("Key length of Diffie-Hellman parameter file too short: RFC 7525 recommends at least 2048 bits, but the key in file '" + DCMTLS_WARN("Key length of Diffie-Hellman parameter file too short: RFC 9325 recommends at least 2048 bits, but the key in file '" << filename << "' is only " << DH_bits(dh) << " bits."); if (ciphersuites.getTLSProfile() == TSP_Profile_BCP195_Extended) { @@ -550,7 +740,10 @@ void DcmTLSTransportLayer::setCertificateVerification(DcmCertificateVerification OFCondition DcmTLSTransportLayer::activateCipherSuites() { OFString cslist; + OFString tls13cslist; ciphersuites.getListOfCipherSuitesForOpenSSL(cslist, (role != NET_REQUESTOR)); + ciphersuites.getListOfTLS13CipherSuitesForOpenSSL(tls13cslist, (role != NET_REQUESTOR)); + if (transportLayerContext) { if (!SSL_CTX_set_cipher_list(transportLayerContext, cslist.c_str())) @@ -558,13 +751,30 @@ OFCondition DcmTLSTransportLayer::activateCipherSuites() return convertOpenSSLError(ERR_get_error(), OFTrue); } +#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384 + // we have TLS 1.3 support, so let's set the list of TLS 1.3 ciphersuites if we have any. + // If that list is empty, the default list remains active + if (tls13cslist.length() > 0) + { + if (!SSL_CTX_set_ciphersuites(transportLayerContext, tls13cslist.c_str())) + { + return convertOpenSSLError(ERR_get_error(), OFTrue); + } + } +#endif + SSL_CTX_set_options(transportLayerContext, ciphersuites.getTLSOptions()); #ifdef HAVE_OPENSSL_PROTOTYPE_SSL_CTX_SET_MAX_PROTO_VERSION // when compiling with OpenSSL 1.1.1 or newer, set the maximum supported - // TLS protocol version to TLS 1.2 if required (i.e. for the historic - // security profiles, which would otherwise show unexpected behaviour). - if (! ciphersuites.isTLS13Enabled()) + // TLS protocol version to TLS 1.2 if required. + // This applies to some historic TLS profiles, which would otherwise + // show unexpected behaviour, but also in the case that a DSA certificate + // is in use, since TLS 1.3 does not support DSA certificates. + // If we don't disable TLS 1.3 in this case, we may receive a TLS + // negotiation failure with a "no suitable signature algorithm" error + // under certain circumstances (e.g. if SNI is enabled). + if ((! ciphersuites.isTLS13Enabled()) || certificateTypeIsDSA) { SSL_CTX_set_max_proto_version(transportLayerContext, TLS1_2_VERSION); } @@ -603,28 +813,130 @@ OFCondition DcmTLSTransportLayer::setPrivateKeyFile(const char *fileName, DcmKey return EC_Normal; } -OFCondition DcmTLSTransportLayer::setCertificateFile(const char *fileName, DcmKeyFileFormat fileType) + +OFCondition DcmTLSTransportLayer::setCertificateFile(const char *fileName, DcmKeyFileFormat fileType, DcmTLSSecurityProfile profile) { if (transportLayerContext) { // we load the first certificate from the file and check the key length - // and hash key against RFC 7525 recommendations. + // and hash key against RFC 9325 recommendations. int result = 0; + int rsabits = 0; + int ecdsabits = 0; + int certificateType = 0; + OFBool enforceRSALengthServer = OFFalse; + OFBool enforceRSALengthClient = OFFalse; + OFBool enforceECDSALength = OFFalse; + OFBool enforceHashLength = OFFalse; + OFBool refuseDSAcert = OFFalse; + + switch (profile) + { + case TSP_Profile_BCP_195_RFC_8996_Modified: + enforceRSALengthClient = OFTrue; // refuse certificate if we are a client and the RSA key is shorter than 2048 bits + enforceECDSALength = OFTrue; // refuse certificate if the ECDSA key is shorter than 256 bits + enforceHashLength = OFTrue; // refuse certificate if hash is not SHA-256 or better + /* fallthrough */ + case TSP_Profile_BCP_195_RFC_8996: + enforceRSALengthServer = OFTrue; // refuse certificate if we are a server and the RSA key is shorter than 2048 bits + refuseDSAcert = OFTrue; // refuse DSA certificates because they prevent the use of TLS 1.3 + break; + default: + break; + } + X509 *certificate = loadCertificateFile(fileName, fileType); if (certificate) { - // Check if the certificate is RSA, and if so, if the public key is >= 2048 bits - int bits = getRSAKeySize(certificate); - if ((bits > 0) && (bits < 2048)) + // reset certificate type flag + certificateTypeIsDSA = OFFalse; + + EVP_PKEY *pubkey = X509_get_pubkey(certificate); // creates a copy of the public key + if (pubkey) { - DCMTLS_WARN("Key length of RSA public key too short: RFC 7525 recommends at least 2048 bits for RSA keys, but the key in certificate file '" - << fileName << "' is only " << bits << " bits."); + certificateType = EVP_PKEY_base_id(pubkey); + if (certificateType == EVP_PKEY_RSA) + { + rsabits = EVP_PKEY_bits(pubkey); // RSA public key size, in bits + } + if (certificateType == EVP_PKEY_EC) + { + ecdsabits = EVP_PKEY_bits(pubkey); // ECDSA public key size, in bits + } + EVP_PKEY_free(pubkey); + } + + if ((rsabits > 0) && (rsabits < 2048)) + { + if (enforceRSALengthServer && (role != NET_REQUESTOR)) + { + DCMTLS_FATAL("Key length of RSA public key too short: RFC 9325 requires at least 2048 bits for server RSA keys, but the key in certificate file '" + << fileName << "' is only " << rsabits << " bits."); + return DCMTLS_EC_FailedToLoadCertificate(fileName); + } + if (enforceRSALengthClient) + { + DCMTLS_FATAL("Key length of RSA public key too short: TLS profile requires at least 2048 bits for RSA keys, but the key in certificate file '" + << fileName << "' is only " << rsabits << " bits."); + return DCMTLS_EC_FailedToLoadCertificate(fileName); + } + DCMTLS_WARN("Key length of RSA public key too short: RFC 9325 recommends at least 2048 bits for RSA keys, but the key in certificate file '" + << fileName << "' is only " << rsabits << " bits."); + } + + if ((ecdsabits > 0) && (ecdsabits < 256)) + { + + if (enforceECDSALength) + { + DCMTLS_FATAL("Key length of ECDSA public key too short: TLS profile requires at least 256 bits for ECDSA keys, but the key in certificate file '" + << fileName << "' is only " << ecdsabits << " bits."); + return DCMTLS_EC_FailedToLoadCertificate(fileName); + } + if (ecdsabits < 224) + { + DCMTLS_WARN("Key length of ECDSA public key too short: RFC 9325 recommends at least 224 bits for ECDSA keys, but the key in certificate file '" + << fileName << "' is only " << ecdsabits << " bits."); + } + } + + if (certificateType == EVP_PKEY_DSA) + { + if (refuseDSAcert) + { + DCMTLS_FATAL("DSA certificate '" << fileName << "' not permitted in the selected TLS profile because it prevents the use of TLS 1.3."); + return DCMTLS_EC_FailedToLoadCertificate(fileName); + } + else + { + DCMTLS_WARN("Use of DSA certificate not recommended because it prevents the use of TLS 1.3, which does not support this certificate type."); + certificateTypeIsDSA = OFTrue; + } + } + + // check if the hash key used in the peer certificate is on our "blacklist" of weak hash key algorithms + const char *hash = checkHashKeyIsTooInSecure(certificate); + if (hash) + { + DCMTLS_ERROR("Weak certificate hash key: certificate file '" << fileName << "' uses '" << hash << "'."); + return DCMTLS_EC_FailedToLoadCertificate(fileName); } - const char *hash = checkRSAHashKeyIsSHA2(certificate); + + // check if the hash key used in the peer certificate is on our "whitelist" of strong hash key algorithms + hash = checkHashKeyIsSecure(certificate); if (hash) { - DCMTLS_WARN("Certificate hash key not SHA-256: RFC 7525 recommends the use of SHA-256 for RSA certificates, but certificate file '" - << fileName << "' uses '" << hash << "'."); + if (enforceHashLength) + { + DCMTLS_FATAL("Weak certificate hash key: TLS profile requires SHA-256 (or better) for certificates, but certificate file '" + << fileName << "' uses '" << hash << "'."); + return DCMTLS_EC_FailedToLoadCertificate(fileName); + } + else + { + DCMTLS_WARN("Possibly weak certificate hash key: RFC 9325 recommends the use of SHA-256 (or better) for certificates, but certificate file '" + << fileName << "' uses '" << hash << "'."); + } } if (fileType == DCF_Filetype_PEM) @@ -647,7 +959,7 @@ OFCondition DcmTLSTransportLayer::setCertificateFile(const char *fileName, DcmKe { return convertOpenSSLError(ERR_get_error(), OFTrue); } - } else return EC_IllegalCall; + } else return DCMTLS_EC_FailedToLoadCertificate(fileName); return EC_Normal; } @@ -773,6 +1085,19 @@ DcmTransportConnection *DcmTLSTransportLayer::createConnection(DcmNativeSocketTy DCMTLS_ERROR("Conversion of 64-bit socket type to int in OpenSSL API causes loss of information."); } SSL_set_fd(newConnection, s); + + if (clientSNI && (role != NET_ACCEPTOR)) + { + if (0 == SSL_set_tlsext_host_name(newConnection, clientSNI)) + { + DCMTLS_WARN("Unable to set the server name for the TLS SNI extension, ignoring."); + } + } + + // store a pointer to this DcmTLSTransportLayer instance in the SSL object, + // for use by the certificate verification callback + SSL_set_ex_data(newConnection, contextStoreIndex, this); + return new DcmTLSConnection(openSocket, newConnection); } } @@ -895,6 +1220,11 @@ OFCondition DcmTLSTransportLayer::setTLSProfile(DcmTLSSecurityProfile profile) return ciphersuites.setTLSProfile(profile); } +DcmTLSSecurityProfile DcmTLSTransportLayer::getTLSProfile() const +{ + return ciphersuites.getTLSProfile(); +} + void DcmTLSTransportLayer::clearTLSProfile() { ciphersuites.clearTLSProfile(); @@ -938,37 +1268,104 @@ void DcmTLSTransportLayer::getListOfCipherSuitesForOpenSSL(OFString& cslist) con int DcmTLSTransportLayer::getRSAKeySize(X509 *certificate) { + int result = 0; // default for non-RSA keys if (certificate) { EVP_PKEY *pubkey = X509_get_pubkey(certificate); // creates a copy of the public key - if (pubkey && (EVP_PKEY_base_id(pubkey) == EVP_PKEY_RSA)) + if (pubkey) { - int certPubKeyBits = EVP_PKEY_bits(pubkey); // RSA public key size, in bits + if (EVP_PKEY_base_id(pubkey) == EVP_PKEY_RSA) + { + result = EVP_PKEY_bits(pubkey); // RSA public key size, in bits + } EVP_PKEY_free(pubkey); - return certPubKeyBits; } } - return 0; // certificate not present or not RSA + return result; } -const char *DcmTLSTransportLayer::checkRSAHashKeyIsSHA2(X509 *certificate) + +const char *DcmTLSTransportLayer::checkHashKeyIsTooInSecure(X509 *certificate) +{ + if (certificate) + { + // this method implements a blacklist of hash key algorithms + // that we never accept, because they are too insecure + int nid = X509_get_signature_nid(certificate); + switch (nid) + { + case NID_md2WithRSAEncryption: // MD2 + case NID_md2: + return "MD2"; + case NID_md4WithRSAEncryption: // MD4 + case NID_md4: + return "MD4"; + case NID_md5WithRSAEncryption: // MD5 + case NID_md5: + case NID_md5WithRSA: + return "MD5"; + default: + break; + } + } + return NULL; +} + + +const char *DcmTLSTransportLayer::checkHashKeyIsSecure(X509 *certificate) { if (certificate) { - EVP_PKEY *pubkey = X509_get_pubkey(certificate); // creates copy of public key - if (pubkey && (EVP_PKEY_base_id(pubkey) == EVP_PKEY_RSA)) - { int nid = X509_get_signature_nid(certificate); - EVP_PKEY_free(pubkey); switch (nid) { + // RSA with SHA-2 case NID_sha256WithRSAEncryption: case NID_sha384WithRSAEncryption: case NID_sha512WithRSAEncryption: - return NULL; // hash key uses SHA256 (or better) +#ifdef HAVE_OPENSSL_PROTOTYPE_NID_SHA512_256WITHRSAENCRYPTION + // we have support for SHA-512_256 + case NID_sha512_256WithRSAEncryption: +#endif + +#ifdef HAVE_OPENSSL_PROTOTYPE_NID_ECDSA_WITH_SHA3_256 + // We have SHA-3 support. Accept RSA with SHA-3 + case NID_RSA_SHA3_256: + case NID_RSA_SHA3_384: + case NID_RSA_SHA3_512: +#endif + + // ECDSA with SHA-2 + case NID_ecdsa_with_SHA256: + case NID_ecdsa_with_SHA384: + case NID_ecdsa_with_SHA512: + +#ifdef HAVE_OPENSSL_PROTOTYPE_NID_ECDSA_WITH_SHA3_256 + // We have SHA-3 support. Accept ECDSA with SHA-3 + case NID_ecdsa_with_SHA3_256: + case NID_ecdsa_with_SHA3_384: + case NID_ecdsa_with_SHA3_512: +#endif + + // DSA with SHA-2 + case NID_dsa_with_SHA256: + +#ifdef HAVE_OPENSSL_PROTOTYPE_NID_DSA_WITH_SHA512 + // We have support for DSA with SHA-384 and SHA-512 + case NID_dsa_with_SHA384: + case NID_dsa_with_SHA512: +#endif + +#ifdef HAVE_OPENSSL_PROTOTYPE_NID_ECDSA_WITH_SHA3_256 + // We have SHA-3 support. Accept DSA with SHA-3 + case NID_dsa_with_SHA3_256: + case NID_dsa_with_SHA3_384: + case NID_dsa_with_SHA3_512: +#endif + + return NULL; // hash key is on the "whitelist" default: - return OBJ_nid2sn(nid); // hash key does not follow BCP 195 recommendation to use SHA256 - } + return OBJ_nid2sn(nid); // hash key is not on our "whitelist", return the name } } return NULL; // default: everything is OK @@ -1184,11 +1581,14 @@ OFCondition DcmTLSTransportLayer::convertOpenSSLX509VerificationError(int errorC void DcmTLSTransportLayer::initializeOpenSSL() { - // the call to SSL_library_init was not needed in OpenSSL versions prior to 0.9.8, - // but the API has been available at least since 0.9.5. + // initialize OpenSSL library SSL_library_init(); SSL_load_error_strings(); OpenSSL_add_all_algorithms(); + + // generate a globally unique index that can be used to store application + // specific data in the SSL structure. This only needs to be done once. + contextStoreIndex = SSL_get_ex_new_index(0, &contextStoreIndex, NULL, NULL, NULL); } const char *DcmTLSTransportLayer::getOpenSSLVersionName() diff --git a/dcmtls/libsrc/tlsopt.cc b/dcmtls/libsrc/tlsopt.cc index 3d4965a3..f5c43a3c 100644 --- a/dcmtls/libsrc/tlsopt.cc +++ b/dcmtls/libsrc/tlsopt.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2017-2021, OFFIS e.V. + * Copyright (C) 2017-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -25,8 +25,9 @@ #include "dcmtk/ofstd/ofconapp.h" #include "dcmtk/dcmtls/tlscond.h" #include "dcmtk/dcmnet/assoc.h" /* for ASC_setTransportLayer() */ +#include "tlsfmacr.h" /* for OpenSSL feature macros */ -void DcmTLSOptions::printLibraryVersion() +void DcmTLSOptionsBase::printLibraryVersion() { #ifdef WITH_OPENSSL COUT << "- " << DcmTLSTransportLayer::getOpenSSLVersionName() << OFendl; @@ -34,33 +35,133 @@ void DcmTLSOptions::printLibraryVersion() } #ifdef WITH_OPENSSL -DcmTLSOptions::DcmTLSOptions(T_ASC_NetworkRole networkRole) -: opt_keyFileFormat( DCF_Filetype_PEM ) -, opt_doAuthenticate( OFFalse ) -, opt_privateKeyFile( OFnullptr ) -, opt_certificateFile( OFnullptr ) -, opt_passwd( OFnullptr ) -, opt_tlsProfile( TSP_Profile_BCP195_ND ) // default: BCP 195 ND profile -, opt_readSeedFile( OFnullptr ) -, opt_writeSeedFile( OFnullptr ) -, opt_certVerification( DCV_requireCertificate ) -, opt_dhparam( OFnullptr ) -, opt_secureConnection( OFFalse ) // default: no secure connection -, opt_networkRole( networkRole ) -, tLayer( OFnullptr ) +DcmTLSOptionsBase::DcmTLSOptionsBase(T_ASC_NetworkRole networkRole) +: opt_keyFileFormat(DCF_Filetype_PEM) +, opt_doAuthenticate(OFFalse) +, opt_privateKeyFile(OFnullptr) +, opt_certificateFile(OFnullptr) +, opt_passwd(OFnullptr) +, opt_tlsProfile(TSP_Profile_BCP_195_RFC_8996) // default: BCP 195 RFC 8996 TLS Profile +, opt_readSeedFile(OFnullptr) +, opt_writeSeedFile(OFnullptr) +, opt_certVerification(DCV_requireCertificate) +, opt_dhparam(OFnullptr) +, opt_secureConnection(OFFalse) // default: no secure connection +, opt_networkRole(networkRole) +, opt_clientSNI(OFnullptr) +, opt_serverSNI(OFnullptr) +, opt_crlMode(TCR_noCRL) +, tLayer(OFnullptr) #else -DcmTLSOptions::DcmTLSOptions(T_ASC_NetworkRole /* networkRole */) +DcmTLSOptionsBase::DcmTLSOptionsBase(T_ASC_NetworkRole /* networkRole */) #endif { } -DcmTLSOptions::~DcmTLSOptions() +DcmTLSOptionsBase::~DcmTLSOptionsBase() { #ifdef WITH_OPENSSL delete tLayer; #endif } +#ifdef WITH_OPENSSL +OFBool DcmTLSOptionsBase::listOfCiphersRequested(OFCommandLine& cmd) +{ + if (cmd.findOption("--list-ciphers")) return OFTrue; + return OFFalse; +} +#else +OFBool DcmTLSOptionsBase::listOfCiphersRequested(OFCommandLine& /* cmd */) +{ + return OFFalse; +} +#endif + +#ifdef WITH_OPENSSL +void DcmTLSOptionsBase::printSupportedCiphersuites(OFConsoleApplication& app, STD_NAMESPACE ostream& os) +{ + DcmTLSCiphersuiteHandler csh; + app.printHeader(OFTrue /*print host identifier*/); + os << OFendl << "Supported TLS ciphersuites are:" << OFendl; + csh.printSupportedCiphersuites(os); +} +#else +void DcmTLSOptionsBase::printSupportedCiphersuites(OFConsoleApplication& /* app */, STD_NAMESPACE ostream& /* os */) +{ +} +#endif + +OFBool DcmTLSOptionsBase::secureConnectionRequested() const +{ +#ifdef WITH_OPENSSL + return opt_secureConnection; +#else + return OFFalse; +#endif +} + +DcmTransportLayer *DcmTLSOptionsBase::getTransportLayer() +{ +#ifdef WITH_OPENSSL + return tLayer; +#else + return NULL; +#endif +} + +OFCondition DcmTLSOptionsBase::writeRandomSeed() +{ +#ifdef WITH_OPENSSL + if (opt_writeSeedFile && tLayer) + { + if (tLayer->canWriteRandomSeed()) + { + if (!tLayer->writeRandomSeed(opt_writeSeedFile)) + return DCMTLS_EC_FailedToWriteRandomSeedFile(opt_writeSeedFile); + } + else return DCMTLS_EC_FailedToWriteRandomSeedFile(opt_writeSeedFile); + } +#endif + return EC_Normal; +} + +#ifdef WITH_OPENSSL +OFCondition DcmTLSOptionsBase::verifyClientCertificate(const char *fileName) +{ + if (tLayer) return tLayer->verifyClientCertificate(fileName, opt_keyFileFormat); + return EC_IllegalCall; +} +#else +OFCondition DcmTLSOptionsBase::verifyClientCertificate(const char * /* fileName */) +{ + return EC_IllegalCall; +} +#endif + +#ifdef WITH_OPENSSL +OFCondition DcmTLSOptionsBase::isRootCertificate(const char *fileName) +{ + return DcmTLSTransportLayer::isRootCertificate(fileName, opt_keyFileFormat); +} +#else +OFCondition DcmTLSOptionsBase::isRootCertificate(const char * /* fileName */) +{ + return EC_IllegalCall; +} +#endif + +// ---------------------------------------------------------------------------- + +DcmTLSOptions::DcmTLSOptions(T_ASC_NetworkRole networkRole) +: DcmTLSOptionsBase(networkRole) +{ +} + +DcmTLSOptions::~DcmTLSOptions() +{ +} + #ifdef WITH_OPENSSL void DcmTLSOptions::addTLSCommandlineOptions(OFCommandLine& cmd) { @@ -73,8 +174,8 @@ void DcmTLSOptions::addTLSCommandlineOptions(OFCommandLine& cmd) "use authenticated secure TLS connection"); if (opt_networkRole == NET_REQUESTOR) { - // this command line options only makes sense for association requesters (TLS clients) - cmd.addOption("--anonymous-tls", "+tla", "use secure TLS connection without certificate"); + // this command line option only makes sense for association requesters (TLS clients) + cmd.addOption("--anonymous-tls", "+tla", "use secure TLS connection without certificate"); } cmd.addSubGroup("private key password (only with --enable-tls):"); cmd.addOption("--std-passwd", "+ps", "prompt user to type password on stdin (default)"); @@ -94,9 +195,13 @@ void DcmTLSOptions::addTLSCommandlineOptions(OFCommandLine& cmd) cmd.addOption("--enable-crl-vfy", "+crv", "enable leaf CRL verification"); cmd.addOption("--enable-crl-all", "+cra", "enable full chain CRL verification"); cmd.addSubGroup("security profile:"); - cmd.addOption("--profile-bcp195-nd", "+py", "Non-downgrading BCP 195 TLS Profile (default)"); - cmd.addOption("--profile-bcp195", "+px", "BCP 195 TLS Profile"); - cmd.addOption("--profile-bcp195-ex", "+pz", "Extended BCP 195 TLS Profile"); + cmd.addOption("--profile-8996", "+pg", "BCP 195 RFC 8996 TLS Profile (default)"); +#ifdef DCMTK_Modified_BCP195_RFC8996_TLS_Profile_Supported + cmd.addOption("--profile-8996-mod", "+pm", "Modified BCP 195 RFC 8996 TLS Profile"); +#endif + cmd.addOption("--profile-bcp195-nd", "+py", "Non-downgrading BCP 195 TLS Profile (retired)"); + cmd.addOption("--profile-bcp195", "+px", "BCP 195 TLS Profile (retired)"); + cmd.addOption("--profile-bcp195-ex", "+pz", "Extended BCP 195 TLS Profile (retired)"); if (csh.cipher3DESsupported()) { cmd.addOption("--profile-basic", "+pb", "Basic TLS Secure Transport Connection Profile\n(retired)"); @@ -113,11 +218,24 @@ void DcmTLSOptions::addTLSCommandlineOptions(OFCommandLine& cmd) "add ciphersuite to list of negotiated suites\n(not with --profile-bcp195-ex)"); if (opt_networkRole != NET_REQUESTOR) { - // this command line options only makes sense for association acceptors (TLS servers) + // this command line option only makes sense for association acceptors (TLS servers) // or systems that accept and request associations cmd.addOption("--dhparam", "+dp", 1, "[f]ilename: string", "read DH parameters for DH/DSS ciphersuites"); } + cmd.addSubGroup("server name indication:"); + cmd.addOption("--no-sni", "do not use SNI (default)"); + if (opt_networkRole != NET_ACCEPTOR) + { + cmd.addOption("--request-sni", 1, "[s]erver name: string", + "request server name s"); + } + if (opt_networkRole != NET_REQUESTOR) + { + cmd.addOption("--expect-sni", 1, "[s]erver name: string", + "expect requests for server name s"); + } + cmd.addSubGroup("pseudo random generator:"); cmd.addOption("--seed", "+rs", 1, "[f]ilename: string", "seed random generator with contents of f"); @@ -128,7 +246,7 @@ void DcmTLSOptions::addTLSCommandlineOptions(OFCommandLine& cmd) cmd.addOption("--require-peer-cert", "-rc", "verify peer certificate, fail if absent (default)"); if (opt_networkRole != NET_REQUESTOR) { - // this command line options only makes sense for association acceptors (TLS servers) + // this command line option only makes sense for association acceptors (TLS servers) // or systems that accept and request associations cmd.addOption("--verify-peer-cert", "-vc", "verify peer certificate if present"); } @@ -149,90 +267,127 @@ void DcmTLSOptions::parseArguments(OFConsoleApplication& app, OFCommandLine& cmd "--enable-tls or --anonymous-tls" : "--enable-tls"); cmd.beginOptionBlock(); - if( cmd.findOption( "--disable-tls" ) ) + if (cmd.findOption("--disable-tls")) + { opt_secureConnection = OFFalse; - if( cmd.findOption( "--enable-tls" ) ) + opt_doAuthenticate = OFFalse; + } + if (cmd.findOption("--enable-tls")) { opt_secureConnection = OFTrue; opt_doAuthenticate = OFTrue; - app.checkValue( cmd.getValue( opt_privateKeyFile ) ); - app.checkValue( cmd.getValue( opt_certificateFile ) ); + app.checkValue(cmd.getValue(opt_privateKeyFile)); + app.checkValue(cmd.getValue(opt_certificateFile)); } if (opt_networkRole == NET_REQUESTOR) { - if( cmd.findOption( "--anonymous-tls" ) ) opt_secureConnection = OFTrue; + if (cmd.findOption("--anonymous-tls")) + { + opt_secureConnection = OFTrue; + opt_doAuthenticate = OFFalse; + } } cmd.endOptionBlock(); cmd.beginOptionBlock(); - if( cmd.findOption( "--std-passwd" ) ) + if (cmd.findOption("--std-passwd")) { app.checkDependence("--std-passwd", "--enable-tls", opt_doAuthenticate); opt_passwd = OFnullptr; } - if( cmd.findOption("--use-passwd") ) + if (cmd.findOption("--use-passwd")) { - app.checkDependence( "--use-passwd", "--enable-tls", opt_doAuthenticate ); - app.checkValue( cmd.getValue( opt_passwd ) ); + app.checkDependence("--use-passwd", "--enable-tls", opt_doAuthenticate); + app.checkValue(cmd.getValue(opt_passwd)); } - if( cmd.findOption( "--null-passwd" ) ) + if (cmd.findOption("--null-passwd")) { - app.checkDependence( "--null-passwd", "--enable-tls", opt_doAuthenticate ); + app.checkDependence("--null-passwd", "--enable-tls", opt_doAuthenticate); opt_passwd = ""; } cmd.endOptionBlock(); cmd.beginOptionBlock(); - if( cmd.findOption( "--pem-keys" ) ) + if (cmd.findOption("--pem-keys")) { app.checkDependence("--pem-keys", tlsopts, opt_secureConnection); opt_keyFileFormat = DCF_Filetype_PEM; } - if( cmd.findOption( "--der-keys" ) ) + if (cmd.findOption("--der-keys")) { app.checkDependence("--der-keys", tlsopts, opt_secureConnection); opt_keyFileFormat = DCF_Filetype_ASN1; } cmd.endOptionBlock(); - if( (opt_networkRole != NET_REQUESTOR) && cmd.findOption( "--dhparam" ) ) + cmd.beginOptionBlock(); + if (cmd.findOption("--enable-crl-vfy")) + { + app.checkDependence("--enable-crl-vfy", tlsopts, opt_secureConnection); + opt_crlMode = TCR_checkLeafCRL; + } + if (cmd.findOption("--enable-crl-all")) + { + app.checkDependence("--enable-crl-all", tlsopts, opt_secureConnection); + opt_crlMode = TCR_checkAllCRL; + } + cmd.endOptionBlock(); + + if ((opt_networkRole != NET_REQUESTOR) && cmd.findOption("--dhparam")) { app.checkDependence("--dhparam", tlsopts, opt_secureConnection); - app.checkValue( cmd.getValue( opt_dhparam ) ); + app.checkValue(cmd.getValue(opt_dhparam)); } - if( cmd.findOption( "--seed" ) ) + + if ((opt_networkRole != NET_ACCEPTOR) && cmd.findOption("--request-sni")) + { + app.checkValue(cmd.getValue(opt_clientSNI)); + } + if ((opt_networkRole != NET_REQUESTOR) && cmd.findOption("--expect-sni")) + { + app.checkValue(cmd.getValue(opt_serverSNI)); + } + if (cmd.findOption("--no-sni")) + { + app.checkConflict("--no-sni", "--request-sni", (opt_clientSNI != NULL)); + app.checkConflict("--no-sni", "--expect-sni", (opt_serverSNI != NULL)); + opt_clientSNI = OFnullptr; + opt_serverSNI = OFnullptr; + } + + if (cmd.findOption("--seed")) { app.checkDependence("--seed", tlsopts, opt_secureConnection); - app.checkValue( cmd.getValue( opt_readSeedFile ) ); + app.checkValue(cmd.getValue(opt_readSeedFile)); } cmd.beginOptionBlock(); - if( cmd.findOption( "--write-seed" ) ) + if (cmd.findOption("--write-seed")) { app.checkDependence("--write-seed", tlsopts, opt_secureConnection); - app.checkDependence( "--write-seed", "--seed", opt_readSeedFile != OFnullptr ); + app.checkDependence("--write-seed", "--seed", opt_readSeedFile != OFnullptr); opt_writeSeedFile = opt_readSeedFile; } - if( cmd.findOption( "--write-seed-file" ) ) + if (cmd.findOption("--write-seed-file")) { app.checkDependence("--write-seed-file", tlsopts, opt_secureConnection); - app.checkDependence( "--write-seed-file", "--seed", opt_readSeedFile != OFnullptr ); - app.checkValue( cmd.getValue( opt_writeSeedFile ) ); + app.checkDependence("--write-seed-file", "--seed", opt_readSeedFile != OFnullptr); + app.checkValue(cmd.getValue(opt_writeSeedFile)); } cmd.endOptionBlock(); cmd.beginOptionBlock(); - if( cmd.findOption( "--require-peer-cert" ) ) + if (cmd.findOption("--require-peer-cert")) { app.checkDependence("--require-peer-cert", tlsopts, opt_secureConnection); opt_certVerification = DCV_requireCertificate; } - if( cmd.findOption( "--ignore-peer-cert" ) ) + if (cmd.findOption("--ignore-peer-cert")) { app.checkDependence("--ignore-peer-cert", tlsopts, opt_secureConnection); opt_certVerification = DCV_ignoreCertificate; } - if ( (opt_networkRole != NET_REQUESTOR) && cmd.findOption( "--verify-peer-cert" ) ) + if ((opt_networkRole != NET_REQUESTOR) && cmd.findOption("--verify-peer-cert")) { app.checkDependence("--verify-peer-cert", tlsopts, opt_secureConnection); opt_certVerification = DCV_checkCertificate; @@ -240,6 +395,18 @@ void DcmTLSOptions::parseArguments(OFConsoleApplication& app, OFCommandLine& cmd cmd.endOptionBlock(); cmd.beginOptionBlock(); + if (cmd.findOption("--profile-8996")) + { + app.checkDependence("--profile-8996", tlsopts, opt_secureConnection); + opt_tlsProfile = TSP_Profile_BCP_195_RFC_8996; + } +#ifdef DCMTK_Modified_BCP195_RFC8996_TLS_Profile_Supported + if (cmd.findOption("--profile-8996-mod")) + { + app.checkDependence("--profile-8996-mod", tlsopts, opt_secureConnection); + opt_tlsProfile = TSP_Profile_BCP_195_RFC_8996_Modified; + } +#endif if (cmd.findOption("--profile-bcp195")) { app.checkDependence("--profile-bcp195", tlsopts, opt_secureConnection); @@ -257,11 +424,11 @@ void DcmTLSOptions::parseArguments(OFConsoleApplication& app, OFCommandLine& cmd } if (csh.cipher3DESsupported()) { - if (cmd.findOption("--profile-basic")) - { - app.checkDependence("--profile-basic", tlsopts, opt_secureConnection); - opt_tlsProfile = TSP_Profile_Basic; - } + if (cmd.findOption("--profile-basic")) + { + app.checkDependence("--profile-basic", tlsopts, opt_secureConnection); + opt_tlsProfile = TSP_Profile_Basic; + } } if (cmd.findOption("--profile-aes")) { @@ -270,37 +437,27 @@ void DcmTLSOptions::parseArguments(OFConsoleApplication& app, OFCommandLine& cmd } if (csh.cipherNULLsupported()) { - if (cmd.findOption("--profile-null")) - { - app.checkDependence("--profile-null", tlsopts, opt_secureConnection); - opt_tlsProfile = TSP_Profile_IHE_ATNA_Unencrypted; - } + if (cmd.findOption("--profile-null")) + { + app.checkDependence("--profile-null", tlsopts, opt_secureConnection); + opt_tlsProfile = TSP_Profile_IHE_ATNA_Unencrypted; + } } cmd.endOptionBlock(); // check the other TLS specific options that will only be evaluated // later in DcmTLSOptions::createTransportLayer(). - if (cmd.findOption("--add-cert-file", 0, OFCommandLine::FOM_First)) - app.checkDependence("--add-cert-file", tlsopts, opt_secureConnection); - if (cmd.findOption("--add-cert-dir", 0, OFCommandLine::FOM_First)) - app.checkDependence("--add-cert-dir", tlsopts, opt_secureConnection); - if (cmd.findOption("--add-crl-file", 0, OFCommandLine::FOM_First)) - app.checkDependence("--add-crl-file", tlsopts, opt_secureConnection); - - cmd.beginOptionBlock(); - if (cmd.findOption("--enable-crl-vfy", 0, OFCommandLine::FOM_First)) - app.checkDependence("--enable-crl-vfy", tlsopts, opt_secureConnection); - if (cmd.findOption("--enable-crl-all", 0, OFCommandLine::FOM_First)) + if (cmd.findOption("--add-cert-file")) + app.checkDependence("--add-cert-file", tlsopts, opt_secureConnection); + if (cmd.findOption("--add-cert-dir")) + app.checkDependence("--add-cert-dir", tlsopts, opt_secureConnection); + if (cmd.findOption("--add-crl-file")) + app.checkDependence("--add-crl-file", tlsopts, opt_secureConnection); + + if (cmd.findOption("--cipher")) { - app.checkDependence("--enable-crl-all", tlsopts, opt_secureConnection); - app.checkConflict("--enable-crl-all", "--enable-crl-vfy", cmd.findOption("--enable-crl-vfy", 0, OFCommandLine::FOM_First)); - } - cmd.endOptionBlock(); - - if (cmd.findOption("--cipher", 0, OFCommandLine::FOM_First)) - { - app.checkDependence("--cipher", tlsopts, opt_secureConnection); - app.checkConflict("--cipher", "--profile-bcp195-ex", (opt_tlsProfile == TSP_Profile_BCP195_Extended)); + app.checkDependence("--cipher", tlsopts, opt_secureConnection); + app.checkConflict("--cipher", "--profile-bcp195-ex", (opt_tlsProfile == TSP_Profile_BCP195_Extended)); } } #else @@ -316,7 +473,8 @@ OFCondition DcmTLSOptions::createTransportLayer( OFConsoleApplication& app, OFCommandLine& cmd) { - DcmTLSCRLVerification crlmode = TCR_noCRL; + // use mode that was passed via command line options + DcmTLSCRLVerification crlmode = opt_crlMode; if (opt_secureConnection) { @@ -356,17 +514,18 @@ OFCondition DcmTLSOptions::createTransportLayer( do { app.checkValue(cmd.getValue(current)); - if (tLayer->addCertificateRevocationList(current, opt_keyFileFormat).bad()) + if (tLayer->addCertificateRevocationList(current, opt_keyFileFormat).good()) { - DCMTLS_WARN("unable to load CRL file '" << current << "', ignoring"); + // enable default CRL verification mode if file was loaded successfully + if (crlmode == TCR_noCRL) + crlmode = TCR_checkLeafCRL; + } else { + DCMTLS_WARN("unable to load CRL file '" << current << "', ignoring"); } - crlmode = TCR_checkLeafCRL; } while (cmd.findOption("--add-crl-file", 0, OFCommandLine::FOM_Next)); } // set CRL verification mode - if (cmd.findOption( "--enable-crl-vfy" )) crlmode = TCR_checkLeafCRL; - if (cmd.findOption( "--enable-crl-all" )) crlmode = TCR_checkAllCRL; tLayer->setCRLverification(crlmode); OFCondition cond; @@ -379,15 +538,15 @@ OFCondition DcmTLSOptions::createTransportLayer( cond = tLayer->setPrivateKeyFile(opt_privateKeyFile, opt_keyFileFormat); // replace the low-level error message with an easier to understand one - if (cond.bad()) return DCMTLS_EC_FailedToLoadPrivateKey( opt_privateKeyFile ); + if (cond.bad()) return DCMTLS_EC_FailedToLoadPrivateKey(opt_privateKeyFile); - cond = tLayer->setCertificateFile(opt_certificateFile, opt_keyFileFormat); + cond = tLayer->setCertificateFile(opt_certificateFile, opt_keyFileFormat, opt_tlsProfile); // replace the low-level error message with an easier to understand one - if (cond.bad()) DCMTLS_EC_FailedToLoadCertificate( opt_certificateFile ); + if (cond.bad()) return DCMTLS_EC_FailedToLoadCertificate(opt_certificateFile); if (! tLayer->checkPrivateKeyMatchesCertificate()) - return DCMTLS_EC_MismatchedPrivateKeyAndCertificate( opt_privateKeyFile, opt_certificateFile ); + return DCMTLS_EC_MismatchedPrivateKeyAndCertificate(opt_privateKeyFile, opt_certificateFile); } // set TLS profile @@ -409,10 +568,14 @@ OFCondition DcmTLSOptions::createTransportLayer( cond = tLayer->activateCipherSuites(); if (cond.bad()) return cond; - // Loading of DH parameters should happen after the call to setTLSProfile() + // set SNI names + tLayer->setClientSNI(opt_clientSNI); + tLayer->setServerSNI(opt_serverSNI); + + // loading of DH parameters should happen after the call to setTLSProfile() // because otherwise we cannot check profile specific restrictions if (opt_dhparam && ! (tLayer->setTempDHParameters(opt_dhparam))) - DCMTLS_WARN("unable to load temporary DH parameter file '" << opt_dhparam << "', ignoring"); + DCMTLS_WARN("unable to load temporary DH parameter file '" << opt_dhparam << "', ignoring"); tLayer->setCertificateVerification(opt_certVerification); @@ -440,89 +603,3 @@ OFCondition DcmTLSOptions::createTransportLayer( return EC_Normal; } #endif - -#ifdef WITH_OPENSSL -OFBool DcmTLSOptions::listOfCiphersRequested(OFCommandLine& cmd) -{ - if (cmd.findOption("--list-ciphers")) return OFTrue; - return OFFalse; -} -#else -OFBool DcmTLSOptions::listOfCiphersRequested(OFCommandLine& /* cmd */) -{ - return OFFalse; -} -#endif - -#ifdef WITH_OPENSSL -void DcmTLSOptions::printSupportedCiphersuites(OFConsoleApplication& app, STD_NAMESPACE ostream& os) -{ - DcmTLSCiphersuiteHandler csh; - app.printHeader(OFTrue /*print host identifier*/); - os << OFendl << "Supported TLS ciphersuites are:" << OFendl; - csh.printSupportedCiphersuites(os); -} -#else -void DcmTLSOptions::printSupportedCiphersuites(OFConsoleApplication& /* app */, STD_NAMESPACE ostream& /* os */) -{ -} -#endif - -OFBool DcmTLSOptions::secureConnectionRequested() const -{ -#ifdef WITH_OPENSSL - return opt_secureConnection; -#else - return OFFalse; -#endif -} - -DcmTransportLayer *DcmTLSOptions::getTransportLayer() -{ -#ifdef WITH_OPENSSL - return tLayer; -#else - return NULL; -#endif -} - -OFCondition DcmTLSOptions::writeRandomSeed() -{ -#ifdef WITH_OPENSSL - if( opt_writeSeedFile && tLayer) - { - if( tLayer->canWriteRandomSeed() ) - { - if( ! tLayer->writeRandomSeed( opt_writeSeedFile ) ) - return DCMTLS_EC_FailedToWriteRandomSeedFile( opt_writeSeedFile ); - } - else return DCMTLS_EC_FailedToWriteRandomSeedFile( opt_writeSeedFile ); - } -#endif - return EC_Normal; -} - -#ifdef WITH_OPENSSL -OFCondition DcmTLSOptions::verifyClientCertificate(const char *fileName) -{ - if (tLayer) return tLayer->verifyClientCertificate(fileName, opt_keyFileFormat); - return EC_IllegalCall; -} -#else -OFCondition DcmTLSOptions::verifyClientCertificate(const char * /* fileName */) -{ - return EC_IllegalCall; -} -#endif - -#ifdef WITH_OPENSSL -OFCondition DcmTLSOptions::isRootCertificate(const char *fileName) -{ - return DcmTLSTransportLayer::isRootCertificate(fileName, opt_keyFileFormat); -} -#else -OFCondition DcmTLSOptions::isRootCertificate(const char * /* fileName */) -{ - return EC_IllegalCall; -} -#endif diff --git a/dcmtls/libsrc/tlsscu.cc b/dcmtls/libsrc/tlsscu.cc index 08ab4607..a9aff68f 100644 --- a/dcmtls/libsrc/tlsscu.cc +++ b/dcmtls/libsrc/tlsscu.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2010-2022, OFFIS e.V. + * Copyright (C) 2010-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -125,7 +125,8 @@ OFCondition DcmTLSSCU::initNetwork() DCMTLS_ERROR("Unable to create TLS transport layer for SCP: Unable to load private TLS key from file " << m_privateKeyFile); } // Set file that contains host certificate - if (cond.good()) cond = m_tLayer->setCertificateFile(m_certificateFile.c_str(), m_certKeyFileFormat); + // Ensure that the certificate fulfils the requirements for the default TLS profile + if (cond.good()) cond = m_tLayer->setCertificateFile(m_certificateFile.c_str(), m_certKeyFileFormat, TSP_Profile_BCP_195_RFC_8996); if (cond.bad()) { DCMTLS_ERROR("Unable to load SCP certificate from file " << m_certificateFile); diff --git a/dcmtls/libsrc/tlstrans.cc b/dcmtls/libsrc/tlstrans.cc index c095b9c7..752cd36c 100644 --- a/dcmtls/libsrc/tlstrans.cc +++ b/dcmtls/libsrc/tlstrans.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1998-2021, OFFIS e.V. + * Copyright (C) 1998-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -324,9 +324,8 @@ OFString& DcmTLSConnection::dumpConnectionParameters(OFString& str) void DcmTLSConnection::logTLSConnection() { OFString s; - dumpConnectionParameters(s); DCMTLS_DEBUG( - "================== BEGIN TLS CONNECTION DETAILS =================\n" << s << + "================== BEGIN TLS CONNECTION DETAILS =================\n" << dumpConnectionParameters(s) << "\n=================== END TLS CONNECTION DETAILS =================="); } diff --git a/dcmtls/tests/tscuscptls.cc b/dcmtls/tests/tscuscptls.cc index d895da7a..119c6a1a 100644 --- a/dcmtls/tests/tscuscptls.cc +++ b/dcmtls/tests/tscuscptls.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2019-2021, OFFIS e.V. + * Copyright (C) 2019-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -315,7 +315,7 @@ OFTEST_FLAGS(dcmtls_scp_tls, EF_None) scpTlsLayer.setPrivateKeyPasswd(PRIVATE_KEY_PWD); result = scpTlsLayer.setPrivateKeyFile(PRIVATE_KEY_FILENAME, DCF_Filetype_PEM); OFCHECK(result.good()); - result = scpTlsLayer.setCertificateFile(PUBLIC_SELFSIGNED_CERT_FILENAME, DCF_Filetype_PEM); + result = scpTlsLayer.setCertificateFile(PUBLIC_SELFSIGNED_CERT_FILENAME, DCF_Filetype_PEM, TSP_Profile_BCP_195_RFC_8996); OFCHECK(result.good()); OFCHECK(scpTlsLayer.checkPrivateKeyMatchesCertificate()); scpTlsLayer.setCertificateVerification(DCV_ignoreCertificate); @@ -397,7 +397,7 @@ OFTEST_FLAGS(dcmtls_scp_pool_tls, EF_None) scpTlsLayer.setPrivateKeyPasswd(PRIVATE_KEY_PWD); result = scpTlsLayer.setPrivateKeyFile(PRIVATE_KEY_FILENAME, DCF_Filetype_PEM); OFCHECK(result.good()); - result = scpTlsLayer.setCertificateFile(PUBLIC_SELFSIGNED_CERT_FILENAME, DCF_Filetype_PEM); + result = scpTlsLayer.setCertificateFile(PUBLIC_SELFSIGNED_CERT_FILENAME, DCF_Filetype_PEM, TSP_Profile_BCP_195_RFC_8996); OFCHECK(result.good()); OFCHECK(scpTlsLayer.checkPrivateKeyMatchesCertificate()); scpTlsLayer.setCertificateVerification(DCV_ignoreCertificate); diff --git a/dcmwlm/docs/wlmscpfs.man b/dcmwlm/docs/wlmscpfs.man index 393d57e7..aef243a6 100644 --- a/dcmwlm/docs/wlmscpfs.man +++ b/dcmwlm/docs/wlmscpfs.man @@ -252,6 +252,7 @@ automatically deleted by \b wlmscpfs. If request files are enabled, \b wlmscpfs must automatically create file names within the given directory. By default, the format is \.dump where \ is in the format YYYYMMDDhhmmssffffff where: + - YYYY is the current year - MM is the current month - DD is the current day @@ -357,6 +358,7 @@ As return keys the following attributes are currently supported by \b wlmscpfs: (0008,0050) AccessionNumber (0008,0080) InstitutionName (0008,0081) InstitutionAddress +(0008,1040) InstitutionalDepartmentName (0008,0090) ReferringPhysicianName (0008,1080) AdmittingDiagnosesDescription (0008,1110) ReferencedStudySequence @@ -513,6 +515,6 @@ It is an error if no data dictionary can be loaded. \section wlmscpfs_copyright COPYRIGHT -Copyright (C) 1996-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. +Copyright (C) 1996-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany. */ diff --git a/dcmwlm/include/dcmtk/dcmwlm/wlds.h b/dcmwlm/include/dcmtk/dcmwlm/wlds.h index e0af446f..4a076bcb 100644 --- a/dcmwlm/include/dcmtk/dcmwlm/wlds.h +++ b/dcmwlm/include/dcmtk/dcmwlm/wlds.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1996-2022, OFFIS e.V. + * Copyright (C) 1996-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -216,6 +216,7 @@ class DCMTK_DCMWLM_EXPORT WlmDataSource * DCM_AdditionalPatientHistory (0010,21b0) LT O 3 (from the Patient Medical Module) * DCM_LastMenstrualDate (0010,21d0) DA O 3 (from the Patient Medical Module) * DCM_InstitutionAddress (0008,0081) ST O 3 (from the Visit Identification Module) + * DCM_InstitutionalDepartmentName (0008,1040) LO O 3 (from the Visit Identification Module) * DCM_OtherPatientNames (0010,1001) PN O 3 (from the Patient Identification Module) * DCM_PatientAddress (0010,1040) LO O 3 (from the Patient Demographic Module) * DCM_MilitaryRank (0010,1080) LO O 3 (from the Patient Demographic Module) diff --git a/dcmwlm/libsrc/wlds.cc b/dcmwlm/libsrc/wlds.cc index 1bcc137c..635af2fb 100644 --- a/dcmwlm/libsrc/wlds.cc +++ b/dcmwlm/libsrc/wlds.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1996-2019, OFFIS e.V. + * Copyright (C) 1996-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -470,7 +470,7 @@ void WlmDataSource::ExpandEmptySequenceInSearchMask( DcmElement *&element ) // depending on what kind of supported sequence attribute // was passed, we have to insert different attributes - DcmTagKey key = element->getTag().getXTag(); + const DcmTagKey key(element->getTag()); if( key == DCM_ScheduledProcedureStepSequence ) { newElement = new DcmApplicationEntity( DcmTag( DCM_ScheduledStationAETitle ) ); if( item->insert( newElement ) != EC_Normal ) delete newElement; @@ -960,11 +960,11 @@ OFBool WlmDataSource::IsSupportedMatchingKeyAttribute( DcmElement *element, DcmS DcmTagKey elementKey, supSequenceElementKey; // determine the current element's tag - elementKey = element->getTag().getXTag(); + elementKey = element->getTag(); // determine the sequence element's tag, if there is one if( supSequenceElement != NULL ) - supSequenceElementKey = supSequenceElement->getTag().getXTag(); + supSequenceElementKey = supSequenceElement->getTag(); // initialize result variable OFBool isSupportedMatchingKeyAttribute = OFFalse; @@ -1076,6 +1076,7 @@ OFBool WlmDataSource::IsSupportedReturnKeyAttribute( DcmElement *element, DcmSeq // DCM_AdditionalPatientHistory (0010,21b0) LT O 3 (from the Patient Medical Module) // DCM_LastMenstrualDate (0010,21d0) DA O 3 (from the Patient Medical Module) // DCM_InstitutionAddress (0008,0081) ST O 3 (from the Visit Identification Module) +// DCM_InstitutionalDepartmentName (0008,1040) LO O 3 (from the Visit Identification Module) // DCM_OtherPatientNames (0010,1001) PN O 3 (from the Patient Identification Module) // DCM_PatientAddress (0010,1040) LO O 3 (from the Patient Demographic Module) // DCM_MilitaryRank (0010,1080) LO O 3 (from the Patient Demographic Module) @@ -1111,11 +1112,11 @@ OFBool WlmDataSource::IsSupportedReturnKeyAttribute( DcmElement *element, DcmSeq DcmTagKey elementKey, supSequenceElementKey; // determine the current element's tag - elementKey = element->getTag().getXTag(); + elementKey = element->getTag(); // determine the sequence element's tag, if there is one if( supSequenceElement != NULL ) - supSequenceElementKey = supSequenceElement->getTag().getXTag(); + supSequenceElementKey = supSequenceElement->getTag(); // initialize result variable OFBool isSupportedReturnKeyAttribute = OFFalse; @@ -1199,6 +1200,7 @@ OFBool WlmDataSource::IsSupportedReturnKeyAttribute( DcmElement *element, DcmSeq elementKey == DCM_AdditionalPatientHistory || elementKey == DCM_LastMenstrualDate || elementKey == DCM_InstitutionAddress || + elementKey == DCM_InstitutionalDepartmentName || elementKey == DCM_OtherPatientNames || elementKey == DCM_PatientAddress || elementKey == DCM_MilitaryRank || diff --git a/dcmwlm/libsrc/wldsfs.cc b/dcmwlm/libsrc/wldsfs.cc index dd0639d9..d821bb79 100644 --- a/dcmwlm/libsrc/wldsfs.cc +++ b/dcmwlm/libsrc/wldsfs.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1996-2021, OFFIS e.V. + * Copyright (C) 1996-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -479,7 +479,7 @@ void WlmDataSourceFileSystem::HandleNonSequenceElementInResultDataset( DcmElemen OFCondition cond; // determine the current elements tag. - DcmTagKey tag( element->getTag().getXTag() ); + const DcmTagKey tag( element->getTag() ); // check if the current element is the "Specific Character Set" (0008,0005) attribute; // we do not want to deal with this attribute here. @@ -547,7 +547,7 @@ void WlmDataSourceFileSystem::HandleSequenceElementInResultDataset( DcmElement * // add all information from the matching record in the data source to this sequence // determine the current sequence elements tag. - DcmTagKey sequenceTag( sequenceOfItemsElement->getTag().getXTag() ); + const DcmTagKey sequenceTag( sequenceOfItemsElement->getTag() ); // determine how many items this sequence has in the matching record in the data source numOfItemsInResultSequence = fileSystemInteractionManager.GetNumberOfSequenceItemsForMatchingRecord( sequenceTag, superiorSequenceArray, numOfSuperiorSequences, idx ); diff --git a/dcmwlm/libsrc/wlfsim.cc b/dcmwlm/libsrc/wlfsim.cc index cc58ab62..27519c6d 100644 --- a/dcmwlm/libsrc/wlfsim.cc +++ b/dcmwlm/libsrc/wlfsim.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1996-2022, OFFIS e.V. + * Copyright (C) 1996-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -436,13 +436,13 @@ OFBool WlmFileSystemInteractionManager::DatasetIsComplete( DcmDataset *dataset ) // > ScheduledProcedureStepStartTime (0040,0003) 1 // > Modality (0008,0060) 1 // > ScheduledProcedureStepDescription (0040,0007) 1C (The ScheduledProcedureStepDescription (0040,0007) or the ScheduledProtocolCodeSequence (0040,0008) or both shall be supported by the SCP; we actually support both, so we have to check if at least one of the two attributes contains valid information.) -// > ScheduledProtocolCodeSequence (0040,0008) 1C (see abobve) +// > ScheduledProtocolCodeSequence (0040,0008) 1C (see above) // > > CodeValue (0008,0100) 1 // > > CodingSchemeDesignator (0008,0102) 1 // > ScheduledProcedureStepID (0040,0009) 1 // RequestedProcedureID (0040,1001) 1 // RequestedProcedureDescription (0032,1060) 1C (The RequestedProcedureDescription (0032,1060) or the RequestedProcedureCodeSequence (0032,1064) or both shall be supported by the SCP; we actually support both, so we have to check if at least one of the two attributes contains valid information.) -// RequestedProcedureCodeSequence (0032,1064) 1C (see abobve) +// RequestedProcedureCodeSequence (0032,1064) 1C (see above) // > > CodeValue (0008,0100) 1 // > > CodingSchemeDesignator (0008,0102) 1 // StudyInstanceUID (0020,000D) 1 diff --git a/doxygen/manpages/man1/dcmrecv.1 b/doxygen/manpages/man1/dcmrecv.1 index 090031f8..0a536e29 100644 --- a/doxygen/manpages/man1/dcmrecv.1 +++ b/doxygen/manpages/man1/dcmrecv.1 @@ -64,11 +64,11 @@ association negotiation profile from configuration file: application entity title: - -aet --aetitle [a]etitle: string - set my AE title (default: DCMRECV) - -uca --use-called-aetitle - always respond with called AE title + always respond with called AE title (default) + + -aet --aetitle [a]etitle: string + set my AE title other network options: @@ -387,4 +387,4 @@ The default behavior should be preferred and the \fIDCMDICTPATH\fP environment v \fBdcmsend\fP(1), \fBstorescu\fP(1), \fBstorescp\fP(1) .SH "COPYRIGHT" .PP -Copyright (C) 2013-2022 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&. +Copyright (C) 2013-2023 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&. diff --git a/oficonv/docs/mkcsmapper.man b/oficonv/docs/mkcsmapper.man index bb74f34a..59c513a8 100644 --- a/oficonv/docs/mkcsmapper.man +++ b/oficonv/docs/mkcsmapper.man @@ -16,15 +16,15 @@ mkcsmapper [-d] [-m | -p] [-o outfile] [infile] The \b mkcsmapper utility generates binary conversion data from plain text conversion tables for the oficonv library. The conversion data has three -components: The conversion mapping between specific character encodings, -a directory of available mapping files, and a pivot file, -which contains the possible source and destination -encoding pairs or the set of mappings to use for a compound encoding. +components: The conversion mapping between specific character encodings, a +directory of available mapping files, and a pivot file, which contains the +possible source and destination encoding pairs or the set of mappings to use +for a compound encoding. \section mkcsmapper_parameters PARAMETERS \verbatim -infile input file (from oficonv/datasrc/csmapper) to be converted +infile input file (from oficonv/datasrc/csmapper) to be converted \endverbatim \section mkcsmapper_options OPTIONS @@ -43,7 +43,7 @@ infile input file (from oficonv/datasrc/csmapper) to be converted \section mkcsmapper_exit_status EXIT STATUS -The mkcsmapper utility exits 0 on success, and >0 if an error occurs. +The \b mkcsmapper utility exits 0 on success, and >0 if an error occurs. \section mkcsmapper_see_also SEE ALSO @@ -51,6 +51,7 @@ The mkcsmapper utility exits 0 on success, and >0 if an error occurs. \section mkcsmapper_copyright COPYRIGHT -This man page is derived from the FreeBSD mkcsmapper man page, Copyright (C) 2009 Gabor Kovesdan +This man page is derived from the FreeBSD mkcsmapper man page, +Copyright (C) 2009 Gabor Kovesdan */ diff --git a/oficonv/docs/mkesdb.man b/oficonv/docs/mkesdb.man index b749226e..7ac36b60 100644 --- a/oficonv/docs/mkesdb.man +++ b/oficonv/docs/mkesdb.man @@ -20,7 +20,7 @@ important characteristics, such as the decoder module to use. \section mkesdb_parameters PARAMETERS \verbatim -infile input file (from oficonv/datasrc/esdb) to be converted +infile input file (from oficonv/datasrc/esdb) to be converted \endverbatim \section mkesdb_options OPTIONS @@ -29,7 +29,7 @@ infile input file (from oficonv/datasrc/esdb) to be converted \verbatim -d debug mode, print debug information - -m process directory catalog or alias file, + -m process directory catalog or alias file, instead of an encoding description -o [f]ilename: string @@ -38,7 +38,7 @@ infile input file (from oficonv/datasrc/esdb) to be converted \section mkesdb_exit_status EXIT STATUS -The mkesdb utility exits 0 on success, and >0 if an error occurs. +The \b mkesdb utility exits 0 on success, and >0 if an error occurs. \section mkesdb_see_also SEE ALSO @@ -46,6 +46,7 @@ The mkesdb utility exits 0 on success, and >0 if an error occurs. \section mkesdb_copyright COPYRIGHT -This man page is derived from the FreeBSD mkesdb man page, Copyright (C) 2009 Gabor Kovesdan +This man page is derived from the FreeBSD mkesdb man page, +Copyright (C) 2009 Gabor Kovesdan */ diff --git a/oficonv/include/dcmtk/oficonv/iconv.h b/oficonv/include/dcmtk/oficonv/iconv.h index 330549db..ee879456 100644 --- a/oficonv/include/dcmtk/oficonv/iconv.h +++ b/oficonv/include/dcmtk/oficonv/iconv.h @@ -94,9 +94,9 @@ DCMTK_OFICONV_EXPORT iconv_t OFiconv_open(const char *dstname, const char *srcna * * If the string pointed to by *src contains a character which is valid * under the source codeset but can not be converted to the destination - * codeset, the character is replaced by an “invalid character” which - * depends on the destination codeset, e.g., ‘?’, and the conversion is - * continued. iconv() returns the number of such “invalid conversions”. + * codeset, the character is replaced by an "invalid character" which + * depends on the destination codeset, e.g., '?', and the conversion is + * continued. iconv() returns the number of such "invalid conversions". * * @param cd conversion descriptor returned by OFiconv_open() * @param src address of pointer to first byte in source buffer diff --git a/oficonv/libsrc/citrus_hz.c b/oficonv/libsrc/citrus_hz.c index 27db88dc..4bf17533 100644 --- a/oficonv/libsrc/citrus_hz.c +++ b/oficonv/libsrc/citrus_hz.c @@ -361,7 +361,11 @@ _citrus_HZ_wcrtomb_priv(_HZEncodingInfo * ei, ch = (wc >> (len * 8)) & 0xFF; if (range->start > ch || range->end < ch) goto ilseq; - psenc->ch[psenc->chlen++] = (char) (ch | bit); + if (psenc->chlen < ROWCOL_MAX) { + psenc->ch[psenc->chlen++] = (char) (ch | bit); + } else { + return (E2BIG); + } } memcpy(s, psenc->ch, psenc->chlen); *nresult = psenc->chlen; diff --git a/oficonv/libsrc/citrus_jisx0208.c b/oficonv/libsrc/citrus_jisx0208.c index e4b410a0..cd1b300b 100644 --- a/oficonv/libsrc/citrus_jisx0208.c +++ b/oficonv/libsrc/citrus_jisx0208.c @@ -210,8 +210,12 @@ _citrus_JISX0208_mbrtowc_priv(_JISX0208EncodingInfo *ei, _citrus_wc_t *pwc, char while (psenc->chlen < c) { if (n < 1) goto restart; - psenc->ch[psenc->chlen] = *s0++; - psenc->chlen++; + if (psenc->chlen < 3) { + psenc->ch[psenc->chlen] = *s0++; + psenc->chlen++; + } else { + return (E2BIG); + } n--; } *s = s0; diff --git a/oficonv/libsrc/citrus_viqr.c b/oficonv/libsrc/citrus_viqr.c index 9fe03f7f..a741093f 100644 --- a/oficonv/libsrc/citrus_viqr.c +++ b/oficonv/libsrc/citrus_viqr.c @@ -34,6 +34,14 @@ #include "dcmtk/oficonv/queue.h" #endif +/* FreeBSD defines TAILQ_FOREACH_SAFE in , but not all systems do */ +#ifndef TAILQ_FOREACH_SAFE +#define TAILQ_FOREACH_SAFE(var, head, field, tvar) \ + for ((var) = TAILQ_FIRST((head)); \ + (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \ + (var) = (tvar)) +#endif + #ifdef HAVE_SYS_TYPES_H #include #endif @@ -201,9 +209,9 @@ mnemonic_append_child(mnemonic_t *m, const char *s, static void mnemonic_destroy(mnemonic_t *m) { - mnemonic_t *m0; + mnemonic_t *m0, *n; - TAILQ_FOREACH(m0, &m->child, entry) + TAILQ_FOREACH_SAFE(m0, &m->child, entry, n) mnemonic_destroy(m0); free(m); } diff --git a/ofstd/include/dcmtk/ofstd/diag/arrybnds.def b/ofstd/include/dcmtk/ofstd/diag/arrybnds.def new file mode 100644 index 00000000..bc8134a7 --- /dev/null +++ b/ofstd/include/dcmtk/ofstd/diag/arrybnds.def @@ -0,0 +1,3 @@ +#if ( defined(__GNUC__) && (__GNUC__ >= 7 ) ) +#pragma GCC diagnostic ignored "-Warray-bounds" +#endif diff --git a/ofstd/include/dcmtk/ofstd/diag/restrict.def b/ofstd/include/dcmtk/ofstd/diag/restrict.def new file mode 100644 index 00000000..48f83829 --- /dev/null +++ b/ofstd/include/dcmtk/ofstd/diag/restrict.def @@ -0,0 +1,3 @@ +#if ( defined(__GNUC__) && (__GNUC__ >= 7 ) ) +#pragma GCC diagnostic ignored "-Wrestrict" +#endif diff --git a/ofstd/include/dcmtk/ofstd/diag/stringop.def b/ofstd/include/dcmtk/ofstd/diag/stringop.def new file mode 100644 index 00000000..3b81be1a --- /dev/null +++ b/ofstd/include/dcmtk/ofstd/diag/stringop.def @@ -0,0 +1,3 @@ +#if ( defined(__GNUC__) && (__GNUC__ >= 7 ) ) +#pragma GCC diagnostic ignored "-Wstringop-overflow" +#endif diff --git a/ofstd/include/dcmtk/ofstd/diag/useafree.def b/ofstd/include/dcmtk/ofstd/diag/useafree.def new file mode 100644 index 00000000..ac77ea79 --- /dev/null +++ b/ofstd/include/dcmtk/ofstd/diag/useafree.def @@ -0,0 +1,3 @@ +#if ( defined(__GNUC__) && (__GNUC__ >= 12 ) ) +#pragma GCC diagnostic ignored "-Wuse-after-free" +#endif diff --git a/ofstd/include/dcmtk/ofstd/ofbmanip.h b/ofstd/include/dcmtk/ofstd/ofbmanip.h index 35981100..5277370a 100755 --- a/ofstd/include/dcmtk/ofstd/ofbmanip.h +++ b/ofstd/include/dcmtk/ofstd/ofbmanip.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1997-2021, OFFIS e.V. + * Copyright (C) 1997-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -27,6 +27,7 @@ #include "dcmtk/ofstd/ofcast.h" #include "dcmtk/ofstd/ofdefine.h" #include "dcmtk/ofstd/oftypes.h" +#include "dcmtk/ofstd/ofdiag.h" #include @@ -86,6 +87,14 @@ class OFBitmanipTemplate memmove(OFstatic_cast(void *, dest), OFstatic_cast(const void *, src), count * sizeof(T)); #else +// suppress gcc warning on MinGW, where no memory block +// can be larger than PTRDIFF_MAX. The warning is correct +// (but harmless) on MinGW, but a change of the code that +// fixes the warning would break other platforms. +#include DCMTK_DIAGNOSTIC_PUSH +#include DCMTK_DIAGNOSTIC_IGNORE_STRINGOP_OVERFLOW +#include DCMTK_DIAGNOSTIC_IGNORE_RESTRICT + #ifdef HAVE_MEMMOVE // On some platforms (such as MinGW), memmove cannot move buffers // larger than PTRDIFF_MAX. In the rare case of such huge buffers, @@ -118,6 +127,7 @@ class OFBitmanipTemplate for (i = count; i != 0; --i) *q-- = *p--; } +#include DCMTK_DIAGNOSTIC_POP #endif } diff --git a/ofstd/include/dcmtk/ofstd/ofcast.h b/ofstd/include/dcmtk/ofstd/ofcast.h index 8139de7f..c746b88f 100644 --- a/ofstd/include/dcmtk/ofstd/ofcast.h +++ b/ofstd/include/dcmtk/ofstd/ofcast.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2003-2014, OFFIS e.V. + * Copyright (C) 2003-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -52,19 +52,22 @@ #ifdef HAVE_DYNAMIC_CAST #define OFdynamic_cast(x,y) (dynamic_cast< x >(y)) #else -#define OFdynamic_cast(x,y) ((x)(y)) +#error Your C++ compiler does not support dynamic_cast(), if you want to use this, report to bugs@dcmtk.org and/or see fix in ofcast.h +//#define OFdynamic_cast(x,y) ((x)(y)) // uncomment for using old-style cast instead #endif #ifdef HAVE_REINTERPRET_CAST #define OFreinterpret_cast(x,y) (reinterpret_cast< x >(y)) #else -#define OFreinterpret_cast(x,y) ((x)(y)) +#error Your C++ compiler does not support reinterpret_cast(), if you want to use this, report to bugs@dcmtk.org and/or see fix in ofcast.h +//#define OFreinterpret_cast(x,y) ((x)(y)) // uncomment for using old-style cast instead #endif #ifdef HAVE_STATIC_CAST #define OFstatic_cast(x,y) (static_cast< x >(y)) #else -#define OFstatic_cast(x,y) ((x)(y)) +#error Your C++ compiler does not support static_cast(), if you want to use this, report to bugs@dcmtk.org and/or see fix in ofcast.h +// #define OFstatic_cast(x,y) ((x)(y)) // uncomment for using old-style cast instead #endif #endif diff --git a/ofstd/include/dcmtk/ofstd/ofcond.h b/ofstd/include/dcmtk/ofstd/ofcond.h index 4cac7164..63f72bc1 100644 --- a/ofstd/include/dcmtk/ofstd/ofcond.h +++ b/ofstd/include/dcmtk/ofstd/ofcond.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2001-2021, OFFIS e.V. + * Copyright (C) 2001-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -28,6 +28,7 @@ #include "dcmtk/ofstd/oftypes.h" /* for class OFBool */ #include "dcmtk/ofstd/ofstring.h" /* for class OFString */ #include "dcmtk/ofstd/ofcast.h" +#include "dcmtk/ofstd/ofdiag.h" #include #include /* for free() */ @@ -222,6 +223,11 @@ public: } } +// suppress spurious gcc 12 warning about use-after-free. +// this is a known bug in gcc. +#include DCMTK_DIAGNOSTIC_PUSH +#include DCMTK_DIAGNOSTIC_IGNORE_USE_AFTER_FREE + /// destructor ~OFCondition() { @@ -231,6 +237,8 @@ public: } } +#include DCMTK_DIAGNOSTIC_POP + /** copy assignment operator * @param arg The OFCondition instance to copy * @return *this diff --git a/ofstd/include/dcmtk/ofstd/ofdiag.h b/ofstd/include/dcmtk/ofstd/ofdiag.h index d9bf94b2..460929ac 100644 --- a/ofstd/include/dcmtk/ofstd/ofdiag.h +++ b/ofstd/include/dcmtk/ofstd/ofdiag.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2016-2022, OFFIS e.V. + * Copyright (C) 2016-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -213,6 +213,32 @@ */ #define DCMTK_DIAGNOSTIC_IGNORE_UNREFERENCED_FORMAL_PARAMETER +/*! @brief A macro to disable warnings about an overflow in a string operation + * @note The macro may only be used in conjunction with #include! + * @see DCMTK_DIAGNOSTIC_PUSH for an example. + */ +#define DCMTK_DIAGNOSTIC_IGNORE_STRINGOP_OVERFLOW + +/*! @brief A macro to disable warnings about a restrict-qualified parameter + * that is aliased by another argument, or when copies between such objects overlap. + * @note The macro may only be used in conjunction with #include! + * @see DCMTK_DIAGNOSTIC_PUSH for an example. + */ +#define DCMTK_DIAGNOSTIC_IGNORE_RESTRICT + +/*! @brief A macro to disable warnings about the possible use of an + * object after deallocation by a call to free(). + * @note The macro may only be used in conjunction with #include! + * @see DCMTK_DIAGNOSTIC_PUSH for an example. + */ +#define DCMTK_DIAGNOSTIC_IGNORE_USE_AFTER_FREE + +/*! @brief A macro to disable warnings about out-of bounds array indices. + * @note The macro may only be used in conjunction with #include! + * @see DCMTK_DIAGNOSTIC_PUSH for an example. + */ +#define DCMTK_DIAGNOSTIC_IGNORE_ARRAY_BOUNDS + #else // DOXYGEN #define DCMTK_DIAGNOSTIC_PUSH "dcmtk/ofstd/diag/push.def" @@ -236,6 +262,10 @@ #define DCMTK_DIAGNOSTIC_IGNORE_UNREACHABLE_CODE_WARNING "dcmtk/ofstd/diag/unreachb.def" #define DCMTK_DIAGNOSTIC_IGNORE_ATTRIBUTE_REDECLARATION "dcmtk/ofstd/diag/ignrattr.def" #define DCMTK_DIAGNOSTIC_IGNORE_UNREFERENCED_FORMAL_PARAMETER "dcmtk/ofstd/diag/unrefprm.def" +#define DCMTK_DIAGNOSTIC_IGNORE_STRINGOP_OVERFLOW "dcmtk/ofstd/diag/stringop.def" +#define DCMTK_DIAGNOSTIC_IGNORE_RESTRICT "dcmtk/ofstd/diag/restrict.def" +#define DCMTK_DIAGNOSTIC_IGNORE_USE_AFTER_FREE "dcmtk/ofstd/diag/useafree.def" +#define DCMTK_DIAGNOSTIC_IGNORE_ARRAY_BOUNDS "dcmtk/ofstd/diag/arrybnds.def" // readable shorthands for compiler version checks #define DCMTK_DIAGNOSTIC_MIN_GCC_VERSION(MAJOR, MINOR, PATCH)\ diff --git a/ofstd/include/dcmtk/ofstd/oftypes.h b/ofstd/include/dcmtk/ofstd/oftypes.h index 7739cfbc..9557da8f 100644 --- a/ofstd/include/dcmtk/ofstd/oftypes.h +++ b/ofstd/include/dcmtk/ofstd/oftypes.h @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1997-2021, OFFIS e.V. + * Copyright (C) 1997-2022, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -29,7 +29,9 @@ // some C++ implementations only define printf format macros like PRIu32 // when this macro is defined before or are included. +#ifndef __STDC_FORMAT_MACROS #define __STDC_FORMAT_MACROS 1 +#endif // include this file in doxygen documentation diff --git a/ofstd/include/dcmtk/ofstd/variadic/variant.h b/ofstd/include/dcmtk/ofstd/variadic/variant.h index e4efccea..acefafe5 100644 --- a/ofstd/include/dcmtk/ofstd/variadic/variant.h +++ b/ofstd/include/dcmtk/ofstd/variadic/variant.h @@ -126,12 +126,17 @@ public: init<0>(); } +// suppress spurious gcc warnings about array subscript issues in +// OFvariant_destroy_invoker issued by gcc 11 and newer +#include DCMTK_DIAGNOSTIC_PUSH +#include DCMTK_DIAGNOSTIC_IGNORE_ARRAY_BOUNDS OFTypename Invoker::return_type operator()( size_t index, void* content, const Invoker& invoker = Invoker() ) { // Select the fitting function pointer based on the index and call it with // the given pointer to the current contents. return (invoker.*m_Alternatives[index])( content ); } +#include DCMTK_DIAGNOSTIC_POP private: diff --git a/ofstd/libsrc/ofchrenc.cc b/ofstd/libsrc/ofchrenc.cc index dc2d9f82..89a62c14 100644 --- a/ofstd/libsrc/ofchrenc.cc +++ b/ofstd/libsrc/ofchrenc.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2011-2022, OFFIS e.V. + * Copyright (C) 2011-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -314,6 +314,9 @@ class OFCharacterEncoding::Implementation #ifdef WITH_LIBICONV #include #endif +#ifdef __GLIBC__ +#include // nl_langinfo / CODESET +#endif #endif /* DCMTK_ENABLE_CHARSET_CONVERSION == DCMTK_CHARSET_CONVERSION_OFICONV */ @@ -388,6 +391,11 @@ class OFCharacterEncoding::Implementation // basically, the function below should always return a non-empty string // but older versions of libiconv might return NULL in certain cases return OFSTRING_GUARD(::locale_charset()); +#elif defined(__GLIBC__) + const char *oldlocale = setlocale(LC_ALL, ""); + const char *codeset = nl_langinfo (CODESET); + setlocale(LC_ALL, oldlocale); + return OFSTRING_GUARD(codeset); #else return OFString(); #endif diff --git a/ofstd/libsrc/ofstring.cc b/ofstd/libsrc/ofstring.cc index 447a63da..9d3a4d0e 100644 --- a/ofstd/libsrc/ofstring.cc +++ b/ofstd/libsrc/ofstring.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 1997-2021, OFFIS e.V. + * Copyright (C) 1997-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by @@ -37,6 +37,7 @@ #include "dcmtk/ofstd/ofbmanip.h" #include "dcmtk/ofstd/oftypes.h" #include "dcmtk/ofstd/ofstd.h" +#include "dcmtk/ofstd/ofdiag.h" static const char* verify_string(const char *s) { @@ -410,7 +411,11 @@ OFString::reserve (size_t res_arg) OFBitmanipTemplate::copyMem(this->theCString, newstr, len); usedSpace = len; } +// suppress spurious gcc 12 warning +#include DCMTK_DIAGNOSTIC_PUSH +#include DCMTK_DIAGNOSTIC_IGNORE_STRINGOP_OVERFLOW OFBitmanipTemplate::zeroMem(newstr + usedSpace, res_arg - usedSpace); +#include DCMTK_DIAGNOSTIC_POP char* oldstr = this->theCString; this->theCString = newstr; delete[] oldstr; @@ -805,7 +810,11 @@ STD_NAMESPACE ostream& operator<< (STD_NAMESPACE ostream& o, const OFString& s) STD_NAMESPACE istream& operator>> (STD_NAMESPACE istream& i, OFString& s) { +// suppress spurious gcc 12 warning +#include DCMTK_DIAGNOSTIC_PUSH +#include DCMTK_DIAGNOSTIC_IGNORE_STRINGOP_OVERFLOW s.resize(0); +#include DCMTK_DIAGNOSTIC_POP char c = '\0'; size_t n = s.max_size(); if (i.width() > 0) { diff --git a/ofstd/libsrc/ofxml.cc b/ofstd/libsrc/ofxml.cc index ce98eafa..c3904d29 100644 --- a/ofstd/libsrc/ofxml.cc +++ b/ofstd/libsrc/ofxml.cc @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2011-2021, OFFIS e.V. + * Copyright (C) 2011-2023, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were slightly modified by @@ -123,7 +123,6 @@ #include #include #include -#include "dcmtk/ofstd/ofstdinc.h" using STD_NAMESPACE free; using STD_NAMESPACE malloc;